首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >大模型 Agent 开发从专业角度:架构、代码与生产级实践

大模型 Agent 开发从专业角度:架构、代码与生产级实践

原创
作者头像
用户12339161
发布于 2026-09-29 10:26:11
发布于 2026-09-29 10:26:11
80
举报

大模型 Agent 不是“会聊天的机器人”,而是能感知目标、规划步骤、调用工具、根据反馈迭代的智能体。专业开发的核心,不是把 Prompt 写得更花哨,而是把不确定性关进工程框架:状态可追踪、工具可管控、失败可恢复、成本可约束。

一、Agent 的核心架构

一个可落地的 Agent 通常包含四层:

  1. 规划层:把用户目标拆成子任务,决定下一步。
  2. 记忆层:短期对话上下文 + 长期向量检索。
  3. 工具层:函数调用、API、数据库、代码执行沙箱。
  4. 执行循环:LLM 决策 → 调用工具 → 回填观察 → 继续推理,直到产出最终答案。

主流框架有 LangChain/LangGraph、AutoGen、CrewAI、OpenAI Assistants API。但无论用哪个,底层都是“ReAct 循环”的变体。

二、代码实战:从零实现一个工具调用 Agent

以下代码使用 OpenAI Python SDK 实现一个最小可运行 Agent,包含计算器和天气查询两个工具。

代码语言:javascript
复制
import json, os, re
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "calculator",
            "description": "计算数学表达式,例如 (12+8)*3",
            "parameters": {
                "type": "object",
                "properties": {"expression": {"type": "string"}},
                "required": ["expression"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "查询指定城市天气",
            "parameters": {
                "type": "object",
                "properties": {"city": {"type": "string"}},
                "required": ["city"]
            }
        }
    }
]

def calculator(expression: str) -> str:
    if not re.fullmatch(r"[0-9+\-*/().\s]+", expression):
        return "表达式包含不允许的字符"
    try:
        return str(eval(expression, {"__builtins__": {}}, {}))
    except Exception as e:
        return f"计算失败: {e}"

def get_weather(city: str) -> str:
    data = {"北京": "晴,25℃", "上海": "多云,28℃", "深圳": "阵雨,30℃"}
    return data.get(city, f"暂无{city}的天气数据")

TOOL_MAP = {"calculator": calculator, "get_weather": get_weather}

def run_agent(user_input: str, max_steps: int = 5):
    messages = [
        {"role": "system", "content": "你是严谨助手。需要计算或天气时调用工具,不要编造。"},
        {"role": "user", "content": user_input}
    ]

    for _ in range(max_steps):
        resp = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=messages,
            tools=TOOLS,
            tool_choice="auto",
            temperature=0.2
        )
        msg = resp.choices[0].message
        messages.append(msg)

        if not msg.tool_calls:
            return msg.content

        for call in msg.tool_calls:
            fn = call.function.name
            args = json.loads(call.function.arguments)
            result = TOOL_MAP[fn](**args)
            messages.append({
                "role": "tool",
                "tool_call_id": call.id,
                "content": result
            })

    return "达到最大步数,任务未完成"

if __name__ == "__main__":
    print(run_agent("北京天气怎么样?顺便算一下 (12+8)*3"))

这段代码展示了 Agent 的基本闭环:LLM 决策 → 工具执行 → 结果回填 → 继续推理。生产环境需要把 eval 替换为安全计算库,把模拟天气换成真实 API,并加入超时、重试和限流。

三、生产级关键点

1. 状态管理:用 LangGraph 等框架把循环建模为状态图,支持中断、恢复、人工审批。

2. 工具安全:工具必须最小权限,代码执行要放沙箱,禁止直接执行用户输入。所有工具调用记录审计日志。

3. 可观测性:记录每步的 prompt、token、耗时、工具入参出参。可接入 LangSmith、OpenTelemetry。

4. 成本控制:设置最大步数、最大 token、单次预算;小模型做路由,大模型做复杂推理。

5. 评估体系:用固定测试集评估任务完成率、工具调用准确率、幻觉率,而不是只看“回答像不像人”。

6. 合规红线:遵守平台条款、隐私法规、开源许可证;不开发用于欺诈、攻击、骚扰的 Agent;AI 生成内容按需标注。

四、总结

大模型 Agent 的专业开发,本质是把 LLM 的不确定性封装进可观测、可控制、可恢复的工程系统。先跑通一个最小工具调用循环,再逐步加入记忆、规划、多 Agent 协作和生产级治理。代码不复杂,难的是对边界、成本和安全的持续把控。从今天起,把你的第一个 Agent 循环写出来,比看十篇概念文章更有价值。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、Agent 的核心架构
  • 二、代码实战:从零实现一个工具调用 Agent
  • 三、生产级关键点
  • 四、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档