大模型Agent实战:从零构建具备天气查询与邮件发送技能的智能体

📅 2026/8/24 13:03:02
大模型Agent实战:从零构建具备天气查询与邮件发送技能的智能体
在实际的大模型应用开发中很多开发者会遇到一个瓶颈模型本身能力很强但如何让它真正“动起来”完成一个连贯、多步骤的复杂任务比如让大模型不仅能回答天气还能根据天气为你规划出行、预订会议室、并发送邮件通知。这背后依赖的核心技术就是Agent智能体而赋予 Agent 执行具体任务能力的则是Skills技能。对于刚接触大模型落地的开发者和技术爱好者而言理解并实践 Agent Skills 是打通“模型对话”到“实际应用”的关键一步。本文将从工程实践角度带你一步步掌握如何为大模型 Agent 构建和集成 Skills。我们将不局限于理论而是通过一个从零开始的实战案例涵盖环境准备、技能定义、Agent 调度、本地部署与测试的完整闭环。你会学到如何将一个简单的“查询天气”和“发送邮件”的想法转化为一个能自主决策、按需调用工具的可运行智能体。无论你是希望将 AI 能力集成到现有业务系统的程序员还是对 AI 应用开发充满好奇的学习者这篇指南都将提供一条清晰的、可复现的路径。1. 理解 Agent 与 Skills从“聊天”到“做事”的跨越在深入代码之前必须厘清几个核心概念。这能帮助你在后续开发中做出正确的设计决策避免将 Agent 简单理解为“带工具的聊天机器人”。1.1 什么是 Agent智能体在大模型语境下Agent 是一个能够感知环境、进行决策并执行行动以实现目标的系统。你可以把它想象成一个拥有“大脑”大模型和“手脚”工具的虚拟助手。核心组件一个典型的 Agent 包含三个部分规划Planning大脑大模型负责理解用户目标并将其分解为一系列可执行的子任务或步骤。记忆Memory存储对话历史、工具调用结果和知识为后续决策提供上下文。工具使用Tool Use根据规划调用外部的 Skills/Tools 来执行具体操作如查询数据库、调用 API、操作文件等。与普通聊天的区别普通的大模型对话是“一问一答”答案基于其训练数据。而 Agent 是“目标导向”的它会主动思考“为了完成用户请求我需要先做什么再做什么”并调用外部能力来补足模型自身无法直接完成的事情如获取实时数据、操作外部系统。1.2 什么是 Skills/Tools技能/工具Skills 或 Tools 是 Agent 可以调用的具体功能单元。它们是 Agent 的“手脚”将模型的“思考”转化为对现实世界的“影响”。本质一个 Skill 通常对应一个函数Function、一个 API 接口或一个命令行工具。它有着明确的输入参数、执行逻辑和输出结果。与大模型的关系大模型本身不执行Skill。它的角色是1理解用户需求后判断是否需要调用 Skill2如果需要则生成符合该 Skill 定义的调用参数JSON 格式3解析 Skill 执行后的结果并组织成自然语言回复给用户。常见类型信息获取类如get_weather获取天气、search_web网络搜索、query_database查询数据库。操作执行类如send_email发送邮件、create_calendar_event创建日历事件、execute_shell_command执行Shell命令需谨慎。计算与处理类如calculate计算器、format_json格式化JSON。1.3 Agent 如何与 Skills 协同工作其工作流是一个典型的“思考-行动-观察”循环ReAct 模式用户输入“明天上海天气如何如果下雨提醒我带伞。”Agent 规划模型思考后认为需要两步a) 获取上海明天天气b) 根据天气结果决定是否发送提醒。调用 Skill 1Agent 调用get_weatherSkill传入参数{“location”: “上海” “date”: “tomorrow”}。观察结果Skill 返回{“weather”: “rain” “temperature”: “18-22°C”}。Agent 再规划模型观察到“rain”判断需要执行提醒。调用 Skill 2Agent 调用send_reminderSkill传入参数{“message”: “明天上海有雨请带伞。”}。最终回复Agent 综合所有结果向用户回复“明天上海有雨气温18-22°C。我已经为您设置了带伞的提醒。”这个流程的关键在于大模型负责高层的任务分解和决策而 Skills 负责底层的、确定性的执行。接下来我们将通过实战亲手构建这样一个流程。2. 环境准备与框架选型在开始编码前我们需要搭建开发环境并选择一个合适的 Agent 开发框架。框架能帮我们处理与大模型的对话、Skill 的注册与管理、调用流程控制等通用逻辑让我们专注于业务技能的实现。2.1 主流 Agent 开发框架简介目前社区有多种框架各有侧重。对于新手和大多数应用场景我们推荐从LangChain或Semantic Kernel开始。框架主要语言特点适用场景LangChainPython / JS生态丰富社区活跃文档齐全概念体系完整。快速原型验证研究探索复杂的链式调用。Semantic KernelPython / C# / Java微软出品与.NET生态集成好强调“插件”模式。企业级应用尤其是已有 .NET 技术栈的项目。LlamaIndexPython专注于数据索引与检索构建RAG应用能力强。需要与私有知识库深度结合的Agent。AutoGenPython支持多Agent协作对话场景模拟能力强。需要多个Agent分工协作的复杂任务。本文选择LangChain (Python版)进行演示因为它学习曲线相对平缓且网上资源最多遇到问题容易找到解决方案。2.2 基础环境搭建请确保你的系统已安装 Python (推荐 3.8-3.11版本)。我们将使用venv创建独立的虚拟环境。# 1. 创建项目目录并进入 mkdir agent-skills-demo cd agent-skills-demo # 2. 创建虚拟环境 (Windows 用户使用 python -m venv venv) python3 -m venv venv # 3. 激活虚拟环境 # macOS/Linux: source venv/bin/activate # Windows: # venv\Scripts\activate # 4. 升级pip pip install --upgrade pip2.3 安装核心依赖我们将安装 LangChain 及其与 OpenAI 模型交互的包。如果你使用其他模型如通义千问、文心一言等需安装对应的 LangChain 集成包。# 安装 LangChain 核心包和 OpenAI 集成包 pip install langchain langchain-openai # 安装用于定义Tools/Skills的社区包包含一些常用工具 pip install langchain-community # 安装用于解析模型输出的包重要用于将模型回复解析为工具调用 pip install langchain-core注意本文示例将使用 OpenAI 的 GPT 模型作为 Agent 的“大脑”。你需要准备一个有效的 OpenAI API Key。如果你希望完全本地运行后续章节会介绍使用 Ollama 部署本地模型作为替代方案。2.4 项目结构初始化一个清晰的项目结构有助于管理 Skills 和 Agent 配置。agent-skills-demo/ ├── venv/ # Python虚拟环境.gitignore忽略 ├── skills/ # 存放自定义技能模块 │ ├── __init__.py │ ├── weather_tool.py # 天气查询技能 │ └── email_tool.py # 邮件发送技能 ├── agents/ # 存放Agent定义 │ ├── __init__.py │ └── task_agent.py # 任务执行Agent ├── config.py # 配置文件如API密钥 ├── requirements.txt # 项目依赖 └── main.py # 主程序入口创建上述目录和文件除venv外mkdir skills agents touch skills/__init__.py skills/weather_tool.py skills/email_tool.py touch agents/__init__.py agents/task_agent.py touch config.py requirements.txt main.py将当前安装的依赖导出到requirements.txtpip freeze requirements.txt至此基础环境准备完毕。接下来我们将动手实现第一个 Skill。3. 实战构建你的第一个自定义 Skill我们将构建一个模拟的get_weather技能。在生产环境中这个技能应该调用真实的天气 API如和风天气、OpenWeatherMap。为了简化演示我们模拟其逻辑。3.1 定义 Weather Skill编辑skills/weather_tool.py文件from langchain.tools import BaseTool from pydantic import BaseModel, Field from typing import Optional, Type class WeatherToolInput(BaseModel): 天气查询工具的输入参数模式。 location: str Field(description需要查询天气的城市名称例如北京、上海) date: Optional[str] Field(defaulttoday, description查询日期例如today, tomorrow, 2024-05-20。默认为今天。) class WeatherTool(BaseTool): 一个模拟的天气查询工具。在实际应用中应替换为真实的天气API调用。 name: str get_weather description: str ( 根据城市和日期查询天气信息。 输入应包含‘location’城市名和可选的‘date’日期。 ) args_schema: Type[BaseModel] WeatherToolInput def _run(self, location: str, date: str today) - str: 执行工具的主逻辑。 # 模拟API调用和数据处理 # 真实场景下这里会是 requests.get(weather_api_url, params{...}) weather_data { 北京: {today: 晴15-25°C, tomorrow: 多云18-28°C}, 上海: {today: 小雨18-22°C, tomorrow: 阴19-24°C}, 深圳: {today: 雷阵雨25-30°C, tomorrow: 多云26-31°C}, } city_weather weather_data.get(location) if not city_weather: return f抱歉未找到城市 {location} 的天气信息。 forecast city_weather.get(date, city_weather.get(today, 暂无数据)) return f{location} {date} 的天气是{forecast} async def _arun(self, location: str, date: str today) - str: 异步执行版本。如果不需要异步可以直接调用同步方法。 return self._run(location, date)关键点解析继承BaseTool所有 LangChain 工具都需要继承此类。name和description至关重要大模型根据description来判断何时调用此工具。描述应清晰准确。args_schema使用 Pydantic 模型定义输入参数的结构和类型。这能帮助大模型生成格式正确的调用参数。_run方法工具的核心执行逻辑。这里我们用一个字典模拟了数据返回。_arun方法异步版本。如果工具涉及网络I/O实现异步版本能提升效率。3.2 定义 Email Skill同样我们模拟一个发送邮件的工具。编辑skills/email_tool.pyfrom langchain.tools import BaseTool from pydantic import BaseModel, Field from typing import Type import smtplib from email.mime.text import MIMEText from email.header import Header import config # 我们将配置放在config.py中 class EmailToolInput(BaseModel): 邮件发送工具的输入参数模式。 recipient: str Field(description收件人邮箱地址) subject: str Field(description邮件主题) body: str Field(description邮件正文内容) class EmailTool(BaseTool): 邮件发送工具。需要预先配置SMTP服务器信息。 name: str send_email description: str ( 发送一封电子邮件到指定的收件人。 输入需要收件人地址recipient、主题subject和正文body。 ) args_schema: Type[BaseModel] EmailToolInput def _run(self, recipient: str, subject: str, body: str) - str: 执行发送邮件的逻辑。 # 注意这是一个示例生产环境需要更安全的密码管理如环境变量、密钥管理服务。 # 这里从config模块读取配置 smtp_server config.SMTP_SERVER smtp_port config.SMTP_PORT sender_email config.SENDER_EMAIL sender_password config.SENDER_PASSWORD # 可能是授权码而非登录密码 # 构建邮件 message MIMEText(body, plain, utf-8) message[From] Header(sender_email) message[To] Header(recipient) message[Subject] Header(subject) try: # 连接服务器并发送 with smtplib.SMTP_SSL(smtp_server, smtp_port) as server: # 使用SSL server.login(sender_email, sender_password) server.sendmail(sender_email, [recipient], message.as_string()) return f邮件已成功发送至 {recipient} except Exception as e: return f邮件发送失败错误信息{str(e)} async def _arun(self, recipient: str, subject: str, body: str) - str: return self._run(recipient, subject, body)关键点解析依赖外部服务此工具依赖 SMTP 服务器。我们将其配置外置到config.py。错误处理在_run方法中使用了 try-except 块确保将任何异常转化为字符串结果返回给 Agent避免整个流程因一个工具错误而崩溃。安全警告代码中直接引用了密码这仅用于演示。在生产环境中务必使用环境变量或专业的密钥管理服务来存储敏感信息。3.3 创建配置文件编辑config.py存放敏感信息和配置# config.py # 安全提示切勿将此文件提交至版本控制系统如Git。请将其加入 .gitignore。 # 实际项目中应使用环境变量。 # OpenAI API 配置 OPENAI_API_KEY sk-your-openai-api-key-here # 替换为你的真实Key OPENAI_BASE_URL https://api.openai.com/v1 # 如果你使用代理或特定端点可修改此项 # 邮件SMTP服务器配置 (以QQ邮箱为例需要开启SMTP服务并获取授权码) SMTP_SERVER smtp.qq.com SMTP_PORT 465 # QQ邮箱SSL端口 SENDER_EMAIL your-emailqq.com SENDER_PASSWORD your-authorization-code # 注意是授权码不是邮箱密码 # 其他模型配置如后续使用本地模型 LOCAL_MODEL_PATH 记得创建.gitignore文件忽略配置和虚拟环境venv/ __pycache__/ *.pyc config.py现在我们已经有了两个可用的 Skills。下一步是创建 Agent并将这些 Skills 装配给它。4. 创建并运行你的第一个 Agent有了 Skills我们需要一个“大脑”来调度它们。我们将使用 LangChain 的create_react_agent来构建一个遵循 ReAct 推理模式的 Agent。4.1 构建 Task Agent编辑agents/task_agent.pyfrom langchain import hub from langchain.agents import create_react_agent, AgentExecutor from langchain_openai import ChatOpenAI from skills.weather_tool import WeatherTool from skills.email_tool import EmailTool import config def build_task_agent(): 构建并返回一个配备了天气和邮件工具的Agent执行器。 # 1. 初始化大语言模型LLM作为Agent的大脑 # 这里使用 GPT-3.5-turbo对于工具调用任务足够且成本较低。 llm ChatOpenAI( modelgpt-3.5-turbo, temperature0, # 温度设为0使输出更确定更适合工具调用 openai_api_keyconfig.OPENAI_API_KEY, base_urlconfig.OPENAI_BASE_URL, ) # 2. 准备工具列表 tools [WeatherTool(), EmailTool()] # 3. 从LangChain Hub获取一个预设的ReAct提示词模板 # 这个模板会指导LLM按照“Thought/Action/Action Input/Observation”的格式进行推理。 prompt hub.pull(hwchase17/react) # 4. 使用工具、LLM和提示词创建ReAct Agent agent create_react_agent(llm, tools, prompt) # 5. 创建Agent执行器它负责运行Agent的循环直到返回最终答案。 # handle_parsing_errorsTrue 很重要当模型输出格式不符合工具调用格式时尝试修复。 # verboseTrue 会在控制台打印详细的推理步骤便于调试。 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, handle_parsing_errorsTrue, max_iterations5, # 限制最大循环次数防止无限循环 early_stopping_methodgenerate, # 当模型认为不需要再调用工具时直接生成最终回复 ) return agent_executor if __name__ __main__: # 本地测试这个Agent agent_executor build_task_agent() test_query 明天上海的天气怎么样如果下雨发邮件到 testexample.com 提醒我带伞。 print(f用户提问: {test_query}) result agent_executor.invoke({input: test_query}) print(f\nAgent最终回复: {result[output]})4.2 编写主程序并运行测试编辑main.py作为应用的启动入口# main.py from agents.task_agent import build_task_agent def main(): print(初始化任务智能体...) agent build_task_agent() print(\n智能体就绪请输入您的问题输入 quit 或 exit 退出:) while True: try: user_input input(\n ) if user_input.lower() in [quit, exit]: print(再见) break if not user_input.strip(): continue # 调用Agent执行器 result agent.invoke({input: user_input}) print(f\n {result[output]}) except KeyboardInterrupt: print(\n程序被中断。) break except Exception as e: print(f\n处理请求时发生错误: {e}) if __name__ __main__: main()4.3 首次运行与验证在运行前请确保config.py中的OPENAI_API_KEY已填写正确。激活虚拟环境如果已退出source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows运行主程序python main.py观察输出 程序会加载模型和工具。当你输入测试问题后由于verboseTrue控制台会打印出类似以下的详细推理过程Thought/Action/Action Input/Observation初始化任务智能体... 智能体就绪请输入您的问题输入 quit 或 exit 退出: 明天上海的天气怎么样如果下雨发邮件到 testexample.com 提醒我带伞。 进入新的AgentExecutor链... 我需要先查询明天上海的天气然后根据天气情况决定是否发送邮件。 行动get_weather 行动输入{location: 上海, date: tomorrow} 观察上海 tomorrow 的天气是阴19-24°C 思考天气是阴天没有下雨所以不需要发送提醒邮件。我可以直接回复用户。 最终答案明天上海是阴天气温在19到24摄氏度之间。根据预报没有雨所以不需要提醒带伞。 链结束。 明天上海是阴天气温在19到24摄氏度之间。根据预报没有雨所以不需要提醒带伞。这个输出清晰地展示了 Agent 的思考过程它先决定调用天气工具根据返回结果阴天判断无需调用邮件工具最终生成回复。恭喜你已经成功创建了一个具备多步推理和工具调用能力的智能体。接下来我们要解决一个关键问题如何在不依赖 OpenAI 的情况下在本地运行这个 Agent5. 进阶使用 Ollama 本地部署与集成依赖云端 API 存在成本、延迟和隐私问题。对于开发测试或内部应用在本地部署开源大模型是更优选择。Ollama是一个强大的工具可以让你在本地轻松运行如 Llama 3、Mistral、Qwen 等主流开源模型。5.1 安装与运行 Ollama访问 Ollama 官网根据你的操作系统macOS, Linux, Windows下载并安装。安装完成后打开终端拉取一个模型。我们选择轻量且性能不错的qwen2.5:7b通义千问2.5 7B版本ollama pull qwen2.5:7b这会下载约 4-5GB 的模型文件。运行模型服务ollama run qwen2.5:7b这会启动一个交互式对话。但我们需要的是 API 服务。让 Ollama 在后台以 API 模式运行# 停止刚才的交互式会话 (CtrlC) # 启动API服务默认监听 11434 端口 ollama serve # 或者直接运行 ollama serve 并在新终端窗口进行后续操作5.2 修改 Agent 以使用本地模型我们需要修改agents/task_agent.py中的 LLM 初始化部分使其指向本地的 Ollama 服务。首先安装 LangChain 与 Ollama 集成的包如果尚未安装pip install langchain-ollama然后修改build_task_agent函数或创建一个新的函数如build_local_agent# 在 agents/task_agent.py 顶部导入 from langchain_ollama import ChatOllama def build_local_agent(): 构建使用本地Ollama模型的Agent。 # 1. 初始化本地LLM llm ChatOllama( modelqwen2.5:7b, # 与 ollama pull 的模型名一致 base_urlhttp://localhost:11434, # Ollama 默认API地址 temperature0, # 对于工具调用可能需要调整一些参数以提升格式遵循能力 # num_ctx4096, # 可调整上下文长度 ) # 2. 准备工具列表 (与之前相同) tools [WeatherTool(), EmailTool()] # 3. 获取提示词模板 prompt hub.pull(hwchase17/react) # 4. 5. 创建Agent和执行器 agent create_react_agent(llm, tools, prompt) agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, handle_parsing_errorsTrue, max_iterations5, early_stopping_methodgenerate, ) return agent_executor关键点解析ChatOllama这是 LangChain 为 Ollama 提供的专用聊天模型类。base_url指向本地运行的 Ollama API 服务器。模型能力并非所有开源模型都擅长严格的工具调用格式JSON。qwen2.5、llama3、mistral等较新的模型对此支持较好。如果遇到格式解析错误可能需要尝试不同模型或微调提示词。5.3 测试本地 Agent修改main.py可以选择使用哪个 Agent# main.py from agents.task_agent import build_task_agent, build_local_agent def main(use_localFalse): print(正在初始化智能体使用本地模型... if use_local else 正在初始化智能体使用OpenAI...) if use_local: agent build_local_agent() else: agent build_task_agent() # ... 其余交互代码不变 ... if __name__ __main__: # 通过命令行参数或直接修改此处来选择模式 use_local_model True # 设为 True 测试本地模型 main(use_localuse_local_model)运行前确保 Ollama 服务正在运行 (ollama serve)。然后运行python main.py。首次调用时本地模型加载可能需要一些时间后续交互速度会快很多。注意本地模型的工具调用格式遵循能力可能不如 GPT-4 等专用优化模型稳定。如果遇到OutputParserException等解析错误可以尝试使用handle_parsing_errorsTrue我们已经设置让执行器尝试修复。换用其他工具调用格式支持更好的模型如llama3。使用更详细的提示词Prompt来指导模型输出格式。6. 常见问题排查与优化实践在实际开发和运行中你可能会遇到以下典型问题。这里提供排查思路和优化建议。6.1 Agent 常见问题排查表问题现象可能原因检查步骤解决方案模型不调用工具直接回答1. 工具描述 (description) 不清晰。2. 提示词 (prompt) 未强调工具使用。3. 模型能力不足本地模型常见。1. 检查verbose日志看模型“思考”步骤。2. 查看工具描述是否准确描述了功能和输入。1. 优化工具描述明确使用场景和输入格式。2. 尝试更换/微调提示词模板。3. 换用工具调用能力更强的模型如 GPT-4 Llama 3.1。工具调用参数格式错误1.args_schema定义与模型输出不匹配。2. 模型未生成有效的 JSON。1. 查看verbose日志中Action Input的内容。2. 检查是否触发了handle_parsing_errors。1. 确保args_schema的字段名和类型简单明确。2. 在提示词中强调输出必须是有效的 JSON 对象。3. 使用handle_parsing_errorsTrue进行容错。Agent 陷入无限循环1. 工具返回结果未满足模型预期导致其反复调用同一工具。2.max_iterations设置过高。1. 观察循环调用的工具和参数。2. 检查工具返回结果是否清晰、完整。1. 优化工具返回信息使其更具决定性。2. 合理设置max_iterations如5-10。3. 设置early_stopping_methodgenerate。本地模型响应慢或报错1. 硬件资源内存、显存不足。2. Ollama 服务未启动或端口被占用。3. 模型文件损坏。1. 检查任务管理器/系统监控。2. 运行ollama list和curl http://localhost:11434/api/tags。3. 查看 Ollama 日志。1. 换用更小的模型如 3B, 7B。2. 确保ollama serve在运行。3. 尝试重新拉取模型ollama pull model。邮件/API等工具执行失败1. 网络问题。2. 认证信息错误API Key 密码。3. 目标服务限制如频率限制。1. 在工具_run方法内添加详细日志或打印错误。2. 单独测试工具函数。3. 检查防火墙或代理设置。1. 确保网络连通性。2. 核对config.py中的配置信息。3. 为工具添加重试机制和更友好的错误信息返回。6.2 生产环境最佳实践当你的 Agent 从 demo 走向真实业务时需要考虑以下几点配置与密钥管理绝对不要将 API Key、密码等硬编码在代码或config.py中并提交到代码仓库。使用环境变量通过os.getenv(“OPENAI_API_KEY”)读取。使用.env文件结合python-dotenv库管理本地开发环境变量。生产环境使用云服务商提供的密钥管理服务如 AWS Secrets Manager, Azure Key Vault。错误处理与鲁棒性工具层每个 Skill 的_run方法都应包含完整的异常捕获返回明确的错误信息字符串而不是抛出异常导致 Agent 崩溃。Agent 层利用AgentExecutor的handle_parsing_errors和max_iterations等参数防止失控。应用层在main.py或你的 Web 服务层进行全局异常捕获和日志记录。性能与成本缓存对频繁查询且结果变化不快的工具如天气添加缓存层如functools.lru_cache或 Redis。异步如果 Skill 涉及大量 I/O网络请求、数据库查询实现其_arun异步方法并使用AgentExecutor的异步接口ainvoke来提升并发性能。模型选择根据任务复杂度平衡模型能力与成本/速度。简单任务用小型本地模型或 GPT-3.5复杂任务再用 GPT-4。技能Skills设计原则单一职责一个 Skill 只做一件事并做好。描述清晰name和description是模型理解工具的窗口务必准确、无歧义。输入验证在_run方法开始处对输入参数进行有效性校验。输出规范返回结构化的字符串信息便于模型解析和下一步决策。7. 扩展方向与下一步学习建议掌握了基础 Agent 与 Skills 的构建后你可以从以下几个方向深化集成更多真实工具数据库操作使用langchain_community.tools.SQLDatabaseToolkit让 Agent 能查询和操作数据库。网络搜索集成langchain_community.tools.DuckDuckGoSearchRun或 Tavily API让 Agent 获取实时信息。文件操作创建读写本地文件、解析 PDF/Word 的技能。第三方 API连接你的业务系统如 CRM、ERP、工单系统等。实现复杂工作流多 Agent 协作使用AutoGen框架创建多个具有不同专长规划、执行、审核的 Agent 协同完成复杂项目。记忆与上下文为 Agent 添加更强大的记忆系统如ConversationBufferWindowMemory保留最近N轮对话或VectorStoreRetrieverMemory将历史存入向量数据库进行语义检索。前端交互与部署Web 界面使用Gradio或Streamlit快速构建一个与 Agent 对话的 Web 应用。API 服务使用FastAPI将你的 Agent 封装成 RESTful API供其他系统调用。容器化使用 Docker 将你的应用及其依赖包括本地模型服务打包实现一键部署。深入原理与定制自定义提示词研究并修改从 Hub 拉取的react提示词模板使其更符合你的任务需求。自定义输出解析器如果标准解析器无法处理你的模型输出学习实现BaseOutputParser。Agent 类型探索除了 ReAct尝试conversational-react-description带聊天历史、self-ask-with-search自问自答搜索等其他 Agent 类型。构建大模型 Agent 应用是一个持续迭代的过程。从今天这个能查询天气和发邮件的简单智能体开始通过不断集成新的 Skills、优化提示词、改进工作流你将能够创造出真正理解需求、自动执行复杂任务的智能助手。