前言
上节,我们实现了简单的RAG功能,你会发现它好像只能是一个知识助手,仅限于文字功能的回复和言辞组织,并不能实际执行一些功能帮助我们减少实际的行动工作。
比如让大模型生成的小说能自动写入WORD中,或者发布到CSDN上并发布似乎只能靠我们自己的双手复制粘贴到具体文档中保存,它好像完成不了。
那么有没有可能具体的执行我们个性化要求的执行部分它也能够完成了?当然这就需要agent来完成。它就已经不再是一个普通聊天机器人了。
Agent指能够自主计划行动顺序或代表他人执行任务的实体,其形态包括人类或智能软件;
在计算机领域中,Agent特指能够感知环境并自主做出决策的程序,典型代表如具备自主性与学习能力的聊天机器人,执行服务器的命令或者API完成具体文件操作或者服务执行,从而让我们的具体想法能够落地实现;
多个agent的管理则就需要WorkBuddy作为AI服务平台,提供覆盖办公全场景的专家级AI服务; 用户可通过下载体验多专家协作功能,例如同步处理设计与开发任务,从而实现工作效率提升。这就是后面的事情了,这章我们就简单说说agent.
一个Agent有哪几部分组成
Agent 拆开来看,你会发现它并没有想象中那么神秘。
一个最基础的 AI Agent,本质上就是:
大模型
+
Prompt
+
Tools
+
Memory
+
Agent Loop
可以看出,依然是在大模型基础提供额外的私有化服务。至于如何执行多个私有化服务API调用顺序则是由大模型按顺序返回给私有的agent的,agetn按照返回的私有化api执行后再通过提示词返回给大模型结果,大模型继续后续的语言组织工作。
各个组件调用关系
+-------------------+
| Agent | (主控制器,协调各模块,Agent框架和规范定义的)
+-------------------+
|
| 调用
v
+-------------------+ +-------------------+
| Planner | <--> | Memory |
| (决策与规划模 ) | | (短期/长期记忆) |
+-------------------+ +-------------------+
|
| Planner由LLM做出决定执行工具调用顺序
v
+-------------------+
| Tool | (工具集合由私有化服务提供,如计算器、搜索)
+-------------------+
|
| 执行并结果返回(可以使用私有化服务提供的资源:磁盘,网络,shell命令,以及其他服务调用功能)
v
+-------------------+
| Environment | (外部环境,如文件系统、网络)
+-------------------+
可以看出能够做的就是按照Agent规范提供私有化服务和调用LLM大模型。
下面使用 Python,从 0 开始写一个真正可以运行的 Agent。
本文所有 AI 请求都使用 OpenAI 兼容协议:
OpenAI SDK 调用模型
OpenAI 的 GPT 系列模型影响了大模型技术发展的开发范式和标准。大部分模型,例如 Qwen、ChatGLM、DeepSeek 等模型,它们的使用方法和函数调用逻辑基本遵循 OpenAI 定义的规范,都可以使用OpenAI SDK来进行调用。
OpenAI的接口调用方式也经历的一些转变,其中最为经典的一套API,称之为ChatCompletionsAPI(官方文档链接:https://platform.openai.com/docs/api-reference/chat)。
而在2025年年中,OpenAI又发布了一套新的API: ResponsesAPI(官方文档链接:https://platform.openai.com/docs/api-reference/responses)。
ResponsesAPI是当前OpenAI中最先进的一套API,对ChatCompletionsAPI做了多处升级,例如,支持服务端内置工具调用,支持服务端维护状态(短期记忆)
这里使用阿里云的千问账号调用千问模型,因为它也是按照OpenAI的接口规范提供的api调用服务
# pip install openai
from openai import OpenAI
import os
from dotenv import load_dotenv
API_KEY = "你的阿里云百炼API Key"
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
client = OpenAI(
base_url=BASE_URL , # 平台提供的 URL
api_key=API_KEY , # 平台提供的 API-Key
)
#### ChatCompletionsAPI
completion = client.chat.completions.create(
model="gpt-4o-mini", # 模型名称
messages=[{
"role": "user", "content": "将'你好'翻译成意大利语"}], # 用户输入
)
print(completion.choices[0].message.content)
#### ResponsesAPI
response = client.responses.create(
model="gpt-5.1",
input="中国国内今天发生了哪些大事儿?",
tools=[{
"type": "web_search"}] # 可以自动调用内置工具
)
print(response.output_text)
同一个公司的API尚且有不同的版本,而不同公司的API更是各有各的风格。
实现一个简单的Agent组件
我们知道大模型只能使用它自己的功能如果我们需要一个它不存在的功能,比如查看本公司内网的服务订单审批情况。那么它本身就无法实现。
这就需要我们提供给工具给大模型,让它决定是否需要调用我们的工具来完成这个操作。流程如下
用户
↓
大模型
↓
判断是否需要工具
↓
调用工具
↓
获得工具结果
↓
继续交给大模型
↓
生成最终答案
我们实现一个小型的Agent。这里我们提供四个私有工具服务。
我们的拥有四个工具:
calculator
计算数学表达式
get_current_time
获取当前时间
save_note
保存笔记
get_weather
联网查询天气
可以直接告诉 Agent:
计算100*99 的结果
查询当前时间
计算100*99 的结果写入笔记文件中
我当前在武汉,查询当前时间和最新的天气情况,并把结果保存到笔记中
重点:我们不会在 Python 代码里写死调用顺序。而是让 AI 自己决定先做哪一步后做哪一步,这才是 Agent。
实际效果如下图:
它会自行计划谁先执行,然后按计划顺序执行完成

时间和天气结果保存到文件如下图

OpenAI api调用
from openai import OpenAI
# -------------------------- 配置API参数 --------------------------
# 替换为你自己的API Key
API_KEY = "你的API Key"
# 阿里云百炼的OpenAI兼容接口地址
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
# 1. 初始化OpenAI客户端
client = OpenAI(
api_key=API_KEY,
base_url=BASE_URL,
)
# 2. 调用通义千问模型
completion = client.chat.completions.create(
model="qwen-plus", # 指定模型为通义千问Plus
messages=[
{
"role": "system", "content": "You are a helpful assistant."},
{
"role": "user", "content": "你是谁?"}
]
)
# 3. 输出完整的JSON响应
print("完整响应:")
print(completion.model_dump_json())
print("-" * 50)
# 4. 仅输出模


1343

被折叠的 条评论
为什么被折叠?



