logo

初识Prompt工程与LangChain

初识Prompt工程与LangChain

Prompt,也就是我们所说的“指令”,是我们与大模型交互的基础。
大模型通过理解我们的prompt来生成对应的回答,一个好的prompt能够更好的教会大模型往哪些方面思考、如何思考。简而言之,Prompt是沟通人类意图与机器智能的桥梁,它决定了模型输出的质量和相关性。因此,学会prompt工程是至关重要。

1. Prompt模板的分类

在LangChain框架中,存在两种核心的提示模板类型:StringPromptTemplate用于构建字符串形式的提示,而BaseChatPromptTemplate则用于构建聊天场景中的提示。
基于这两种基础模板,LangChain进一步发展出了多种定制化的提示模板,以适应各种特定的应用场景。
为了更好的说明每种模板,并进行对比,在结合小册的例子基础上,我给每类模板总结了详细的示例——

第一类 PromptTemplate 示例

用途:构建简单的提示,用于直接询问或命令。
示例
  
  
  
  
  
  
"今天的天气如何?"
在这个例子中,PromptTemplate 用于生成一个简单的查询,模型需要根据这个直接的问题提供答案。

第二类 ChatPromptTemplate 示例

用途:模拟聊天场景中的对话,可以包含不同角色的互动。
示例
  
  
  
  
  
  
[
{"role": "user", "content": "你好,我需要帮助选择一款笔记本电脑。"},
{"role": "assistant", "content": "当然可以,你打算用笔记本电脑做什么呢?"}
]
在这个例子中,ChatPromptTemplate 用于创建一个用户和助手之间的对话,模拟了一个真实的问答场景。

第三类 FewShotPromptTemplate 示例

用途:通过提供少量示例来引导模型理解并完成类似的任务。
示例
  
  
  
  
  
  
{
"examples": [
{"input": "上海", "output": "上海是中国的一个城市"},
{"input": "自由女神像", "output": "自由女神像是美国的一个雕像"}
],
"prompt": "埃菲尔铁塔"
}
在这个例子中,FewShotPromptTemplate 提供了几个示例输入和输出对,模型通过这些示例学习如何回答关于“埃菲尔铁塔”的问题。

2. Prompt模板的构建:以豆包为例

大多数情况下,在经过专业人员的调试后,我们的模板是保持不变的。改变的仅仅是少部分模板的参数。
以豆包大模型提供的上述“写文章”例子为例,我们只需要改变文章的主题发布平台,这两个主要关键参数。豆包就能帮我们生成最匹配的文章内容。
整个prompt可以理解为——
  
  
  
  
  
  
帮我写一篇关于{theme}的{platform}文章
实际在编码过程中,编码为——
  
  
  
  
  
  
prompt = PromptTemplate(
input_variables=["theme", "platform"],
template="帮我写一篇关于{theme}的{platform}文章",
)
print(prompt.format(theme="大模型", platform="掘金"))
那么,最终生成的模板即为(见控制台)
这样的模板工程,极大的简化了用户的输入工作量,同时,也不会让模型回答跑偏。

总结

通过学习Prompt工程和LangChain,我更加理解了在提示词上,如何有效地与大模型进行交互。
在实际应用中,我们需要不断探索和实践,以找到最适合特定任务的Prompt构建方法和示例选择策略。这不仅是技术的提升,也是对人工智能应用深度理解的过程。
————————————————
版权声明:本文为稀土掘金博主「谨慎谦虚」的原创文章
原文链接:https://juejin.cn/post/7431141245211082752
如有侵权,请联系千帆社区进行删除
评论
用户头像