ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零构建AI Agent:基于LangChain与Codex的完整实战指南

从零构建AI Agent:基于LangChain与Codex的完整实战指南 最近在技术社区和副业圈子里Codex 和 AI Agent 这两个词的热度居高不下。很多朋友包括一些想利用技术技能增加收入的非专业开发者都对这个领域充满好奇但又苦于资料零散、门槛不明。网上有些教程要么过于学术化要么就是纯粹的营销话术真正从零开始、手把手教你怎么把技术落地、甚至产生收益的完整指南并不多见。本文旨在填补这个空白。我将为你系统性地拆解 Codex 和 AI Agent 的核心概念、搭建流程并提供一个从环境安装到项目实战的完整闭环教程。无论你是想学习新技术拓展技能树的开发者还是零基础但希望利用自动化工具提升效率、探索副业可能性的朋友比如希望用技术辅助内容创作、数据处理等都能从本文中找到清晰的路径和可运行的代码示例。我们的目标不是空谈概念而是让你能真正动手做出一个可用的 Agent理解其运作原理并看到其潜在的应用价值。1. 背景与核心概念Codex 与 AI Agent 究竟是什么在深入实战之前我们必须先理清几个关键概念避免后续的混淆。1.1 Codex不止是代码生成模型很多人一听到“Codex”第一反应可能是 OpenAI 那个著名的代码生成模型。这没错但在当前更广泛的技术讨论语境中“Codex”常常被用来指代一类提供大模型 API 访问服务的中转平台或聚合服务。你可以把它想象成一个“智能 API 网关”。它的核心价值在于模型聚合接入多个主流大模型如 GPT、Claude、DeepSeek 等的 API提供一个统一的接口。成本与路由优化自动选择性价比最高的模型或根据需求路由请求帮你管理 API 密钥和用量。简化开发开发者无需直接面对各个厂商复杂的 API 文档和计费方式使用 Codex 提供的统一 SDK 或 API 即可。所以当我们说“安装 Codex”、“使用 Codex”时通常指的是部署或使用这样一个中转服务而不是去本地部署一个庞大的原始 Codex 模型。这对于个人开发者和小型项目来说是接入 AI 能力更经济、便捷的方式。1.2 AI Agent从“工具调用者”到“自主执行者”AI Agent智能体是一个更上层的概念。它指的是一个能够感知环境、进行决策并执行动作以实现目标的软件实体。一个简单的 AI Agent 通常包含以下核心组件规划Planning分解目标制定步骤。记忆Memory保存对话历史、工具调用结果等信息。工具使用Tool Use调用外部能力如搜索网络、读写文件、执行代码、调用 API 等。行动Action执行规划好的步骤并观察结果。基于大语言模型LLM的 Agent其“大脑”就是 LLM例如通过 Codex 服务调用的 GPT-4。LLM 负责理解任务、制定计划、决定何时调用工具。而 Codex 这类服务则为 Agent 提供了稳定、高效的“大脑”接入方式。1.3 两者的关系与应用场景你可以这样理解Codex 是“燃料”提供模型能力Agent 是“汽车”利用能力完成任务。我们用 Codex 提供的统一接口来驱动 Agent 运行。典型应用场景包括自动化客服与问答构建能查询知识库、回答复杂问题的聊天机器人。数据分析与报告生成让 Agent 读取数据库或 Excel 文件自动分析并生成总结报告。个性化内容助手根据用户输入的大纲或关键词自动生成文章、邮件、脚本草稿。智能工作流自动化连接多个软件如日历、邮件、项目管理工具根据规则自动处理任务。对于副业变现而言掌握 Agent 开发意味着你可以为企业或个人定制开发这些自动化解决方案或者打造自己的智能化产品。2. 环境准备与版本说明我们将以一个相对简单且流行的方式开始使用Python语言利用LangChain框架来构建 Agent并通过一个本地模拟的 Codex 兼容 API来接入大模型。这样做的目的是为了让大家在没有真实 API 密钥和付费账户的情况下也能完整跑通整个流程理解所有环节。为什么选择 LangChainLangChain 是一个用于开发由语言模型驱动的应用程序的框架。它极大地简化了与 LLM 交互、管理提示词、链接多个组件如 Agent、记忆、工具的过程是当前构建 AI 应用的事实标准之一。环境清单操作系统Windows 10/11, macOS, 或 Linux (本文命令以 macOS/Linux 为例Windows 用户建议使用 Git Bash 或 WSL)Python 版本3.8 或更高版本 (推荐 3.9)核心库langchain: 主框架langchain-community: 社区工具和集成openai: OpenAI 兼容的客户端库 (用于连接我们的“模拟 Codex”)fastapiuvicorn: 用于创建本地模拟 API 服务器requests: 通用 HTTP 库IDE/编辑器VS Code, PyCharm 或任何你熟悉的代码编辑器。项目结构我们将创建一个清晰的文件夹结构。首先请确保你的系统已安装 Python 和 pip。打开终端命令行执行以下命令检查python --version pip --version接下来我们创建一个全新的项目目录并初始化虚拟环境强烈推荐以避免包冲突。# 创建项目文件夹并进入 mkdir ai-agent-tutorial cd ai-agent-tutorial # 创建虚拟环境 (Windows 用户请使用 python -m venv venv) python3 -m venv venv # 激活虚拟环境 # macOS/Linux: source venv/bin/activate # Windows: # venv\Scripts\activate # 激活后命令行提示符前通常会出现 (venv) 字样3. 核心组件拆解LangChain Agent 是如何工作的在写代码之前理解 LangChain 中 Agent 的运作范式至关重要。它主要遵循ReAct (Reason Act)模式。3.1 Agent 的核心要素一个典型的 LangChain Agent 由以下几部分构成LLM代理的“大脑”负责思考和决策。我们将通过一个“模拟 Codex”服务来提供它。工具 (Tools)代理可以调用的函数。例如计算器、搜索引擎、文件读写器。代理执行器 (AgentExecutor)驱动代理运行的核心循环。它负责将用户输入和当前状态记忆组合成提示词给 LLM。解析 LLM 的响应判断是“最终答案”还是“需要调用某个工具”。如果调用工具则执行工具函数获取结果并将结果再次喂给 LLM 进行下一步思考。循环直到 LLM 输出最终答案。3.2 工具的定义与创建工具本质上是一个 Python 函数配合tool装饰器或特定的类来声明。LangChain 要求工具函数有清晰的名称和描述因为 LLM 会根据这些描述来决定是否以及何时调用它。3.3 提示词模板 (Prompt Template)Agent 的提示词是预先设计好的模板它告诉 LLM 你的角色、可用的工具以及思考的格式例如要求 LLM 以Thought:Action:Observation:的格式输出。LangChain 内置了多种 Agent 类型的提示词我们通常无需从头编写。4. 完整实战案例构建一个“本地信息查询”Agent我们的目标是构建一个 Agent它可以回答关于当前日期时间、进行简单数学计算并且能“感知”到我们项目目录下的文件内容模拟一个简单的知识库查询。这涵盖了工具调用和记忆的基本使用。4.1 创建项目结构与依赖安装在ai-agent-tutorial目录下创建以下文件结构ai-agent-tutorial/ ├── venv/ # 虚拟环境目录 (已创建) ├── tools/ # 自定义工具目录 │ └── __init__.py │ └── custom_tools.py ├── agents/ # Agent 定义目录 │ └── __init__.py │ └── local_agent.py ├── server/ # 模拟 API 服务器目录 │ └── __init__.py │ └── mock_codex_server.py ├── knowledge/ # 知识库目录 │ └── company_faq.txt ├── main.py # 主程序入口 ├── requirements.txt # 项目依赖 └── .env # 环境变量文件 (可选用于存真实 API Key)首先创建requirements.txt文件并填入以下内容langchain0.1.0 langchain-community0.0.10 openai1.12.0 fastapi0.104.1 uvicorn[standard]0.24.0 requests2.31.0 python-dotenv1.0.0然后安装依赖pip install -r requirements.txt4.2 创建模拟 Codex API 服务器由于我们可能没有真实的 OpenAI API 密钥或者为了演示的稳定性我们先搭建一个本地模拟服务器。它接收与 OpenAI 兼容的请求并返回一个固定的、模拟的 LLM 响应。这能让我们完全专注于 Agent 逻辑本身。创建server/mock_codex_server.py# server/mock_codex_server.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List, Optional import uvicorn app FastAPI(titleMock Codex API) class ChatMessage(BaseModel): role: str # system, user, assistant content: str class ChatCompletionRequest(BaseModel): model: str gpt-3.5-turbo messages: List[ChatMessage] temperature: Optional[float] 0.7 max_tokens: Optional[int] 500 app.post(/v1/chat/completions) async def create_chat_completion(request: ChatCompletionRequest): 模拟 OpenAI Chat Completions API。 这是一个极其简化的版本仅用于演示。 在实际项目中这里会调用真实的 LLM如通过 Codex 服务。 # 简单的逻辑如果用户消息包含“计算”则调用计算工具如果包含“日期”则回答日期。 last_user_message None for msg in request.messages: if msg.role user: last_user_message msg.content.lower() assistant_content Im a mock LLM. I can simulate basic reasoning for demo purposes.\n if last_user_message: if calculate in last_user_message or 算 in last_user_message: # 模拟 Agent 的“思考”过程它应该去调用计算工具而不是直接算 assistant_content Thought: The user is asking for a calculation. I should use the calculator tool.\nAction: calculator\nAction Input: last_user_message.split(calculate)[-1].strip(? ) elif date in last_user_message or 时间 in last_user_message or 今天 in last_user_message: assistant_content Thought: The user is asking for the current date/time. I should use the get_current_time tool.\nAction: get_current_time\nAction Input: elif file in last_user_message or 文件 in last_user_message or faq in last_user_message: assistant_content Thought: The user is asking about file content. I should use the read_file tool.\nAction: read_file\nAction Input: ./knowledge/company_faq.txt else: assistant_content fThought: I need to answer the users question: {last_user_message}\nFinal Answer: This is a mock response to: {last_user_message}. In a real scenario, I would generate a proper answer based on my knowledge. # 返回模拟的 OpenAI 格式响应 return { id: mock-chat-id, object: chat.completion, created: 1677652288, model: request.model, choices: [{ index: 0, message: { role: assistant, content: assistant_content }, finish_reason: stop }], usage: { prompt_tokens: 10, completion_tokens: len(assistant_content.split()), total_tokens: 10 len(assistant_content.split()) } } if __name__ __main__: # 运行服务器监听本地 8000 端口 uvicorn.run(app, host0.0.0.0, port8000)这个服务器非常简陋但它响应的格式与 OpenAI API 一致。关键点在于它模拟了 LLM 在 Agent 框架中应该输出的Thought:和Action:格式。在真实场景中这个端点应该连接到一个真实的 LLM 服务如通过 Codex 配置的 GPT-4。在终端的新标签页中启动这个模拟服务器cd ai-agent-tutorial source venv/bin/activate # 确保在虚拟环境中 python server/mock_codex_server.py服务器将在http://localhost:8000运行。保持此终端运行。4.3 创建自定义工具现在我们来创建 Agent 可以调用的工具。创建tools/custom_tools.py# tools/custom_tools.py from datetime import datetime from langchain.tools import tool import math import os tool def get_current_time(placeholder: str ) - str: Returns the current date and time. Input is usually an empty string or ignored. now datetime.now() return fThe current date and time is: {now.strftime(%Y-%m-%d %H:%M:%S)} tool def calculator(expression: str) - str: Evaluates a mathematical expression. Supports , -, *, /, **, sqrt, sin, cos, etc. Use math functions. Example: calculator(3 5 * 2) or calculator(sqrt(16)) # 安全警告在生产环境中直接 eval 是极度危险的这里仅用于演示。 # 应使用 ast.literal_eval 或专门的数学表达式解析库。 try: # 为表达式添加 math 模块的函数支持 result eval(expression, {__builtins__: None}, {math: math}) return fThe result of {expression} is: {result} except Exception as e: return fError calculating expression {expression}: {e} tool def read_file(file_path: str) - str: Reads the content of a text file from the local knowledge base directory. The file_path should be relative to the project root or an absolute path. # 简单处理将路径相对于项目根目录 if not os.path.isabs(file_path): # 假设从项目根目录运行知识库在 ./knowledge/ file_path os.path.join(., knowledge, os.path.basename(file_path)) try: with open(file_path, r, encodingutf-8) as f: content f.read() return fContent of file {os.path.basename(file_path)}:\n\n{content}\n except FileNotFoundError: return fError: File not found at path {file_path}. except Exception as e: return fError reading file: {e}重要安全提示calculator工具中的eval()函数在演示中很方便但在任何面向用户的生产环境中都是严重的安全漏洞绝不能使用真实项目应使用ast.literal_eval或numexpr等安全库。同时在knowledge/company_faq.txt中创建一些示例内容# 公司常见问题解答 (示例) Q: 公司的休假政策是怎样的 A: 员工每年享有15天带薪年假按入职时间比例计算。 Q: 报销流程是什么 A: 员工需在费用发生后30天内通过内部财务系统提交报销单并附上合规发票。 Q: 技术支持的响应时间 A: P0级紧急问题30分钟内响应P1级高优先级2小时内响应P2级普通问题24小时内响应。4.4 构建并运行 Agent现在我们将把 LLM模拟服务器、工具和 Agent 执行器组装起来。创建agents/local_agent.py# agents/local_agent.py from langchain.agents import AgentExecutor, create_react_agent from langchain.tools import Tool from langchain_openai import ChatOpenAI from langchain import hub # 用于拉取预设的提示词 import sys import os # 将上级目录加入路径以便导入自定义工具 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from tools.custom_tools import get_current_time, calculator, read_file def create_agent(): 创建并返回一个配置好的 Agent 执行器。 # 1. 配置 LLM指向我们的本地模拟服务器 # 注意base_url 替换为你的模拟服务器地址api_key 可以是任意字符串模拟服务器不验证 llm ChatOpenAI( modelgpt-3.5-turbo, base_urlhttp://localhost:8000/v1, # 我们的模拟 Codex 服务器 api_keymock-key-for-demo, temperature0, timeout30, ) # 2. 准备工具列表 tools [ Tool( nameGet Current Time, funcget_current_time.run, # 注意这里调用工具的 run 方法 descriptionUseful for when you need to know the current date and time. Input is usually empty., ), Tool( nameCalculator, funccalculator.run, descriptionUseful for performing mathematical calculations. Input should be a valid mathematical expression like 3 5 * 2 or sqrt(16)., ), Tool( nameRead File, funcread_file.run, descriptionUseful for reading the content of a text file from the local knowledge base. Input should be a relative file path like ./knowledge/company_faq.txt., ), ] # 3. 获取 ReAct 风格的提示词模板 # LangChain Hub 上存储了许多预设提示词我们拉取一个标准的 ReAct 提示词。 prompt hub.pull(hwchase17/react) # 4. 创建 Agent agent create_react_agent(llmllm, toolstools, promptprompt) # 5. 创建 Agent 执行器 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, # 设置为 True 可以看到 Agent 的思考过程非常有用 handle_parsing_errorsTrue, # 优雅地处理 LLM 输出解析错误 max_iterations5, # 防止 Agent 陷入无限循环 early_stopping_methodgenerate, # 当 Agent 认为可以给出最终答案时停止 ) return agent_executor if __name__ __main__: # 快速测试 agent_executor create_agent() test_questions [ What is the current time?, Calculate 15 * (3 7) / 2., What does the company FAQ say about vacation policy?, Who is the CEO of the company? # 这个问题知识库没有测试 Agent 如何处理未知信息 ] for question in test_questions: print(f\n{*50}) print(fUser: {question}) print(f{*50}) try: response agent_executor.invoke({input: question}) print(fAgent: {response[output]}) except Exception as e: print(fAgent encountered an error: {e})最后创建主入口文件main.py# main.py from agents.local_agent import create_agent def main(): print(初始化本地信息查询 Agent...) agent create_agent() print(\nAgent 已就绪你可以开始提问。) print(输入 quit 或 exit 来退出程序。) print(- * 40) while True: try: user_input input(\nYou: ).strip() if user_input.lower() in [quit, exit, q]: print(再见) break if not user_input: continue print(Agent 正在思考...) # 调用 Agent result agent.invoke({input: user_input}) print(f\nAgent: {result[output]}) except KeyboardInterrupt: print(\n\n程序被中断。) break except Exception as e: print(f\n发生错误: {e}) if __name__ __main__: # 确保模拟服务器正在运行 (http://localhost:8000) main()4.5 运行与验证现在确保你的模拟 API 服务器还在运行终端窗口1。打开一个新的终端窗口终端窗口2进入项目目录激活虚拟环境并运行主程序cd ai-agent-tutorial source venv/bin/activate python main.py你应该会看到类似以下的交互过程由于我们的模拟 LLM 是固定的输出可能略有不同但流程一致初始化本地信息查询 Agent... Agent 已就绪你可以开始提问。 输入 quit 或 exit 来退出程序。 ---------------------------------------- You: What is the current time? Agent 正在思考... Entering new AgentExecutor chain... Thought: The user is asking for the current date/time. I should use the get_current_time tool. Action: Get Current Time Action Input: Observation: The current date and time is: 2024-05-27 14:30:15 Thought: I now know the final answer. Final Answer: The current date and time is: 2024-05-27 14:30:15. Finished chain. Agent: The current date and time is: 2024-05-27 14:30:15. You: Calculate 15 * (3 7) / 2. Agent 正在思考... Entering new AgentExecutor chain... Thought: The user is asking for a calculation. I should use the calculator tool. Action: Calculator Action Input: 15 * (3 7) / 2 Observation: The result of 15 * (3 7) / 2 is: 75.0 Thought: I now know the final answer. Final Answer: The result of 15 * (3 7) / 2 is 75.0. Finished chain. Agent: The result of 15 * (3 7) / 2 is 75.0. You: What does the company FAQ say about vacation policy? Agent 正在思考... Entering new AgentExecutor chain... Thought: The user is asking about file content. I should use the read_file tool. Action: Read File Action Input: ./knowledge/company_faq.txt Observation: Content of file company_faq.txt:公司常见问题解答 (示例)Q: 公司的休假政策是怎样的 A: 员工每年享有15天带薪年假按入职时间比例计算。Q: 报销流程是什么 A: 员工需在费用发生后30天内通过内部财务系统提交报销单并附上合规发票。Q: 技术支持的响应时间 A: P0级紧急问题30分钟内响应P1级高优先级2小时内响应P2级普通问题24小时内响应。Thought: I now have the information from the FAQ. Final Answer: According to the company FAQ, the vacation policy states that employees are entitled to 15 days of paid annual leave per year, calculated proportionally based on their joining date. Finished chain. Agent: According to the company FAQ, the vacation policy states that employees are entitled to 15 days of paid annual leave per year, calculated proportionally based on their joining date.恭喜你已经成功运行了一个具备多工具调用能力的 AI Agent。虽然我们的大脑LLM是模拟的但整个 Agent 的架构、工作流程思考-行动-观察已经完全跑通。5. 连接真实 Codex 服务与进阶配置上面的模拟服务器只是为了演示流程。要让 Agent 真正“智能”起来我们需要连接一个强大的 LLM。这里以配置一个兼容 OpenAI API 的 Codex 服务为例。5.1 获取并配置真实的 LLM 接入点假设你使用了一个名为 “CodexService” 的中转平台它提供了兼容 OpenAI 的接口。你通常会在其后台获取到API Base URL:https://api.codexservice.com/v1API Key:sk-your-secret-key-here安全提示永远不要将 API Key 硬编码在代码中或上传到 GitHub最佳实践是使用环境变量。在项目根目录创建.env文件# .env CODEX_API_BASEhttps://api.codexservice.com/v1 CODEX_API_KEYsk-your-secret-key-here CODEX_MODELgpt-4-turbo # 或你订阅的模型名称然后修改agents/local_agent.py中的create_agent函数里创建 LLM 的部分# agents/local_agent.py (修改部分) from langchain_openai import ChatOpenAI from dotenv import load_dotenv import os # 加载 .env 文件中的环境变量 load_dotenv() def create_agent(): # 从环境变量读取配置 api_base os.getenv(CODEX_API_BASE) api_key os.getenv(CODEX_API_KEY) model_name os.getenv(CODEX_MODEL, gpt-4-turbo) # 提供默认值 if not api_base or not api_key: raise ValueError(请在 .env 文件中配置 CODEX_API_BASE 和 CODEX_API_KEY) # 1. 配置 LLM指向真实的 Codex 服务 llm ChatOpenAI( modelmodel_name, base_urlapi_base, api_keyapi_key, temperature0.1, # 对于任务型 Agent温度可以设低一些以保证稳定性 timeout60, ) # ... 后续工具和 Agent 创建代码不变 ...5.2 处理更复杂的工具与记忆一个实用的 Agent 往往需要记忆上下文。LangChain 提供了多种记忆后端。例如添加对话记忆# 在 agents/local_agent.py 中导入并添加记忆 from langchain.memory import ConversationBufferMemory def create_agent_with_memory(): llm ... # 同上使用真实 Codex 配置 tools ... # 同上 # 创建记忆 memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 使用带记忆的提示词模板 (需要从 hub 拉取或自定义) prompt hub.pull(hwchase17/react-chat) # 注意react-chat 提示词模板期望 chat_history 和 input 变量 agent create_react_agent(llmllm, toolstools, promptprompt) agent_executor AgentExecutor.from_agent_and_tools( agentagent, toolstools, memorymemory, verboseTrue, handle_parsing_errorsTrue, max_iterations7, ) return agent_executor这样你的 Agent 就能记住之前的对话内容实现多轮交互。6. 常见问题与排查思路在开发和使用 Agent 过程中你可能会遇到以下典型问题问题现象可能原因排查与解决思路Agent 无法启动提示 LLM 连接错误1. 模拟服务器未运行。2. 真实 API 的 Base URL 或 Key 错误。3. 网络问题。1. 检查python server/mock_codex_server.py是否运行。2. 检查.env文件配置用curl或requests手动测试 API 端点。3. 检查防火墙或代理设置。Agent 一直循环或达到最大迭代次数1. 工具描述不清晰LLM 无法正确选择。2. LLM 无法从工具返回结果中提炼最终答案。3. 任务本身过于复杂或模糊。1. 优化工具的描述 (description)确保准确、简洁。2. 设置max_iterations(如 10)并检查verboseTrue的输出看卡在哪一步。3. 简化用户问题或尝试让 Agent 先拆解子任务。Agent 解析 LLM 输出出错 (Parsing Error)LLM 的输出不符合 ReAct 等 Agent 提示词要求的严格格式。1. 设置handle_parsing_errorsTrue让执行器尝试修复。2. 检查提示词模板是否与 LLM 兼容。对于某些 LLM可能需要微调提示词。3. 降低 LLM 的temperature以减少随机性。工具调用失败或结果不符合预期1. 工具函数内部有 Bug 或异常。2. 传给工具的输入参数格式错误。1. 单独测试你的工具函数确保其健壮性。2. 查看verbose日志中的Action Input确认 LLM 生成的输入是否合理。可能需要调整工具描述来引导 LLM。连接到真实 Codex 后响应慢或成本高1. 模型太大或请求 token 过多。2. Agent 思考步骤过多每次步骤都调用 API。1. 考虑使用更小、更快的模型如 GPT-3.5-Turbo进行原型开发。2. 优化提示词让 Agent 更高效。监控 API 使用量和成本。7. 最佳实践与工程建议要将一个演示 Agent 转化为可交付、可维护的项目你需要关注以下几点7.1 工具设计原则单一职责每个工具只做一件事并做好。清晰描述工具的名称和描述是 LLM 选择它的唯一依据务必用自然语言写清楚其功能和输入格式。健壮性工具函数必须包含完善的错误处理try-except返回清晰的错误信息避免因单个工具失败导致整个 Agent 崩溃。安全性这是重中之重永远不要执行未经净化的用户输入如我们的calculator演示是反面教材。对于文件操作、网络请求、系统命令等要进行严格的输入验证和权限控制。7.2 提示词工程系统提示词 (System Prompt)在连接真实 LLM 时通过system消息给 Agent 设定明确的角色、目标和行为规范例如“你是一个有帮助的助手只能使用提供的工具。”。少样本学习 (Few-Shot)在提示词中提供几个工具调用的正确示例能显著提升 Agent 使用工具的准确性。格式约束明确要求 LLM 以特定格式如Thought:Action:Observation:输出便于解析。7.3 生产环境考量异步与并发对于需要处理大量并发请求的 Agent考虑使用 LangChain 的异步接口 (ainvoke) 和像FastAPI这样的异步框架。状态管理对于 Web 应用每个用户会话应有独立的 Agent 实例和记忆存储。可以使用数据库或 Redis 来持久化记忆。可观测性记录详细的日志包括用户的输入、LLM 的完整响应思考过程、工具调用记录和最终输出。这对于调试和优化至关重要。成本控制为 API 调用设置预算和速率限制。监控 token 消耗对于长对话可以考虑总结记忆而非存储全部历史。7.4 副业变现思路内部工具开发为企业开发定制化的数据分析 Agent、内部知识库问答机器人、自动化报告生成系统等。SaaS 产品集成将 Agent 能力作为插件或功能集成到现有的 SaaS 平台中。咨询服务为客户提供 AI Agent 的设计、开发和部署咨询服务。内容创作辅助开发专注于营销文案、社交媒体帖子、视频脚本生成的 Agent服务于内容创作者。教育产品制作互动式学习辅导 Agent 或编程助手。记住技术是基础发现并解决真实的痛点才是变现的关键。从一个小而专的领域切入打造一个真正有用的 Agent远比做一个大而全的演示更有价值。本文带你从零开始完整走通了 AI Agent 的开发流程从理解概念、搭建环境、创建工具、构建 Agent 执行器到连接真实服务并探讨生产级实践。你现在已经拥有了一个可以运行和扩展的代码框架。接下来的方向是深入探索更复杂的工具如网络搜索、数据库查询、集成更强大的记忆系统并用它去解决你实际工作或生活中遇到的重复性、决策性问题。动手修改代码添加新工具尝试解决一个具体任务是学习的最佳路径。
返回列表