您的位置:首页 > 游戏 > 手游 > LangChain实战技巧之五:让模型“自动生成”Prompt(提示词)的两种方式

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

2024/11/17 5:24:59 来源:https://blog.csdn.net/soukingang/article/details/139513208  浏览:    关键词:LangChain实战技巧之五:让模型“自动生成”Prompt(提示词)的两种方式

预备知识

  • with_structured_output

  • bind_tools

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

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

实现方法

方法一

步骤一

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

步骤二

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

步骤三

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

步骤四

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

见效:)

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

方法二

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

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

步骤四修改为

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

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

prompt = ChatPromptTemplate.from_template(template=prompt_generator.content)chain = prompt | model

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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com