AI Agent Application

AI Agent 应用是以 LLM 为推理核心、以工具调用为执行手段、以状态管理为控制基础的交互式智能应用。它不是聊天机器人的简单升级,而是一种全新的软件架构范式。

#type / concept #status / evergreen #tech / ai #tech / architecture

[!info] related notes

AI Agent Application

一句话定义

AI Agent Application 是以 LLM 为推理核心、以工具调用为执行手段、以状态管理为控制基础的交互式智能应用。它和传统应用的根本区别在于:控制流由模型动态决定,而不是由代码预先编写

它解决什么问题

传统应用的逻辑是确定性的:用户点按钮 → 触发预定义的函数 → 返回结果。但很多真实任务无法用确定性逻辑穷举:

  • 用户用自然语言描述复杂需求(“帮我分析这个数据集的趋势”)
  • 任务需要多步推理和动态决策(“先搜索相关信息,再整理成报告”)
  • 执行路径取决于中间结果(“如果检索到的内容不够,换个关键词再搜”)

AI Agent Application 让 LLM 成为”决策者”,由它决定调用哪些工具、以什么顺序执行、何时结束。

核心原理

与传统应用的本质区别

传统应用:
  用户输入 → 预定义逻辑 → 输出
  (控制流在代码中)

AI Agent 应用:
  用户输入 → LLM 推理 → 动态选择工具 → 执行 → 结果回传 LLM → 继续推理或输出
  (控制流由模型决定)

核心组成

一个 AI Agent Application 至少包含:

组件职责例子
LLM推理与决策GPT-4, Claude
Tools执行具体动作搜索、数据库查询、API 调用
Memory维护上下文和状态对话历史、用户画像、任务状态
Runtime管理执行循环超时、重试、并发、权限控制
Interface用户交互层Chat UI、审批界面、结果展示

Anthropic 的分类

Anthropic 在 “Building Effective Agents” 中区分了两类系统:

  • Workflow: 通过预定义代码路径编排 LLM 和工具(确定性控制流)
  • Agent: LLM 动态决定自己的执行流程(模型控制流)

两者不是非此即彼,而是可以组合。大多数生产系统是 workflow 的确定性骨架 + agent 的动态决策节点。

在 React + Go + Python AI Service 架构中的位置

┌─────────────────────────────────────────────┐
│  React 前端                                  │
│  - Chat UI (消息输入/输出)                    │
│  - Tool Call UI (工具调用状态展示)            │
│  - Human Approval UI (审批界面)               │
│  - Artifact Viewer (结果/文件查看)            │
│  - SSE Client (流式事件消费)                  │
└──────────────────┬──────────────────────────┘
                   │ HTTP / SSE

┌─────────────────────────────────────────────┐
│  Go 后端 (BFF 层)                            │
│  - Session & Message 管理                    │
│  - Context Builder (上下文组装)              │
│  - SSE Gateway (流式事件转发)                │
│  - Auth & RBAC (权限控制)                    │
│  - Audit Log (审计日志)                      │
│  - Event Contract (事件协议)                 │
└──────────────────┬──────────────────────────┘
                   │ gRPC / HTTP + SSE

┌─────────────────────────────────────────────┐
│  Python AI Service (Agent 引擎)              │
│  - Agent Runtime (执行循环)                  │
│  - Tool Registry & Executor                  │
│  - RAG Engine (检索增强生成)                  │
│  - Memory Manager (记忆管理)                 │
│  - LLM Provider Abstraction                 │
│  - Trace & Observability                    │
└─────────────────────────────────────────────┘

典型工程实现

一次 Agent 调用的完整流程

1. 用户在 Chat UI 输入: "帮我查一下最近一周的销售数据,做个趋势分析"
2. React 前端发送 POST /api/chat/message
3. Go 后端:
   a. 鉴权、创建 turn_id
   b. ContextBuilder 组装上下文(历史消息 + 用户画像 + 工具列表)
   c. 转发请求到 Python AI Service
   d. 开始 SSE 流式转发
4. Python AI Service:
   a. Agent Runtime 启动 Run
   b. LLM 推理: 决定先调用 query_database 工具
   c. Tool Executor 执行数据库查询
   d. 结果回传 LLM
   e. LLM 推理: 决定调用 create_chart 工具生成图表
   f. Tool Executor 生成图表
   g. LLM 生成最终文本回复
   h. Run 完成
5. Go 后端通过 SSE 逐步转发事件到前端
6. React 前端渲染: 文本 + 图表 + 工具调用状态

Agent Loop 伪代码

async def agent_loop(run: Run):
    messages = build_context(run)

    while not should_stop(run):
        # 1. 调用 LLM
        response = await llm.chat(messages, tools=registry.get_tools())

        # 2. 检查是否有 tool_call
        if response.has_tool_calls():
            for tool_call in response.tool_calls:
                # 3. 权限检查
                if not permission_check(tool_call):
                    yield ErrorEvent("权限不足")
                    continue

                # 4. 执行工具
                result = await tool_executor.execute(tool_call)

                # 5. 结果回传
                messages.append(tool_call_message(tool_call, result))
                yield ToolResultEvent(tool_call, result)
        else:
            # 6. 没有 tool_call,LLM 直接回复
            yield TextDeltaEvent(response.text)
            break

        # 7. 检查停止条件
        if run.step_count >= max_steps:
            yield ErrorEvent("超过最大步数")
            break

常见设计模式

  1. 单 Agent 模式: 一个 LLM + 一组工具,适合简单任务
  2. Multi-Agent 模式: 多个 Agent 协作,每个负责一个子任务
  3. Orchestrator-Worker 模式: 一个编排者 Agent + 多个工作 Agent
  4. Evaluator-Optimizer 模式: 生成 Agent + 评估 Agent 的闭环
  5. Human-in-the-loop 模式: 关键节点引入人类审批

常见坑

  1. 把所有逻辑都交给 Agent: 不是所有任务都需要 Agent,确定性逻辑应该用代码
  2. 工具太多: 工具数量超过 20 个时,模型选择准确率下降
  3. 没有停止条件: Agent 可能无限循环,必须设置 max_steps
  4. 忽略错误处理: 工具执行失败时的降级策略
  5. 上下文爆炸: 不控制历史消息长度,导致 token 超限

和其他概念的关系

总结

AI Agent Application 的本质是让 LLM 成为应用的决策层,而传统代码负责执行层和控制层。理解这个架构,才能做好 Agent 的工程化。

参考资料

创建于 2026/6/30 更新于 2026/7/15