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 开发的基本功。

相关新闻

最新新闻

MoleculeNet:分子性质预测的标准化基准与深度学习实战指南

MoleculeNet:分子性质预测的标准化基准与深度学习实战指南

1. 从“炼丹”到“炼数据”:为什么我们需要MoleculeNet?如果你在化学信息学、药物发现或者材料科学领域摸爬滚打过一阵子,肯定对“数据”这两个字又爱又恨。爱的是,没有数据,再牛的模型也是“巧妇难为无米之炊”&#…

2026/8/5 3:47:38
深入解析dB、dBm、dBw:通信工程师必备的对数单位指南

深入解析dB、dBm、dBw:通信工程师必备的对数单位指南

1. 从“贝尔”说起:理解分贝的起源与本质搞通信、音频、射频或者做信号测试的朋友,几乎每天都要和 dB、dBm、dBw 这几个单位打交道。但说实话,很多人用了一辈子,可能也只是记住了几个换算公式,或者知道“功率翻倍是 3 …

2026/8/5 3:47:38
算法竞赛实战:从线段树、线性基到状压DP的解题心法

算法竞赛实战:从线段树、线性基到状压DP的解题心法

1. 从一场区域赛看算法竞赛的实战演变2017年,西安。对于很多算法竞赛的老兵来说,这个年份和地点组合在一起,意味着一次在ICPC亚洲区域赛舞台上颇具分量的交锋。ACM-ICPC,国际大学生程序设计竞赛,它的魅力从来不在于那些…

2026/8/5 3:47:38
React Native构建物流司机App:TMS最后一公里的电子签收与任务管理实践

React Native构建物流司机App:TMS最后一公里的电子签收与任务管理实践

1. 项目概述:为什么司机App是TMS的“最后一公里”?在物流运输这个庞大的体系里,运输管理系统(TMS)是大脑,负责规划路线、调度车辆、管理订单。但所有的指令,最终都要落到司机这个“手脚”上才能…

2026/8/5 3:47:38
Web安全实战:文件上传漏洞与图片木马攻防解析

Web安全实战:文件上传漏洞与图片木马攻防解析

1. 从一次“图片上传”功能引发的安全警报说起那天下午,我正在为一个客户的后台管理系统做常规的安全审计。系统有一个再普通不过的功能:允许用户上传头像。前端做了限制,只允许上传JPG、PNG格式的图片。看起来一切正常,直到我在日…

2026/8/5 3:47:38
Windows 10自带截屏录屏工具全解析:从基础操作到高阶技巧

Windows 10自带截屏录屏工具全解析:从基础操作到高阶技巧

1. 项目概述:被低估的“瑞士军刀”如果你在Windows 10上工作,每天和屏幕打交道,那么“截图”和“录屏”这两个动作大概率是你的高频操作。很多人第一反应是去下载第三方软件,比如Snipaste、FastStone Capture,或者功能…

2026/8/5 3:42:38