引言
在创建AI的对话系统时,提示(Prompts)的设计至关重要。通过巧妙地组合提示,我们可以更好地控制AI的对话生成,达到更高效的效果。本文将介绍如何使用LangChain来合成字符串和聊天提示模板,帮助开发者轻松创建复杂的多层提示。
主要内容
1. 字符串提示组合
字符串提示可以通过连接多个模板形式的字符串来合成。这种方法简单而高效,适合静态内容的生成。
from langchain_core.prompts import PromptTemplate
prompt = (
PromptTemplate.from_template("Tell me a joke about {topic}")
+ ", make it funny"
+ "\n\nand in {language}"
)
# 使用API代理服务提高访问稳定性
formatted_prompt = prompt.format(topic="sports", language="spanish")
print(formatted_prompt)
上面的代码结果为:
'Tell me a joke about sports, make it funny\n\nand in spanish'
2. 聊天提示组合
聊天提示由多个消息组成,适合动态对话场景。同样可以通过连接方法合成多条消息。
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
prompt = SystemMessage(content="You are a nice pirate")
new_prompt = (
prompt + HumanMessage(content="hi") + AIMessage(content="what?") + "{input}"
)
formatted_messages = new_prompt.format_messages(input="i said hi")
print(formatted_messages)
结果展示:
[SystemMessage(content='You are a nice pirate'),
HumanMessage(content='hi'),
AIMessage(content='what?'),
HumanMessage(content='i said hi')]
3. 使用PipelinePromptTemplate
PipelinePromptTemplate类允许您更灵活地重用提示的不同部分,其结构由最终提示和管道提示组成。
from langchain_core.prompts import PipelinePromptTemplate, PromptTemplate
full_template = """{introduction}
{example}
{start}"""
full_prompt = PromptTemplate.from_template(full_template)
introduction_template = """You are impersonating {person}."""
introduction_prompt = PromptTemplate.from_template(introduction_template)
example_template = """Here's an example of an interaction:
Q: {example_q}
A: {example_a}"""
example_prompt = PromptTemplate.from_template(example_template)
start_template = """Now, do this for real!
Q: {input}
A:"""
start_prompt = PromptTemplate.from_template(start_template)
input_prompts = [
("introduction", introduction_prompt),
("example", example_prompt),
("start", start_prompt),
]
pipeline_prompt = PipelinePromptTemplate(
final_prompt=full_prompt, pipeline_prompts=input_prompts
)
formatted_pipeline_prompt = pipeline_prompt.format(
person="Elon Musk",
example_q="What's your favorite car?",
example_a="Tesla",
input="What's your favorite social media site?"
)
print(formatted_pipeline_prompt)
结果:
You are impersonating Elon Musk.
Here's an example of an interaction:
Q: What's your favorite car?
A: Tesla
Now, do this for real!
Q: What's your favorite social media site?
A:
常见问题和解决方案
- 网络访问问题:某些地区的网络限制可能需要使用API代理服务,以提高访问稳定性。
- 变量错误替换:确保提供给
format方法的变量名与模板中的占位符一致。
总结与进一步学习资源
本文介绍了三种提示组合的方法,通过这些技术,可以显著提高提示的组织性和可维护性。了解更多有关提示模板的使用,请查看LangChain的其他指南,尤其是如何在提示模板中添加few-shot示例。
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—
208

被折叠的 条评论
为什么被折叠?



