【实战】开发AI智能体的步骤
1 明确 AI Agent 的业务目标
开发 AI Agent 的第一步不是选择大语言模型,而是明确它要解决什么问题。AI Agent 本质上是一种能够理解任务、调用工具、处理信息并完成目标的软件系统。如果业务目标不清晰,后续的模型选择、工具设计、知识库建设和效果评估都会失去依据。
一个完整的业务目标通常应说明用户是谁、输入是什么、Agent 需要完成哪些动作、输出结果是什么,以及怎样判断任务是否成功。例如,“开发一个企业客服 Agent”过于宽泛,可以进一步定义为:“根据客户提供的订单号查询物流状态;如果订单异常,则创建售后工单;退款操作必须经过人工确认。”
|
设计内容 |
需要回答的问题 |
示例 |
|
用户对象 |
谁使用 Agent |
客服人员、企业客户 |
|
业务任务 |
Agent 具体完成什么 |
查询订单、生成工单 |
|
输入信息 |
用户提供哪些数据 |
订单号、客户问题 |
|
输出结果 |
用户最终得到什么 |
物流状态、处理建议 |
|
成功标准 |
怎样评价效果 |
查询准确率、任务完成率 |
|
风险边界 |
哪些事情不能自动完成 |
退款、删除数据、修改权限 |
在目标确定后,还应划分自动处理范围和人工处理范围。一般而言,查询、分类、摘要、信息检索等低风险任务适合自动完成;支付、退款、合同签署、删除数据、修改账户权限等高风险任务,应当加入人工审批或二次确认机制。
2 分析任务并选择 Agent 类型
并不是所有 AI 应用都需要高度自主的 Agent。有些任务使用普通的问答系统或固定工作流就能解决。只有当任务需要动态判断、跨系统调用或根据中间结果调整步骤时,才更适合使用 Agent。
按照自主程度,系统通常可以分为三种类型。
|
类型 |
工作方式 |
适用场景 |
主要特点 |
|
问答型应用 |
模型直接根据上下文回答 |
企业知识问答 |
实现简单,控制性强 |
|
工作流型 Agent |
按固定流程调用模型和工具 |
审批、客服、报告生成 |
稳定、容易测试 |
|
自主决策型 Agent |
根据任务动态规划和选择工具 |
复杂研究、数据分析 |
灵活,但成本和风险较高 |
实际开发时,建议优先采用“固定流程加模型能力”的方式,而不是一开始就让模型完全自主。固定流程负责权限、业务规则和安全约束,模型负责语言理解、内容分析和步骤选择。这样既能利用大模型的灵活性,又能避免不可控的执行行为。

|
Agent 类型 |
典型场景 |
推荐技术 |
|
问答 Agent |
FAQ、客服咨询 |
OpenAI SDK、Claude SDK、LangChain |
|
RAG Agent |
企业知识库问答 |
LlamaIndex、LangChain、Dify |
|
工具调用 Agent |
查询订单、生成报表 |
LangGraph、Semantic Kernel |
|
多 Agent 系统 |
研究、分析、协作 |
AutoGen、CrewAI、LangGraph |
|
工作流 Agent |
审批、工单、流程自动化 |
LangGraph、Temporal、n8n |
|
浏览器 Agent |
网页操作、自动填表 |
Playwright、Browser Use |
|
私有化 Agent |
内网和敏感数据场景 |
Ollama、vLLM、SGLang |
3 设计总体系统架构
AI Agent 通常由交互层、任务编排层、模型层、工具层、知识库、记忆系统以及安全监控模块组成。各模块应当职责清晰,避免把所有逻辑都写进 Prompt 中。

交互层负责接收文字、语音、图片和文件,也负责展示流式回答、工具调用状态以及人工确认界面。Agent 编排器是系统的控制中心,负责维护任务状态、安排执行顺序、判断是否继续调用工具以及处理异常。
模型层负责自然语言理解和决策,但不应直接连接数据库或拥有系统管理员权限。模型需要使用的外部能力,都应通过工具层暴露。知识库用于提供企业内部资料,记忆系统用于保存当前任务和用户偏好,安全模块则负责认证、授权、数据脱敏和操作审计。
4 选择模型与基础技术栈
模型选择应服务于任务,而不是盲目追求参数规模。需要综合考虑推理能力、工具调用能力、上下文长度、响应速度、成本、数据合规和部署方式。
|
选择因素 |
关注内容 |
对开发的影响 |
|
推理能力 |
能否理解复杂任务 |
影响计划和决策质量 |
|
工具调用 |
是否支持函数调用、结构化输出 |
影响系统稳定性 |
|
上下文长度 |
能处理多少历史信息 |
影响长文档和多轮对话 |
|
响应速度 |
首字延迟和整体延迟 |
影响用户体验 |
|
调用成本 |
输入、输出 Token 价格 |
影响运营费用 |
|
数据合规 |
是否允许企业数据发送到外部 |
影响部署方式 |
|
可控性 |
是否支持温度、输出约束等 |
影响结果一致性 |
技术栈可以根据团队已有能力进行选择。Python 适合人工智能、数据处理和快速原型开发;TypeScript 适合 Web 服务和前后端协同;Java 适合大型企业已有系统;Go 适合高并发基础服务。数据库可以使用关系型数据库保存业务数据和任务状态,Redis 保存缓存与会话,对象存储保存文件,向量数据库用于知识检索。
|
层级 |
主要职责 |
推荐技术 |
|
前端交互层 |
对话、文件上传、结果展示 |
React、Next.js、Vue、Nuxt |
|
API 层 |
鉴权、限流、接口管理 |
FastAPI、NestJS、Spring Boot、Kong |
|
Agent 层 |
Prompt、工具调用、状态和流程编排 |
LangGraph、LangChain、LlamaIndex |
|
模型层 |
模型调用、路由和成本控制 |
OpenAI、Claude、Gemini、LiteLLM |
|
数据层 |
业务数据、向量数据、缓存 |
PostgreSQL、pgvector、Redis、Milvus |
|
基础设施层 |
部署、监控、日志和安全 |
Docker、Kubernetes、Prometheus、Vault |
关于Agent 编排框架,LangChain 适合构建模型调用、Prompt 链、RAG、工具调用和基础 Agent。它开发速度快,适合原型和中小型应用。LangGraph 适合复杂、有状态、需要暂停恢复和人工审核的工作流。LlamaIndex 更适合文档解析、数据连接、索引构建和 RAG 应用,尤其适用于企业知识库。
对于简单 Agent,不一定需要复杂框架。直接调用模型 API,并自行实现状态机,通常更容易调试。只有当系统需要长流程、任务恢复、人工介入或多 Agent 协作时,才应引入相应的编排框架。
|
模块 |
推荐技术 |
|
前端框架 |
Next.js、React、Vue、Nuxt |
|
编程语言 |
TypeScript |
|
UI 组件 |
Ant Design、Element Plus、shadcn/ui |
|
状态管理 |
Zustand、Redux Toolkit、Pinia |
|
数据请求 |
React Query、Axios |
|
流式通信 |
SSE、WebSocket |
|
Markdown |
React Markdown、Markdown-it |
|
AI UI |
Vercel AI SDK |
5 设计 Prompt 和任务状态
Prompt 是 Agent 的行为规范,但它不能代替程序中的权限控制和业务规则。一个好的系统提示词应明确 Agent 的角色、目标、可使用的工具、回答依据、禁止事项、异常处理方式以及输出格式。
例如,订单 Agent 的基本规则可以是:
```text
你是企业订单助手,只能查询当前用户有权限访问的订单。
订单号缺失时先询问用户,不得猜测订单状态。
退款、取消订单等写操作必须获得用户明确确认。
工具返回失败时,应说明原因,不得编造结果。
最终回答应包含处理结论、依据和后续建议。
```
除了自然语言提示,还应尽量要求模型输出结构化结果。结构化输出可以减少解析错误,并便于程序进行参数验证。
{
"intent": "query_order",
"order_id": "A123456",
"need_confirmation": false,
"next_action": "call_get_order"
}
Agent 还需要维护任务状态。状态中可以记录用户输入、当前计划、已执行步骤、工具结果、待确认动作和错误信息。
|
状态内容 |
作用 |
|
session_id |
标识当前会话 |
|
user_id |
判断用户身份和权限 |
|
user_input |
保存原始需求 |
|
intent |
记录任务类型 |
|
plan |
保存执行计划 |
|
tool_results |
保存外部工具返回结果 |
|
pending_action |
记录等待确认的操作 |
|
error |
保存异常原因 |
|
completed |
判断任务是否结束 |
Prompt 应进行版本管理,并与业务代码分离。可使用 LangSmith、Langfuse、PromptLayer、Humanloop 或自建 Prompt Registry。
Agent 的输出应尽可能采用结构化格式,避免直接依赖不稳定的自然语言。
|
技术 |
用途 |
|
Pydantic |
Python 数据模型和响应校验 |
|
Zod |
TypeScript 参数和输出校验 |
|
JSON Schema |
模型结构化输出 |
|
OpenAPI |
工具接口定义 |
|
Guardrails AI |
输出格式和安全控制 |
|
Instructor |
将模型输出映射为结构化对象 |
6 开发工具调用能力
工具是 Agent 连接现实系统的接口。工具可以是搜索服务、数据库查询、文件解析、计算程序、邮件系统、CRM、ERP 或内部业务 API。工具定义越明确,模型越容易正确使用。
每个工具至少应包含名称、用途、输入参数、参数类型、必填字段、权限要求、返回结构和错误格式。工具参数必须由程序进行二次校验,不能直接信任模型生成的内容。
def get_order(order_id: str, user_id: str):
validate_order_id(order_id)
check_permission(user_id, order_id)
return order_service.query(order_id)
工具设计应遵循最小权限原则。查询订单的工具不应拥有删除订单的能力;生成报告的 Agent 不应自动修改财务数据。读操作和写操作最好分离,并给高风险工具增加确认机制。
|
操作类型 |
示例 |
推荐策略 |
|
只读操作 |
查询、搜索、统计 |
可自动执行 |
|
低风险写操作 |
创建草稿、生成报告 |
可自动执行并记录 |
|
中风险操作 |
创建工单、发送内部通知 |
可配置确认 |
|
高风险操作 |
退款、删除、付款、改权限 |
必须人工确认或审批 |
对于写操作,还应实现幂等机制。例如 Agent 因网络超时重复调用“创建工单”,系统不能因此产生两张相同工单。可以使用唯一请求编号、业务流水号或幂等键避免重复执行。
|
集成场景 |
推荐工具 |
|
API 服务 |
FastAPI、NestJS、Spring Boot |
|
工作流自动化 |
n8n、Temporal、Airflow、Prefect、Camunda |
|
浏览器操作 |
Playwright、Puppeteer、Browser Use |
|
消息队列 |
Kafka、RabbitMQ、NATS、BullMQ |
|
代码沙箱 |
Docker、Firecracker、E2B、gVisor |
7 建设企业知识库与 RAG
当 Agent 需要回答企业制度、产品文档、技术手册或合同内容时,应建设知识库。RAG 的基本过程是将文档解析、切分、向量化并存入检索系统;用户提问时,系统先检索相关内容,再把结果交给模型生成回答。

文档处理不能只关注纯文本,还要考虑表格、图片、页码、标题层级、附件和版本信息。对于扫描件,需要使用 OCR。文本切分应尽量保持语义完整,例如按照章节、标题和段落切分,而不是机械地按字符数量截断。
企业知识库尤其要重视权限过滤。即使某段内容与问题高度相关,如果当前用户没有访问权限,也不能提供给模型。回答最好附带文档名称、章节、页码或原文引用,使用户能够核验结论。
RAG 效果通常受到三个因素影响:文档质量、切分方式和检索策略。单纯使用向量检索未必最优,可以结合关键词检索、元数据过滤和重排序模型,形成混合检索。
|
环节 |
推荐技术 |
|
文档解析 |
Unstructured、PyMuPDF、Docling、MinerU、LlamaParse |
|
OCR |
PaddleOCR、Tesseract、Azure Document Intelligence |
|
Embedding |
BGE-M3、BGE-large-zh、Jina、OpenAI、Qwen |
|
向量数据库 |
pgvector、Qdrant、Milvus、Pinecone、Weaviate |
|
混合检索 |
Elasticsearch、OpenSearch、PostgreSQL |
|
重排序 |
BGE Reranker、Cohere Rerank、Jina Reranker |
|
RAG 框架 |
LlamaIndex、LangChain |
8 设计记忆和上下文管理
Agent 的记忆主要包括短期记忆、工作记忆和长期记忆。短期记忆保存当前对话,工作记忆保存任务执行过程,长期记忆保存用户明确允许系统长期保存的信息。
|
记忆类型 |
保存内容 |
典型存储方式 |
|
短期记忆 |
最近对话、当前问题 |
会话数据库、Redis |
|
工作记忆 |
计划、工具结果、中间变量 |
任务状态数据库 |
|
长期记忆 |
用户偏好、历史摘要 |
数据库、向量库 |
|
知识记忆 |
企业文档、制度、产品信息 |
文档库、向量数据库 |
不能把全部历史对话无限地发送给模型,否则会导致上下文过长、成本增加和回答变慢。系统应定期压缩历史内容,只保留与当前任务相关的事实、决定和未完成事项。
长期记忆必须遵循授权原则。用户应能够知道系统记住了什么,并可以修改或删除。敏感信息不应默认保存,更不能因为某次对话而永久写入共享记忆。
|
类型 |
推荐技术 |
典型用途 |
|
会话状态 |
Redis、PostgreSQL |
多轮对话 |
|
工作流状态 |
LangGraph Checkpointer |
暂停、恢复和重试 |
|
长期记忆 |
Mem0、Zep、Letta |
用户偏好和历史事实 |
|
向量记忆 |
Qdrant、pgvector、Milvus |
语义检索 |
|
缓存 |
Redis |
Prompt、模型响应和会话缓存 |
9 编排任务流程与控制执行循环
Agent 的执行过程通常是“理解需求—制定计划—调用工具—读取结果—继续执行或结束”。编排器需要限制最大步骤数、最大调用次数、总运行时间和 Token 消耗,避免出现无限循环或成本失控。

固定流程适合审批、报表、客服和数据查询;动态流程适合研究、分析和多来源信息整合。实际系统可以采用混合模式:主流程由程序控制,具体步骤由模型在限定范围内选择。
Agent 每执行一步,都应更新状态并留下记录。这样任务即使中断,也可以从最近的检查点恢复,而不必从头开始。
10 加入安全、权限与人工确认
安全能力必须在 Agent 设计初期加入,不能等系统上线后再补充。Agent 经常同时处理用户输入、内部数据和外部工具,因此必须防止越权访问、数据泄露、提示词注入和危险操作。
系统至少应具备身份认证、细粒度授权、租户隔离、敏感信息脱敏、操作审计和异常告警。模型只能提出工具调用意图,真正的权限判断必须由独立的程序完成。
外部网页和用户上传文件中可能包含恶意指令。系统应把这些内容视为不可信数据,而不是系统指令;工具访问范围也应由程序限制,例如只允许访问指定域名和指定数据库。
人工确认可采用以下流程:
```text
Agent 生成操作建议
↓
展示操作对象、参数和影响
↓
用户或管理员确认
↓
系统再次校验权限
↓
执行工具并记录审计日志
```
对于支付、退款、删除、发信、权限修改和生产系统操作,人工确认通常是必要的安全措施。
|
安全风险 |
推荐措施 |
|
Prompt Injection |
隔离系统指令、用户输入和检索内容 |
|
越权调用 |
RBAC、ABAC、OAuth2、OIDC |
|
敏感信息泄露 |
Presidio、正则脱敏、数据分类 |
|
密钥泄露 |
Vault、AWS Secrets Manager、Azure Key Vault |
|
代码执行风险 |
Docker、Firecracker、gVisor、E2B |
|
数据审计 |
操作日志、调用链追踪、审计数据库 |
|
内容安全 |
输入过滤、输出审核、违规检测模型 |
11 处理异常并验证结果
真实环境中的 API、数据库和模型都可能出错,因此 Agent 必须具备错误处理能力。常见异常包括参数错误、网络超时、权限不足、数据不存在、工具返回格式错误以及模型生成无效调用。
工具应使用统一错误结构,明确说明错误代码、用户可理解的提示和是否允许重试。临时网络错误可以有限重试,参数错误应让模型修正或向用户提问,权限错误应立即停止,连续失败则应转人工或结束任务。
模型生成的结果还需要经过验证。验证可以包括格式验证、业务规则验证和事实一致性验证。例如,退款金额不能超过订单金额,用户不能查看其他部门数据,报告日期不能晚于当前日期。金额、日期、统计数据等内容应尽量由程序计算,而不是让模型自由生成。
12 建立测试与评估体系
AI Agent 的测试不仅要看最终答案,还要检查它是否选择了正确工具、是否传入了正确参数、是否遵守了权限规则以及是否能从错误中恢复。
测试数据应包含正常输入、信息缺失、模糊问题、错误参数、权限不足、工具超时、恶意指令和多轮对话等情况。每次修改模型、Prompt、工具定义或检索策略后,都应使用固定测试集重新评估。
|
指标 |
含义 |
|
任务完成率 |
Agent 是否完成用户目标 |
|
工具选择准确率 |
是否调用了正确工具 |
|
参数正确率 |
工具参数是否正确 |
|
最终答案准确率 |
回答是否符合事实 |
|
检索召回率 |
是否找到了相关资料 |
|
引用正确率 |
引用是否真正支持结论 |
|
平均响应时间 |
用户等待时间 |
|
单任务成本 |
平均模型和工具费用 |
|
人工接管率 |
有多少任务需要人工处理 |
|
安全拦截率 |
危险请求是否被正确阻止 |
还可以让模型进行辅助评估,但涉及关键业务时,必须结合人工抽检、规则校验和真实业务结果进行综合判断。
|
测试类型 |
工具 |
主要内容 |
|
单元测试 |
pytest、Jest、Vitest、JUnit |
业务逻辑、工具和权限 |
|
集成测试 |
Testcontainers、Docker Compose |
数据库、模型和外部服务 |
|
RAG 评估 |
Ragas、DeepEval |
召回率、相关性和忠实度 |
|
Prompt 评估 |
Promptfoo、OpenAI Evals |
Prompt 版本对比 |
|
链路评估 |
LangSmith、Langfuse、Phoenix |
Agent 调用过程 |
|
端到端测试 |
Playwright |
前端和完整业务流程 |
13 部署、监控与持续优化
云端部署
适合快速上线和弹性扩展,可选择 AWS、Azure、Google Cloud、阿里云、腾讯云、华为云和火山引擎。
|
部署内容 |
推荐技术 |
|
容器化 |
Docker |
|
容器编排 |
Kubernetes |
|
网关 |
Kong、APISIX、Nginx |
|
数据库 |
RDS PostgreSQL、Cloud SQL |
|
对象存储 |
S3、OSS、COS、MinIO |
|
CI/CD |
GitHub Actions、GitLab CI、Argo CD |
|
GPU 推理 |
vLLM、SGLang、Kubernetes |
快速托管
原型项目可以使用 Vercel、Railway、Render、Fly.io、Hugging Face Spaces、Modal、Replicate、Dify Cloud 或 Flowise Cloud。
企业内网

Agent 上线后,系统必须记录完整的执行链路,包括请求编号、用户身份、模型版本、Prompt 版本、工具调用顺序、工具结果、最终输出、Token 消耗、延迟和错误信息。日志应进行脱敏,不能直接记录密码、身份证号、银行卡号等敏感数据。

生产监控应关注请求量、成功率、超时率、工具错误率、平均耗时、Token 消耗、单任务成本、循环次数和人工升级率。若某个工具错误率突然升高,或 Agent 的平均执行步骤明显增加,应及时排查。
发布时建议采用内部测试、小范围试用、灰度发布和逐步扩大范围的方式。高风险能力可以先只生成建议,不直接执行;稳定后再增加人工确认下的执行能力。
|
监控方向 |
推荐工具 |
|
LLM 调用 |
Langfuse、LangSmith、Helicone |
|
链路追踪 |
OpenTelemetry、Jaeger |
|
指标监控 |
Prometheus、Grafana |
|
日志管理 |
Loki、ELK、OpenSearch |
|
异常追踪 |
Sentry |
|
成本分析 |
LiteLLM、Portkey、Langfuse |
14 推荐的实际开发路径
一个可行的开发顺序是:先选择一个边界清晰的单一任务,完成最小可用版本;再加入工具调用和权限控制;随后接入知识库、记忆和多步骤流程;最后补充评估、监控、审计和灰度发布。
|
阶段 |
核心工作 |
目标 |
|
需求阶段 |
明确用户、任务和边界 |
确定做什么 |
|
原型阶段 |
接入模型和基础 Prompt |
验证可行性 |
|
工具阶段 |
接入数据库和业务 API |
让 Agent 能执行 |
|
知识阶段 |
建设 RAG 知识库 |
提供企业资料 |
|
流程阶段 |
增加状态、重试和恢复 |
支持复杂任务 |
|
安全阶段 |
加入权限、审计和人工确认 |
降低风险 |
|
评估阶段 |
建立测试集和指标 |
衡量真实效果 |
|
生产阶段 |
监控、灰度和持续优化 |
稳定运营 |
总体来看,开发 AI Agent 的核心过程可以概括为:
```text
明确业务目标
↓
选择合适的 Agent 类型
↓
设计系统架构
↓
选择模型与技术栈
↓
设计 Prompt 和任务状态
↓
开发工具调用能力
↓
建设知识库与记忆
↓
编排多步骤任务
↓
加入权限、安全和人工确认
↓
验证结果并处理异常
↓
测试评估、部署监控和持续优化
```
快速原型方案
|
模块 |
技术 |
|
前端 |
Next.js、Vercel AI SDK |
|
后端 |
Next.js API Routes |
|
Agent |
LangChain |
|
模型 |
OpenAI、Claude、通义千问 |
|
向量库 |
Chroma |
|
数据库 |
Supabase |
|
部署 |
Vercel |
适合 Demo、个人项目和产品验证。
中小型生产方案
|
模块 |
技术 |
|
前端 |
React、TypeScript、Ant Design |
|
后端 |
FastAPI |
|
Agent |
LangGraph |
|
知识库 |
LlamaIndex |
|
模型网关 |
LiteLLM |
|
数据库 |
PostgreSQL、pgvector |
|
缓存 |
Redis |
|
异步任务 |
Celery |
|
文件存储 |
S3、OSS、MinIO |
|
监控 |
Langfuse、Prometheus、Grafana |
|
部署 |
Docker、Kubernetes |
适合企业内部系统和中小型 SaaS 产品。
企业级方案
|
模块 |
技术 |
|
前端 |
Next.js、TypeScript |
|
API 网关 |
Kong、APISIX |
|
后端 |
FastAPI、Spring Boot |
|
Agent 编排 |
LangGraph、Temporal |
|
模型网关 |
LiteLLM、Portkey |
|
模型服务 |
Azure OpenAI、阿里云百炼、vLLM |
|
检索系统 |
Elasticsearch、Milvus |
|
数据库 |
PostgreSQL、Redis Cluster |
|
消息队列 |
Kafka |
|
身份认证 |
Keycloak、Auth0、Azure AD |
|
密钥管理 |
Vault、KMS |
|
监控 |
OpenTelemetry、Prometheus、Grafana |
|
评估 |
LangSmith、Ragas、Arize Phoenix |
|
部署 |
Kubernetes |
|
CI/CD |
GitHub Actions、GitLab CI、Argo CD |
适合高并发、多租户、强权限和核心业务系统。
总结,开发一个AI Agent的原则是:将AI Agent当成一个需要权限、状态、工具、数据、流程和监控的完整软件系统。先用确定性流程保证安全和稳定,再在必要位置引入模型的自主决策能力,通常能够获得更好的可靠性、可维护性和投入产出比。
更多推荐



所有评论(0)