在这里插入图片描述

核心概念

在 LangChain 中,Prompt Templates 和 Values 是用于高效、标准化地与语言模型(LLM)进行交互的核心组件。它们解决了直接拼接字符串带来的重复、混乱和难以维护的问题。


1. Prompt Templates(提示模板)

是什么?

提示模板是预定义好的、可复用的“提示词蓝图”。它不是一个简单的字符串,而是一个包含变量(占位符) 的结构化文本。你可以把它想象成一个填空题模板或者一个带有 {变量} 的字符串格式。

为什么需要它?
  • 可复用性:写一次模板,可以在多个地方无限次使用。
  • 一致性:确保发送给 LLM 的提示结构保持一致,这对于生产环境的可靠性和测试至关重要。
  • 可维护性:如果需要修改提示词的逻辑或风格,只需修改模板一处即可,而不需要在整个代码库中查找和替换。
  • 组织性:将提示词逻辑与应用程序代码分离,使代码更清晰。
如何工作?

一个模板通常由两部分组成:

  1. 模板文本:包含指令、上下文、问题和格式要求的固定文本部分。
  2. 输入变量:在文本中声明的、需要用实际值填充的占位符。

示例:
假设你有一个总结文章的功能,你可以创建一个模板:

from langchain.prompts import PromptTemplate

# 1. 创建一个模板
template = """
请总结以下文章的内容:

文章标题: {title}
文章正文: {content}

请用一句话进行总结:
"""

# 2. 实例化 PromptTemplate 对象,并指明它需要哪些变量
prompt = PromptTemplate(
    input_variables=["title", "content"],
    template=template,
)

在这个例子中,{title}{content} 就是输入变量。


2. Prompt Values(提示值)

是什么?

提示值提示模板在填充了实际变量后生成的最终结果。它是一个可以被发送给语言模型的具体字符串。

为什么需要它?

它是模板(蓝图)和模型(执行者)之间的桥梁。模板定义了“怎么做”,而提示值是“具体要做什么”。

如何工作?

你使用 .format() 方法,为模板中声明的所有输入变量提供具体的值,从而生成一个提示值。

示例(接上文):

# 3. 使用实际数据填充模板,生成一个 Prompt Value
final_prompt = prompt.format(
    title="人工智能的未来",
    content="人工智能正在深刻改变世界...(这里是文章的实际内容)"
)

# 打印最终的提示值,看看它长什么样
print(final_prompt)

输出结果:

请总结以下文章的内容:

文章标题: 人工智能的未来
文章正文: 人工智能正在深刻改变世界...(这里是文章的实际内容)

请用一句话进行总结:

这个 final_prompt 变量所持有的字符串,就是一个 Prompt Value。现在你可以将它直接发送给 LLM。


在 Chain 中的工作流程

Prompt Templates 和 Values 最常与 Chains 结合使用,形成一个自动化的工作流:

  1. 定义模板:预先创建好 PromptTemplate
  2. 创建链:将模板和 LLM 链接起来。LangChain 提供了 LLMChain 这个便捷的类来完成此事。
  3. 运行链:只需提供输入变量,链会自动完成“格式化模板 -> 调用模型 -> 获取输出”的全过程。

示例:

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain_openai import OpenAI # 或者来自其他供应商的LLM

# 1. 定义模板和PromptTemplate对象
template = "请给一家生产{product}的公司起一个好听的名字。"
prompt = PromptTemplate.from_template(template) # LangChain可以自动推断输入变量

# 2. 初始化模型
llm = OpenAI(model_name="gpt-3.5-turbo-instruct") # 示例使用OpenAI

# 3. 创建链,将模板和模型绑定在一起
chain = LLMChain(llm=llm, prompt=prompt)

# 4. 运行链!只需提供输入变量,链会处理剩下所有步骤。
# .run() 方法返回的是模型的输出(字符串),而不是Prompt Value。
result = chain.run(product("环保可降解的咖啡杯"))
print(result)
# 输出可能为: "绿源咖啡器具" 或 "大地之杯" 等

总结

概念 角色 比喻 关键方法
Prompt Template 蓝图/配方 一个蛋糕食谱,上面写着“加入 {水果} 和 {糖量}” PromptTemplate(...)
Prompt Value 具体指令 按照食谱做成的具体指令:“加入 草莓100克糖 .format(...)
Chain 自动化流水线 一个机器人,你告诉它“水果=草莓,糖量=100g”,它就能自动执行食谱的每一步,最后把蛋糕(输出)给你。 .run(...)

通过使用 Prompt Templates,你实现了提示词的标准化和管理;通过生成 Prompt Values,你将抽象模板转化为具体指令;最后通过 Chains,你将整个与模型交互的过程自动化。

(注:文档部分内容可能由 AI 生成)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐