首页/新闻资讯/正文详情

LangChain第八节-Agent 提示词与动态提示词

发布时间:2026/9/26 1:33:06 来源:云帆数科 栏目:资讯中心
LangChain第八节-Agent 提示词与动态提示词
上一篇我们创建了 Agent但它的行为是“默认”的。你想让它更专业、更个性、更听话关键就在于提示词Prompt。写在前面为什么提示词如此重要你可能已经发现同一个模型不同的提示词输出质量天差地别同一个 Agent面对普通用户和 VIP 用户本应给出不同风格的回答你想让 Agent 专注某个领域但它总是“跑题”。在 LangChain 中提示词为 Agent 提供了任务背景、行为准则和操作指南。通过system_prompt参数设置它本质上定义了 Agent 的“角色”和“使命”。提示词设置有两种方式基础设置创建 Agent 时传入一个固定的system_prompt动态设置根据运行时上下文或 Agent 状态实时生成不同的提示词本文你会学到如何用字符串和SystemMessage设置基础提示词如何用dynamic_prompt中间件实现动态提示词如何通过context_schema定义运行时上下文一个完整的电商客服案例普通用户 vs VIP 用户建议先收藏再跟练。本文假设你已完成环境搭建并拥有 DeepSeek API Key。一、基础提示词设置基础提示词设置是在create_agent时传入一个参数system_prompt。这个参数可以是字符串strSystemMessage类型案例使用字符串和 SystemMessage 设置系统提示词fromlangchain.agentsimportcreate_agentfromlangchain_core.messagesimportSystemMessagefromlangchain_core.toolsimporttoolfrominit_llmimportdeepseek_llm# 工具实现两数相加tooldefadd_numbers(a:int,b:int)-str:计算并返回两个数的和。returnf和为{ab}if__name____main__:创建数学助手 Agentagentcreate_agent(modeldeepseek_llm,tools[add_numbers],# 方式一字符串# system_prompt你是一个数学助手可以实现两数相加。# 方式二SystemMessagesystem_promptSystemMessage(content你是一个数学助手可以实现两数相加。))respagent.invoke({messages:[{role:user,content:10加上20再加上30是多少}]})print(resp:,resp)resultresp[messages][-1].contentprint(result)运行结果10加上20再加上30的和是60。基础提示词适合角色固定、行为稳定的场景。二、动态提示词设置对于需要根据运行时上下文或Agent 状态调整提示词的高级场景可以使用中间件Middleware实现动态提示词。通过dynamic_prompt装饰器创建中间件可以根据用户角色生成不同的系统提示。案例电商客服 Agent普通用户 vs VIP 用户1. 定义两个工具fromlangchain.agentsimportcreate_agentfromlangchain.agents.middlewareimportdynamic_prompt,ModelRequestfromlangchain_core.toolsimporttoolfromtypingimportTypedDictimportjsonfrommy_llmimportdeepseek_llm# 工具1模拟查询订单信息tooldefquery_order_info(order_id:str)-str:根据订单ID查询订单的详细信息包括状态、商品列表和创建时间。order_database{ORD123456:{status:已发货,items:[手机X1],create_time:2025-01-15},ORD654321:{status:待付款,items:[耳机Y1],create_time:2025-01-18}}order_dataorder_database.get(order_id)iforder_data:returnjson.dumps(order_data,ensure_asciiFalse)else:returnf错误未找到订单{order_id}。# 工具2模拟检索常见问题解答tooldefsearch_faq(keyword:str)-str:根据关键词从知识库中检索相关的政策条款或解决方案。faq_knowledge_base{退货:支持7天无理由退货商品需完好且包装齐全。,保修:电子产品享受1年免费保修服务。,发货:下单后48小时内发货偏远地区可能延迟。}fortopic,answerinfaq_knowledge_base.items():iftopicinkeyword:returnanswerreturnf未找到与{keyword}直接相关的政策请尝试其他关键词或联系人工客服。2. 定义运行时上下文的数据结构classAgentContext(TypedDict):query_type:str# normal普通用户 或 vipVIP用户3. 定义动态提示词中间件dynamic_promptdefdynamic_support_prompt(request:ModelRequest)-str: 根据 query_type 生成不同的系统提示词。 query_typerequest.runtime.context.get(query_type,normal)base_instruction你是一名专业的电商客服助手。请根据工具查询结果准确、清晰地回答用户问题。ifquery_typevip:returnf{base_instruction}当前角色高级支持专员 工作要求 1.深度分析仔细分析用户描述识别潜在的根本问题。 2.精准分类将问题明确归类如“物流问题”、“产品质量”、“售后申请”。 3.方案规划若工具能解决提供具体步骤若需人工明确告知后续流程。 请使用更专业、严谨的语言。 else:returnf{base_instruction}当前角色一线客服助手 工作要求 1.快速响应优先使用工具获取订单/政策信息。 2.直接解答对于明确问题如退货、物流直接给出基于知识的答案。 3.简洁友好回复要简单明了避免复杂术语。 保持友好和高效的沟通风格。 4. 创建 Agent 并演示if__name____main__:agentcreate_agent(modeldeepseek_llm,tools[query_order_info,search_faq],middleware[dynamic_support_prompt],# 挂载动态提示词中间件context_schemaAgentContext# 关联上下文 schema)user_query我的订单ORD654321已签收但是物品坏了怎么办print(f用户问题{user_query}\n)print(场景一普通客服模式 (query_type: normal))result_normalagent.invoke({messages:[{role:user,content:user_query}]},context{query_type:normal})final_response_normalresult_normal[messages][-1].contentprint(final_response_normal)print(\n*50)print(场景二VIP模式 (query_type: vip))result_vipagent.invoke({messages:[{role:user,content:user_query}]},context{query_type:vip})final_response_vipresult_vip[messages][-1].contentprint(final_response_vip)运行结果对比精简普通客服模式根据查询到的信息我为您提供以下建议 1. 订单状态显示待付款但您已签收商品且发现损坏…… 2. 建议立即拍照取证联系人工客服…… 语言简洁友好VIP 模式基于目前的信息我为您提供以下专业分析和建议 ## 问题分类产品质量问题 ### 当前情况分析 1. 订单状态异常…… ### 建议处理方案 第一步核实订单信息…… 语言专业严谨有分析框架可以看到同一个 Agent根据query_type的不同自动切换了角色和回答风格。三、关键点解析1. 两个工具的作用query_order_info根据订单 ID 查询订单基本信息状态、商品、创建时间。search_faq从知识库中检索与用户问题相关的政策或解决方案退货流程、保修期限。2. 动态提示词如何工作动态提示词能根据运行时上下文如用户身份、问题类型实时生成最合适的系统提示词实现精准化、个性化回复。通过create_agent时传入自定义中间件函数dynamic_prompt装饰来挂载。3. context_schema 与 context 参数create_agent中的context_schema参数作用是定义运行时上下文有哪些数据。它是一个TypedDict类型用于指定执行单次任务时可能需要的动态数据如用户 ID、用户等级。步骤使用TypedDict定义上下文数据结构classAgentContext(TypedDict):query_type:str# user_id: int # 可扩展在create_agent时通过context_schemaAgentContext告知 Agent 上下文结构。调用agent.invoke时通过context参数传入符合该结构的实际数据agent.invoke({messages:[...]},context{query_type:vip})四、避坑指南system_prompt可以是字符串或SystemMessage两者效果基本一致按个人习惯选择。动态提示词中间件必须用dynamic_prompt装饰不要和wrap_model_call混淆后者用于动态选择模型。context_schema是 TypedDict定义清楚字段类型调用时传入的context必须符合该结构。request.runtime.context获取上下文在动态提示词函数中通过request.runtime.context.get(...)读取传入的数据。工具函数的 docstring 不能省Agent 依赖工具描述决定是否调用描述清晰能显著提升准确率。动态提示词在每个推理步骤前都会触发和wrap_model_call类似注意不要写太重的逻辑。五、总结这篇我们讲完了 LangChain Agent 的提示词设置基础提示词create_agent时传入system_prompt支持字符串和SystemMessage动态提示词通过dynamic_prompt中间件根据运行时上下文实时生成提示词上下文定义用TypedDict定义context_schema调用时通过context传入数据实战案例电商客服 Agent普通用户和 VIP 用户获得不同风格的回答。一句话记住基础提示词定义“你是谁”动态提示词决定“你面对谁时该怎么说话”。

相关推荐

x/o密文解码:多假设验证与摩尔斯电码实战
x/o密文解码:多假设验证与摩尔斯电码实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 1:33:00

VS Code 搭建 Rust 开发环境:rust-analyzer 与 LLDB 调试深度配置指南
VS Code 搭建 Rust 开发环境:rust-analyzer 与 LLDB 调试深度配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 1:32:54

ESPnet2 ru_open_stt 配方实战:俄语开放式语音识别数据的 Conformer 训练与评测结果解析
ESPnet2 ru_open_stt 配方实战:俄语开放式语音识别数据的 Conformer 训练与评测结果解析

人工智能语音音频深度学习NLP 【免费下载链接】espnet End-to-End Speech Processing Toolkit 项目地址: https://gitcode.com/gh_mirrors/es/espnet 点击查看 免费下载 本技术指南以 ESPnet2 中 egs2/ru_open_stt/asr1 配方目录的 README 结果报告为核心&#xff… · 2026/9/26 1:32:48

大模型速通学习笔记(37):LangChain 接入智普大模型配置与验证
大模型速通学习笔记(37):LangChain 接入智普大模型配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 15:00:06

全国农产品成本收益资料汇编:从PDF到面板数据的清洗与计算全攻略
全国农产品成本收益资料汇编:从PDF到面板数据的清洗与计算全攻略

简介:全国农产品成本收益资料汇编(1953—2021年)是一套跨越近70年的农业经济数据库,面向高校研究人员、数据统计从业者及农业政策分析人员,可用于长期趋势比较、投入产出建模和AI预测训练。压缩包内含2000个文件&#… · 2026/9/26 15:00:06

腾讯开源WeKnora:企业级RAG知识框架与Wiki自进化实战解析
腾讯开源WeKnora:企业级RAG知识框架与Wiki自进化实战解析

1. WeKnora是什么:腾讯开源知识框架的定位与价值1.1 一个“开箱即用”的企业级知识中台如果你在企业里做过知识库项目,大概率遇到过这么个尴尬局面:用 LangChain 搭了个 RAG 系统,Demo 跑得飞快,一上生产就原形毕露——… · 2026/9/26 15:00:06

扫出tel:、sms:、wifi:后如何解析?QRCode4cj客户端结果解析完全指南
扫出tel:、sms:、wifi:后如何解析?QRCode4cj客户端结果解析完全指南

扫出tel:、sms:、wifi:后如何解析?QRCode4cj客户端结果解析完全指南 【免费下载链接】qrcode4cj 一维码/二维码扫描库。 项目地址: https://gitcode.com/Cangjie-TPC/qrcode4cj QRCode4cj 是一个解析/生成一维码、二维码的开源扫描库。扫码得到 tel:、sms:、… · 2026/9/26 15:00:06

用EvalScope在4090上跑DeepSeek性能测试:从config.toml到结果验证的完整配置
用EvalScope在4090上跑DeepSeek性能测试:从config.toml到结果验证的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 15:00:00

深入 bb Provider Bridge 协议:thread/delta 语义语法与 Delta Assembler 的设计思想
深入 bb Provider Bridge 协议:thread/delta 语义语法与 Delta Assembler 的设计思想

深入 bb Provider Bridge 协议:thread/delta 语义语法与 Delta Assembler 的设计思想 【免费下载链接】bb The agent IDE that builds itself 项目地址: https://gitcode.com/gh_mirrors/bb14/bb bb 是"自我构建"的智能体 IDE,而它的多 AI 提供商接入能力,核心… · 2026/9/26 15:00:00

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码