LangChain--07智能体----Agent的高级用法

发布时间:2026/10/18 15:17:45
LangChain--07智能体----Agent的高级用法 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录Agent的高级用法1设置Agent名称Agent的高级用法2系统提示词Agent的高级用法3结构化输出7.1 模型 vs Agent的结构化输出对比7.2 结构化输出的4种策略① ProviderStrategy② ToolStrategy③ type / AutoStrategy④ None7.3 ToolStrategy使用详解7.3.1 结构化输出schema参数7.3.2 自定义工具消息tool_message_content参数7.3.3 错误处理handle_errors参数Agent的高级用法4流式输出及模式Agent的高级用法1设置Agent名称Agent的高级用法2系统提示词举例1fromlangchain_tavilyimportTavilySearchfromlangchain.agentsimportcreate_agentfromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos load_dotenv(overrideTrue)# 1.导入模型modelinit_chat_model(modelgpt-5.4-mini,model_provideropenai,api_keyos.getenv(CLOSEAI_API_KEY),base_urlos.getenv(CLOSEAI_BASE_URL))# 2.导入工具web_searchTavilySearch(max_results2)# 3.创建Agentagentcreate_agent(modelmodel,tools[web_search],system_prompt你是一名多才多艺的智能助手可以调用工具帮助用户解决问题。)# 4.运行Agent获得结果resultagent.invoke({messages:[{role:user,content:请帮我查询2026年足球世界杯是哪个国家举办的}]})rprint(result)举例2fromlangchain.agentsimportcreate_agentfromlangchain_core.messagesimportSystemMessagefromlangchain_core.toolsimporttoolfromrichimportprintasrprint# 工具实现两数相加tooldefadd_numbers(a:int,b:int)-str:计算并返回两个数的和。returnf和为{ab}# 创建客服助手Agentagentcreate_agent(modelmodel,tools[add_numbers],# 工具列表# system_prompt你是一个数学助手解决日常的算术问题system_promptSystemMessage(content你是一个数学助手解决日常的算术问题))responseagent.invoke({messages:[{role:user,content:10加上20再加上30是多少}]},)rprint(response)# print(response[messages][-1].content)举例3fromlangchain.agentsimportcreate_agentfromlangchain.toolsimporttoolfromlangchain.messagesimportSystemMessage,HumanMessage flag0tooldefget_weather(city:str): 天气查询工具 Args: city: 城市名称 globalflag flag1ifflag3:# raise Exception(暂时无法访问)returnTEMP_UNAVAILABLE: 天气服务暂时不可用请稍后重试returnf{city}今天天气挺好messages[HumanMessage(你好杭州今天的天气如何)]agentcreate_agent(modelmodel,tools[get_weather],system_promptSystemMessage(你是一个天气助手。当工具返回以 TEMP_UNAVAILABLE: 开头的结果时说明是临时故障不要立即放弃你应再次调用同一个工具最多重试 3 次。如果 3 次后仍失败再向用户说明服务暂时不可用。))responseagent.invoke({messages:messages})# print(response)formsginresponse[messages]:msg.pretty_print()Agent的高级用法3结构化输出7.1 模型 vs Agent的结构化输出对比7.2 结构化输出的4种策略① ProviderStrategy② ToolStrategy③ type / AutoStrategy④ None7.3 ToolStrategy使用详解7.3.1 结构化输出schema参数7.3.2 自定义工具消息tool_message_content参数7.3.3 错误处理handle_errors参数Agent的高级用法4流式输出及模式fromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos# 从.env文件中加载环境变量load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_BASE_URLos.getenv(CLOSEAI_BASE_URL)modelinit_chat_model(modelgpt-5.4-mini,model_provideropenai,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_BASE_URL)rom langchain.agentsimportcreate_agentfromlangchain.toolsimporttoolfromtypingimportDict,Anyfromrichimportprintasrprinttooldefquery_customer_data(customer_id:str)-Dict[str,Any]: 查询客户基本信息 Args: customer_id: 客户ID用于唯一标识客户 Returns: 包含客户基本信息的字典如姓名、等级、加入日期等 # 模拟数据库查询return{name:张三,level:VIP,join_date:2023-01-15}tooldefcheck_order_history(customer_id:str)-Dict[str,Any]: 查询客户订单历史 Args: customer_id: 客户ID用于唯一标识客户 Returns: 包含客户订单历史的字典如总订单数、总花费等 return{total_orders:15,total_spent:25800.00}tooldefget_current_promotions()-Dict[str,Any]: 获取当前可用促销活动 Returns: 包含当前可用促销活动的字典如活动名称、有效日期等 return{promotions:[老用户优惠,会员专属折扣],valid_until:2027-01-31}# 创建客户服务Agentcustomer_service_agentcreate_agent(modelmodel,tools[query_customer_data,check_order_history,get_current_promotions])forchunkincustomer_service_agent.stream({messages:[{role:user,content:查询客户id为cust1234的完整的信息、历史订单和可用优惠}]},stream_modevalues):rprint(chunk)print(-*50)

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询