新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何构建一个 AI Agent(一)

发布时间:2026/10/1 13:19:00来源:尧图网络
如何构建一个 AI Agent(一)
上次我认真写博客是好久以前 ChatGPT 才发布没多久写 YOLO v8 配置教程。更早研究 YOLO v4 的时候没想起来写博客世界还不存在现在大家口头意义上的“AI”那个时候 YOLO 这类表现超模的卷积神经网络就已经是前沿 AI 的代表了。现在恐怕愿意跟着博客教程学习卷积神经网络而不是直接询问“AI”的同学也越来越少了。世界正在巨变非常之巨感慨感慨。Agent 的基本概念首先什么是 AI Agent一般同学在找工作或者阅读 OpenAI / Anthropic 的博客的时候接触到的 Agent 概念就是指 AI Agent。设计一个 Agent 意味着设计一个由 LLM 使用工具观察工具执行结果根据结果判断如何进行下一步动作以满足用户提出的需求的软件。我之所以开头使用 AI Agent 这个词是因为还存在不使用 AI 进行工作的传统 Agent例如自动备份程序、服务器监控程序等。接下来我将会一律使用“Agent”指代“AI Agent”基于我开头描述的的 Agent 的工作方式直观地可以想象到 Agent 中的两个重要模块LLM 和 Tools。语言模型能做的是处理语言的变换有了工具其才能将语言变为操作。霍金有一个很聪明的大脑但他只能指挥别人做事。假设世界上不存在能够供霍金指挥的人那就倒霉了。一个语言模型和工具协作的示意{ // 此处发送工具列表 tools: [ { type: function, function: { name: open_excel, description: 使用这个函数可以打开 Excel返回执行结果 succeed / failed, parameters: { // 此处应该描述该工具参数填写的格式 } } } }, { type: function, function: { name: open_word, description: 使用这个函数可以打开 Word返回执行结果 succeed / failed, parameters: { // 此处应该描述该工具参数填写的格式 } } } }, ], messages: [ // 此处发送给模型的消息用户通过 Agent 发起的第一轮交互 { role: user, content: 我有一篇论文要写帮我打开 Word }, // 此处模型返回的工具调用请求模型返回的第一轮响应 { role: assistant, content: null, tool_calls: [ { id: 001, type: function, function: { name: open_word, arguments: {此处应该填写传给工具的参数略} } } ] }, // 此处工具执行后返回的值工具执行后通过 Agent 返回的第二轮交互 { role: tool, tool_call_id: 001, content: { succeed } }, // 此处模型返回的消息模型对工具执行结果返回的第二轮响应 { role: assistant, content: 已经为你打开了 Word, }, ] }你的 Agent 需要在每一次和模型产生交互的时候尝试解析模型返回的“function_call”字段值如果发现存在可解析的 function就执行它。所以让模型使用工具需要4️⃣步给模型发消息的时候附上你准备好的工具模型会自己决定要不要用等待模型返回消息解析模型返回消息中的工具调用字段并执行将执行结果发送给模型光使用了还不够你在 Agent 中编写的任何工具都必须返回执行结果。例如 openWord() 执行后必须返回 succeed 或 failed然后将这个结果拼接到上下文返回给模型否则模型不知道执行状态无法对结果进行决策例如向你报告“活干完了”或者反省“执行失败了我规划个别的办法”。相信敏锐的你已经发觉了这里存在一个循环。如果模型认为任务还有前进的必要则因为存在这个循环模型会一直工作下去。这就是 Agent 完成任务的基本原理只要你提供的工具对于完成任务是完备的模型会为你达到目标。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

高频注入无感FOC零低速转子位置估计原理与代码实现 2026/10/1 15:04:26

高频注入无感FOC零低速转子位置估计原理与代码实现

做无感FOC的,十有八九都被同一个问题卡过:电机刚上电或者转速很低的时候,反电动势太小,滑模观测器也好、磁链观测器也好,根本提取不出有效的位置信息。这时候你就必须让电机先动起来,而动起来的前提是先知道…

阅读更多 →
RL扩展的“难路”:从数据到训练框架的关键设计解析 2026/10/1 15:04:26

RL扩展的“难路”:从数据到训练框架的关键设计解析

RL扩展(Scaling Up RL)最近是大模型圈子里最热的话题之一。小米这份《MiMo-V2.6: The Hard Road to Scaling Up RL》技术报告,标题里“The Hard Road”这几个字特别打动我——做过RL训练的人都知道,这玩意儿真不是把训练脚本跑起来…

阅读更多 →
芯片按功能分类有哪些?数字/模拟/混合信号芯片选型实战指南 2026/10/1 15:04:20

芯片按功能分类有哪些?数字/模拟/混合信号芯片选型实战指南

很多朋友问过我一个看起来非常基础的问题:芯片按功能分可以分为哪些类型呢?刚入行那会儿我也觉得,这问题翻翻教科书就能回答。但真到了项目选型、调板子、看Datasheet、跟供应商对参数的时候才发现,把芯片按功能分清楚&#xff0c…

阅读更多 →
RK3568+OpenHarmony下I2C实战排障:从设备树到逻辑分析仪 2026/10/1 15:04:20

RK3568+OpenHarmony下I2C实战排障:从设备树到逻辑分析仪

1. I2C不是“插上线就能用”的总线,它是嵌入式系统里最常被低估的“精密协作者” I2C总线在OpenHarmony设备开发中,尤其是RK3568这类高性能国产SoC平台上,从来就不是一句“配置一下设备树、调个ioctl”就能搞定的软柿子。它表面看是两根线&am…

阅读更多 →
在线高通滤波器消除慢变基线游走:从原理到参数整定实战 2026/10/1 15:04:20

在线高通滤波器消除慢变基线游走:从原理到参数整定实战

做连续信号处理的朋友,十有八九被“慢变基线游走”坑过:信号形态明明很正常,但整体数值会像潮水一样缓慢抬升又回落,幅度大得离谱,频率却低得可怜。我之前做连续脉搏波采集时就被这东西熬过好几个通宵,频域…

阅读更多 →
通义灵码带你玩转开发者常用的MCP:从配置到验证的完整实践 2026/10/1 15:04:20

通义灵码带你玩转开发者常用的MCP:从配置到验证的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉