• LangChain实战技巧之五:让模型“自动生成”Prompt(提示词)的两种方式


    预备知识

    • with_structured_output

    • bind_tools

    对这两种方式不了解的朋友,可以翻阅我的这篇文章找到用法哈

    LangChain实战技巧之三:关于Tool的一点拓展

    实现方法

    方法一

    步骤一

    1. # 首先,新建一个提示词抽取器
    2. prompt_extractor = ChatPromptTemplate.from_template(
    3. template="""
    4. 你从用户的输入中提取出一些`关键信息`,然后根据关键信息生成一个提示词模板, 提示词模板应该是一个有效的Prompt Template。
    5. `关键信息`包含以下内容:
    6. - 找到有效的提示词的目标
    7. - 找到有效的要求内容
    8. - 找到传递给提示词模板的变量
    9. 用户的输入内容是: {input}
    10. """
    11. )
    12. # 再来一个Prompt
    13. prompt_generator = ChatPromptTemplate.from_messages(
    14. [
    15. ("system", "请根据以下输入的内容,生成一个有效的Prompt Template。"),
    16. ("human", "{input}"),
    17. ]
    18. )

    步骤二

    1. # 用好Pydantic,记得继承BaseModel
    2. class PromptExtractor(BaseModel):
    3. object: str = Field(description="提示词目标")
    4. requirement: str = Field(description="提示词要求")
    5. input_variable: str = Field(description="提示词变量")

    步骤三

    1. # 来个你熟悉的chain,记得加上with_structured_output
    2. chain_extractor = prompt_extractor | model.with_structured_output(PromptExtractor)

    步骤四

    1. prompt_generator = chain_generator.invoke({"input":
    2. f"""提示词目标:{res_extractor.object}
    3. 提示词要求:{res_extractor.requirement}
    4. placeholder:{res_extractor.input_variable}"""})

    见效:)

    content='"寻找一份深度解析并以易于理解方式讲解最新AI技术和人工智能基础知识的学习资料,要求内容深入浅出且详尽,适合初学者和进阶学习者。{input}"' 
    

    方法二

    需要把上面的步骤三修改为

    chain_extractor = prompt_extractor | model.bind_tools(tools=[PromptExtractor])
    

    步骤四修改为

    1. prompt_generator = chain_generator.invoke({"input":
    2. f"""提示词目标:{rres_extractor.tool_calls[0]["args"]["object"]}
    3. 提示词要求:{res_extractor.tool_calls[0]["args"]["requirement"]}
    4. placeholder:{res_extractor.tool_calls[0]["args"]["input_variable"]}"""})

    最后,我们就可以用这个生成好的提示词啦

    1. prompt = ChatPromptTemplate.from_template(
    2. template=prompt_generator.content
    3. )
    4. chain = prompt | model

    简言之,当你写的提示词Prompt不够完美,AI会帮你自动“润色”你的提示词

    不过,你可以仔细想想,用这种方式可以去做哪些特别有趣的事情呢?: )

  • 相关阅读:
    Java项目:ssm在线选课管理系统
    7-10 有关堆栈操作 Python
    第三篇 《随机点名答题系统》——人员管理详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)
    JavaScript系列之获取变量数据类型
    4D毫米波雷达加速向上,搭载福瑞泰克解决方案量产车型预计年底上市
    计算机网络学习2
    mybatisplus逻辑删除
    Android Stuido Gradle build编译报错原因排查
    doris---Rollup
    评职称好比竞技体育 越快越好越早越好
  • 原文地址:https://blog.csdn.net/soukingang/article/details/139513208