1. 概述

大模型Agent凭借感知、规划、工具调用、记忆执行的能力,解决传统大模型只能做单次问答的局限,可自主拆解复杂业务目标,调用外部工具完成完整业务流程。本文聚焦业务场景下Agent落地,阐述核心架构模块,提供可运行简易代码示例,规避原型可用、生产不可用的常见问题,帮助开发者快速搭建最小可用Agent原型。

2. Agent核心架构

业务型Agent分为四大核心模块:

  • 记忆模块:分为短期上下文记忆与长期持久记忆,保存对话历史、中间推理结果、业务实体数据,防止上下文溢出。
  • 规划模块:接收用户目标,进行任务拆解、子任务排序,处理任务失败回退与重试逻辑,是Agent的大脑。
  • 工具调度模块:管理工具注册、参数校验、接口调用,负责把大模型输出转换成可执行函数,过滤非法调用参数。
  • 执行与输出模块:汇总子任务结果,整合生成面向用户的最终业务应答。

整体流转流程:用户输入 → 记忆加载 → 任务规划 → 工具选择调用 → 结果回写记忆 → 结果聚合输出。

3. 环境依赖

# 依赖安装
# pip install openai python-dotenv
from openai import OpenAI
import json
from typing import Dict, List

4. 简易业务Agent代码实现

client = OpenAI(base_url="your_model_endpoint", api_key="your_api_key")

class BusinessAgent:
    def __init__(self):
        self.short_memory: List[Dict] = []
        # 注册可用业务工具
        self.tools = {
            "query_order": self.query_order_info,
            "calculate_discount": self.calc_discount
        }

    def query_order_info(self, order_id: str) -> str:
        """模拟查询订单业务工具"""
        return f"订单[{order_id}]:已发货,预计2个工作日送达"

    def calc_discount(self, total_amount: float) -> str:
        """模拟计算优惠工具"""
        discount = total_amount * 0.9 if total_amount > 100 else total_amount
        return f"原价{total_amount},优惠后金额{discount:.2f}"

    def call_llm_plan(self, user_query: str) -> dict:
        prompt = f"""
你是业务Agent规划器,根据用户需求判断需要调用哪个工具,返回JSON格式。
可用工具:
query_order(order_id): 查询订单信息
calculate_discount(total_amount): 计算订单优惠
无工具则返回{{"tool":null,"params":{{}}}}
用户问题:{user_query}
历史上下文:{json.dumps(self.short_memory, ensure_ascii=False)}
只输出JSON,不要额外内容。
        """
        resp = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role":"user","content":prompt}],
            temperature=0
        )
        return json.loads(resp.choices[0].message.content.strip())

    def run(self, user_input: str) -> str:
        self.short_memory.append({"role":"user","content":user_input})
        plan_result = self.call_llm_plan(user_input)
        tool_name = plan_result.get("tool")
        params = plan_result.get("params", {})

        if tool_name and tool_name in self.tools:
            tool_out = self.tools[tool_name](**params)
            self.short_memory.append({"role":"tool","content":tool_out})
            final_prompt = f"结合工具输出{tool_out},简洁回答用户:{user_input}"
            final_resp = client.chat.completions.create(
                model="gpt-4o-mini",
                messages=[{"role":"user","content":final_prompt}],
                temperature=0
            )
            answer = final_resp.choices[0].message.content.strip()
        else:
            answer = "无需调用工具,大模型直接应答:" + user_input

        self.short_memory.append({"role":"assistant","content":answer})
        return answer

# Agent调用示例
if __name__ == "__main__":
    agent = BusinessAgent()
    res = agent.run("帮我查询订单OD2026001")
    print(res)

5. 业务落地关键注意事项

  1.  工具参数校验:生产环境必须增加参数类型、范围校验,防止大模型输出异常参数引发接口报错。示例代码仅为原型,缺少完整异常捕获。
  2. 记忆裁剪策略:短期记忆不能无限累加,超过token阈值后做摘要压缩,避免上下文超限。
  3. 规划容错:大模型会输出错误工具名、错误参数,增加重试次数上限,防止死循环调用工具。
  4. 权限隔离:业务Agent对接内部接口时,增加权限控制,禁止Agent随意执行高危写操作,优先使用只读工具。


6. 总结

本文实现了具备记忆、规划、工具调用能力的最小业务Agent原型。生产环境中还需要扩展长期向量记忆库、多步复杂任务规划、日志埋点、调用鉴权等模块。Agent落地不在于模型能力有多强,而在于约束、容错、安全机制的完善,才能把Demo能力转化为稳定可用的业务系统。

  最后说一句,技术成长不只是写代码,职业规划和自我包装同样重要。我整理了一份简历、面试和职业规划的学习资料,适合想在职场上走得更远的朋友看看。

  资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

AI大模型资料展示 1

AI大模型资料展示 2

AI大模型资料展示 3

如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐