前言

最近几年,AI 应用开发逐渐从简单的“调用聊天接口”向 AI Agent(智能体) 发展。

普通的大模型应用通常是:

用户

模型

回答

而 Agent 的基本思路则是:

用户提出任务

大模型分析任务

判断是否需要调用工具

执行工具

获取结果

继续分析

生成最终结果

这也是为什么现在很多 AI 应用开始从单纯的聊天机器人,逐渐转向 AI Agent。

本文不使用复杂框架,而是使用 Python 手动实现一个最基础的 Agent 思路,帮助刚开始学习 AI Agent 开发的人理解它的基本结构。在这里插入图片描述

一、普通的大模型调用有什么局限?

假设我们让大模型回答:

“现在黄金价格是多少?”

如果只是普通的模型调用,大模型实际上并不知道当前实时价格。

它只能根据训练数据或者上下文进行回答。

这时候就需要引入:

工具

例如:

查询行情
查询天气
搜索网页
读取数据库
执行Python代码
读取文件

于是模型就从:

只负责回答问题

变成:

负责判断应该使用什么工具

这就是 Agent 的一个核心特点。

二、一个最简单的 Agent 可以怎么设计?

我们先把系统拆成几个部分:

用户输入

Agent

任务分析

选择工具

执行工具

返回结果

Agent生成最终答案

例如用户:

查询某个期货品种最近的价格

Agent可能判断:

这是一个行情查询任务

然后选择:

get_price()

执行工具以后得到:

价格 = 3250

最后交给模型生成自然语言答案。

三、定义一个简单的工具

先使用 Python 写一个模拟行情查询工具:

def get_market_price(symbol):
prices = {
“RB”: 3250,
“AU”: 768.5,
“CU”: 81500
}

return prices.get(symbol)

测试:

price = get_market_price(“RB”)

print(price)

输出:

3250

实际项目中,这里可以替换成:

行情API
数据库
本地CSV
Redis
实时行情服务
四、让 Agent 判断是否需要工具

最简单的方式,可以先用规则模拟:

def agent(user_input):

if "价格" in user_input:
    return "market_price"

if "行情" in user_input:
    return "market_price"

return "chat"

测试:

result = agent(“查询RB价格”)

print(result)

得到:

market_price

当然,真正的 AI Agent 并不会只靠 if 判断。

通常会让大模型自己判断:

用户任务

LLM

选择工具
五、使用结构化工具调用

一个比较典型的工具定义可以表示成:

tools = [
{
“name”: “get_market_price”,
“description”: “查询指定期货品种的最新价格”,
“parameters”: {
“type”: “object”,
“properties”: {
“symbol”: {
“type”: “string”,
“description”: “期货品种代码”
}
},
“required”: [“symbol”]
}
}
]

模型看到这个工具以后,就知道:

如果用户需要查询期货价格
可以调用 get_market_price
六、Agent 的核心循环

一个非常重要的概念是:

Think

Act

Observe

Think

也就是:

分析

行动

观察结果

再次分析

例如:

用户:

查询RB价格,并判断当前是否上涨

Agent可能执行:

第一步:

调用行情工具

得到:

RB = 3250

然后继续:

第二步:

读取历史数据

判断趋势

最后:

第三步:

生成回答

这就是 Agent 和普通问答应用比较明显的区别。

七、使用 Python 实现一个简单 Agent

可以先写一个最简单的执行器:

def run_tool(tool_name, arguments):

if tool_name == "get_market_price":
    return get_market_price(
        arguments["symbol"]
    )

raise ValueError(
    f"未知工具:{tool_name}"
)

然后:

def run_agent(tool_name, arguments):

result = run_tool(
    tool_name,
    arguments
)

return result

调用:

result = run_agent(
“get_market_price”,
{
“symbol”: “RB”
}
)

print(result)

输出:

3250
八、为什么工具系统比写死功能更重要?

如果以后增加:

查询行情
查询新闻
查询数据库
计算指标
执行Python
发送通知

如果全部写成:

if …
elif …
elif …
elif …

代码很快就会变得难以维护。

更合理的方式是建立:

Tool Registry

例如:

TOOLS = {
“get_market_price”: get_market_price,
“calculate_ma”: calculate_ma,
“search_news”: search_news
}

执行时:

def execute_tool(name, args):

tool = TOOLS.get(name)

if tool is None:
    raise ValueError(
        f"工具不存在:{name}"
    )

return tool(**args)

这样以后增加工具就简单很多。

九、AI Agent 和普通 Python 程序有什么区别?

传统程序:

程序员

提前定义流程

程序执行

Agent:

程序员定义工具

大模型理解任务

动态选择工具

执行

所以 Agent 的核心并不是:

“用了一个大模型。”

而是:

让模型具备根据任务选择和使用工具的能力。

十、AI Agent 适合哪些场景?

其实很多传统程序都可以增加 Agent 层。

例如量化研究:

用户:

分析RB最近一个月的趋势

Agent可以:

查询历史行情

计算均线

计算MACD

计算ATR

分析趋势

生成报告

这比单纯让大模型“猜行情”更加合理。

因为:

大模型
负责理解和组织任务

Python
负责计算

数据系统
负责提供数据

三个部分各司其职。

十一、不要让大模型负责精确计算

这是开发 AI Agent 时非常重要的一点。

例如:

收益率

最大回撤

均线

波动率

Sharpe

ATR

这些最好交给 Python。

不要让大模型自己进行大量数字计算。

合理架构应该是:

用户

AI Agent

Python工具

精确计算

结果返回模型

模型解释结果

这样可靠性会明显提高。

十二、一个简单的 AI + Python 架构

如果以后继续开发,可以逐步演变成:

            用户
              ↓
          AI Agent
              ↓
    ┌─────────┼─────────┐
    ↓         ↓         ↓
  行情工具   数据工具   计算工具
    ↓         ↓         ↓
  行情API    数据库     Python
    └─────────┼─────────┘
              ↓
           分析结果
              ↓
           AI回答

这种架构其实已经可以作为很多 AI 数据分析项目的基础。

十三、总结

一个最基础的 AI Agent,可以理解为:

大模型
+
工具
+
工具执行器
+
任务循环

核心流程:

用户提出任务

模型理解任务

选择工具

Python执行工具

返回结果

模型继续分析

输出最终结果

对于刚开始学习 Agent 开发的人来说,我并不建议一开始就堆很多框架。

可以先理解:

LLM
Tool
Tool Calling
Agent Loop
Memory
RAG

这几个核心概念。

理解这些以后,再学习 LangChain、LlamaIndex、AutoGen 等框架,会容易很多。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐