1. LangChain模型交互的核心:Prompt与Output解析
当你第一次接触LangChain时,可能会被它的六大组件搞得眼花缭乱。但我要告诉你,Models IO(模型输入输出)组件绝对是其中最值得优先掌握的部分。为什么?因为无论你构建什么AI应用,最终都要解决两个基本问题:如何告诉模型你的需求(Prompt),以及如何处理模型的回答(Output)。
我在实际项目中见过太多开发者,他们费尽心思调用了强大的语言模型,却因为Prompt设计不当,得到的回答总是不尽如人意。比如有个团队想让AI生成产品描述,结果收到的是一堆杂乱无章的句子。问题出在哪?就是因为他们直接把原始需求扔给了模型,没有经过专业的Prompt设计。
1.1 Prompt模板:与模型沟通的艺术
想象一下,你请人帮忙写篇文章。如果你只说"写篇关于健康的文章",对方可能无从下手。但如果你说"请用通俗易懂的语言,面向30-40岁女性,写一篇800字左右的健康饮食指南,要包含早餐建议",结果就会好很多。与AI交流也是同样的道理。
LangChain提供了强大的PromptTemplate类,让我们能系统化地设计提示词。来看个实际案例:
python复制from langchain.prompts import PromptTemplate
# 基础模板示例
product_template = PromptTemplate(
input_variables=["product", "style"],
template="用{style}风格写一段关于{product}的商品描述,突出其核心卖点,不超过100字"
)
# 使用模板
prompt = product_template.format(product="智能手表", style="科技感十足")
print(prompt)
这个简单的模板就能生成:"用科技感十足风格写一段关于智能手表商品描述,突出其核心卖点,不超过100字"。当我们将这个提示词发送给AI时,得到的回复会远比直接问"写个智能手表描述"要精准得多。
1.2 动态Prompt:让交互更智能
但静态模板还不够。在实际业务中,我们经常需要根据用户输入动态调整Prompt。LangChain的FewShotPromptTemplate就能实现这个功能:
python复制from langchain.prompts import FewShotPromptTemplate, PromptTemplate
# 示例集合
examples = [
{"query": "价格多少", "response": "您想知道哪款产品的价格呢?"},
{"query": "有优惠吗", "response": "我们目前有以下促销活动..."}
]
# 单个示例的格式
example_prompt = PromptTemplate(
input_variables=["query", "response"],
template="用户问:{query}\n客服答:{response}"
)
# 构建FewShot模板
prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix="你是一个电商客服助手,请根据以下对话示例回应用户",
suffix="用户问:{input}\n客服答:",
input_variables=["input"]
)
# 使用动态Prompt
print(prompt.format(input="什么时候发货"))
这种动态Prompt特别适合客
