ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

AI Agent白手起家27: LangChain 提示词模板原理与实践

AI Agent白手起家27: LangChain 提示词模板原理与实践 纲要提示词在大模型应用中的核心地位提示词模板的工作原理提示词模板的优势从自然语言到结构化输出的完整链路优质提示词的基本要素LangChain 中的两种模板PromptTemplateChatPromptTemplate实战使用ChatPromptTemplate构建一个旅游攻略生成器完整可运行代码总结提示词大模型应用的“控制面板”对于任何基于大语言模型的应用而言提示词Prompt是最主要的人机交互方式。即便不进行应用开发我们日常使用 ChatGPT、DeepSeek 等工具时本质上就是在不断撰写提示词。在 LangChain 的组件体系中提示词模板被提升到了一个可工程化、可复用的层次成为连接用户意图与模型能力的核心桥梁。一个大模型应用的典型 IO 流程如下提示词模板 变量格式化生成完整 Prompt大语言模型 ChatModel自然语言回答输出解析器 Output Parser结构化数据 e.g. JSON提示词模板将动态内容抽象为变量将不变的部分固化类似于填空题。大模型接收完整的提示词进行推理并返回自然语言。输出解析器将自然语言转换为程序可读的结构化数据如 JSON供下游系统使用。这个过程清晰地展示了提示词在整个系统中的关键作用它既是模型的输入源也是影响输出质量最重要的可控因素。提示词模板的工作原理在没有模板的情况下我们每次调用模型都要手动拼接完整的提示词不仅重复劳动还难以维护和版本控制。提示词模板通过占位符将可变部分抽离模板: “{role}请为我规划一个{theme}的旅行攻略预算{budget}元。”变量: role“导游”, theme“海南”, budget“10000”格式化后: “导游请为我规划一个海南的旅行攻略预算10000元。”在 LangChain 中这一过程通过format或invoke方法完成模板会自动处理变量的注入生成最终提交给模型的字符串或消息列表。提示词模板的核心优势复用性同一个模板可以填入不同的变量值生成多样化的提示词。可维护性集中管理提示词逻辑修改模板一处即可同步所有调用。版本控制模板作为代码的一部分可以纳入 Git 进行团队协作和历史追溯。安全性可对变量进行校验防止注入恶意内容。好提示词的要素优质提示词通常包含以下结构对非推理模型尤其重要角色设定赋予模型一个专家身份引导其进入特定领域语境。背景信息提供上下文说明问题的来龙去脉。明确目标清晰描述希望达成的结果。约束条件指明格式、语气、禁忌等要求。例如一个糟糕的提示词“帮我做一份旅行攻略。”而一个高质量的提示词“假设你是一名资深导游我要和两位朋友去海南玩七天预算一万元。我们不喜欢行程太赶也不喜欢网红景点更偏爱有文化底蕴的地方。请推荐景点并附上门票价格。”后者给出了明确的角色、约束和期望模型响应质量会显著提升。LangChain 中的两种模板LangChain 为不同模型类型提供了对应的模板类模板类适用模型输出格式PromptTemplate传统 LLMs纯文本补全字符串ChatPromptTemplateChatModels对话型消息列表支持 system, human, ai 等角色目前绝大多数模型都已转向 Chat 模式因此推荐优先使用ChatPromptTemplate。它支持系统消息、人类消息的独立构建并将模板变量分别注入。实战使用 ChatPromptTemplate 构建旅游攻略生成器下面通过一个完整示例展示如何用 LangChain 的提示词模板构建一个可复用的旅行攻略助手。我们将定义一个包含系统角色和用户模板的ChatPromptTemplate并调用模型生成结构化回答。项目结构├── main.py └── requirements.txt依赖安装pipinstalllangchain-openai langchain-core完整可运行代码importosfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplate# 1. 初始化模型llmChatOpenAI(modelgpt-3.5-turbo,temperature0.7,api_keyos.getenv(OPENAI_API_KEY),)# 2. 定义提示词模板templateChatPromptTemplate.from_messages([(system,你是一位资深的旅行规划师擅长制定个性化的旅行方案。),(human,(我要和{num_people}位朋友去{destination}玩{days}天总预算{budget}元。我们不喜欢行程太紧凑也不喜欢网红景点更偏爱有文化底蕴的景点。请推荐景点并尽量附上门票价格。)),])# 3. 填入具体变量prompttemplate.invoke({num_people:两,destination:海南,days:7,budget:10000,})print(生成的提示词消息)print(prompt.to_string())print(\n*50\n)# 4. 调用模型responsellm.invoke(prompt)print(模型回答)print(response.content)ifresponse.usage_metadata:print(\nToken 用量:,response.usage_metadata)运行说明需要设置环境变量OPENAI_API_KEY为有效的 OpenAI API 密钥。代码使用 GPT-3.5-turbo 进行演示成本低且足以完成规划任务。可根据需要调整模板中的系统消息和人类消息增加更多约束或角色细节。若想接入本地模型如 Ollama将ChatOpenAI替换为ChatOllama并修改base_url即可模板部分完全通用。总结提示词是连接人类意图和模型能力的唯一通道其质量直接决定应用效果。LangChain 的提示词模板通过变量和格式化实现了提示词的工程化管理提升了复用性、可维护性和安全性。ChatPromptTemplate是目前最推荐的模板类型支持多角色消息构建适配绝大多数模型。好的提示词应包含角色、背景、目标和约束四个要素这是 AI Agent 开发的基本功。
返回列表