基于 ReAct 模式的 Harness 实现细节
基于 ReAct 模式的 Harness 实现细节
关键词:ReAct模式, Harness大模型应用框架, 大模型推理与行动协同, 工具调用, LLM应用开发, 提示工程, 状态管理
摘要:本文以「大模型像只会空想的探险家?不,ReAct+Harness让它变成会看地图、会用工具的专业向导」为核心故事线,一步一步拆解 ReAct 模式的本质原理,再结合行业级大模型应用开发框架 Harness(LangChain 的竞品与创新者,专为生产级应用打造的可观测、可调试、可扩展框架) 的核心源码片段,用小学生能听懂的“地图探险”类比贯穿始终,讲解从 ReAct 提示词的设计逻辑,到 Harness 中 Agent、Tool、State、Executor 四大核心组件的协同架构,最后给出一个完整的生产级“餐厅预订+路线规划”Agent 实战项目,并附上可复制的代码、最佳实践以及未来趋势分析。
背景介绍:从“只会空想的探险家”到“专业向导”的蜕变
目的和范围
你有没有过这样的经历:让大模型帮你订个明天晚上7点、人均100以内、离地铁站步行5分钟、有儿童座椅的川菜馆?大模型可能会先噼里啪啦空想一堆川菜馆的名字,然后说“抱歉我没有实时数据,订不了”——这就是传统「仅推理(Reasoning-Only)」大模型的痛点:它活在自己的知识库里,像个只会背地图册的探险家,一到陌生城市(处理实时/动态/专业领域问题)就抓瞎。
后来有人想,能不能让大模型先推理为什么(找川菜馆需要什么条件)、再决定怎么做(用大众点评查实时数据、用高德查步行距离、用商家API订座)、最后观察结果对不对(订到的川菜馆人均是不是真的100以内),错了就修正——这就是ReAct(Reasoning + Acting)模式的核心:把推理和行动绑定在一起,让大模型从「知识背诵者」变成「问题解决者」。
但光有 ReAct 模式的理念还不够,要把它落地成生产级应用,你得解决一堆麻烦事:
- 怎么统一管理大模型的思考状态?
- 怎么安全、高效地调用各种工具(API、数据库、本地脚本)?
- 怎么调试大模型的思考过程(万一它“走火入魔”重复问同一个问题怎么办)?
- 怎么让多个工具、多个 Agent 协同工作?
- 怎么监控生产环境下的 Agent 性能(比如响应时间、工具调用次数、失败率)?
这就是 Harness 框架的用武之地:它是 Google Cloud 推出的、专为生产级 LLM 应用打造的可观测、可调试、可扩展的 Agent 开发框架(虽然 LangChain 更早火,但 Harness 在企业级安全、可观测性、成本管理、多Agent编排上有明显优势)。
本文的目的就是:
- 让你彻底理解 ReAct 模式的本质,不会再被“ReAct就是加个工具调用”这种片面说法忽悠;
- 让你深入掌握 Harness 框架中实现 ReAct 模式的核心源码逻辑,不是只会调 API,而是知道为什么这么调;
- 让你能用 Harness 从零搭建一个生产级可用的 ReAct Agent,并学会调试、监控它;
- 让你了解 ReAct+Harness 在实际行业中的应用场景,以及未来的发展趋势。
本文的范围是:
- 聚焦于 Harness LLM Ops 平台中的 Agent Core 模块(因为 Harness 是个大平台,还包含 CI/CD、Feature Flags 等,我们只讲和 ReAct 实现相关的部分);
- 主要使用 Python 作为示例语言(因为 Harness 的 Python SDK 最成熟,覆盖的场景最多);
- 工具调用主要使用 公开的免费 API(比如 OpenWeatherMap、Google Maps Geocoding 模拟版、大众点评点评模拟版),方便你直接复制运行;
- 不涉及 Harness 的多Agent编排(比如 Multi-Agent Task Orchestration,这个是高级功能,我们放在未来发展趋势里讲)。
预期读者
本文的预期读者是:
- 对大模型应用开发感兴趣的初级/中级程序员:你不需要懂复杂的深度学习算法,只要会写 Python 代码,用过 OpenAI/Claude 等大模型 API 即可;
- 想把 ReAct 模式落地成生产级应用的全栈工程师/架构师:你需要了解企业级大模型应用的核心痛点(安全、可观测性、成本),以及 Harness 是怎么解决这些问题的;
- 想了解 ReAct 模式本质原理的AI爱好者/研究者:你可以跳过实战部分,重点看核心概念与联系、核心算法原理与源码解读部分;
- 正在选型大模型应用开发框架的技术负责人:你可以对比 Harness 和 LangChain 的实现细节,看看哪个更适合你的团队。
文档结构概述
为了让你像玩“地图探险”游戏一样,一步一步跟着我们学习,本文的结构设计如下:
- 背景介绍:这是“游戏的开场动画”,告诉你为什么需要 ReAct+Harness,以及本文会讲什么、不会讲什么;
- 核心概念与联系:这是“游戏的新手教程”,用“地图探险”的类比,彻底讲清楚 ReAct 模式、Harness 四大核心组件(Agent、Tool、State、Executor)的本质,以及它们之间的关系;
- 核心算法原理 & 具体操作步骤:这是“游戏的攻略本”,先讲 ReAct 模式的通用算法,再结合 Harness 的核心源码,一步一步拆解它的实现细节;
- 数学模型和公式 & 详细讲解 & 举例说明:这是“游戏的数值设计手册”,用数学公式(Markov 决策过程、提示工程的信息增益)来量化 ReAct 模式的工作原理,让你知其然更知其所以然;
- 项目实战:生产级“餐厅预订+路线规划”Agent:这是“游戏的实战关卡”,从环境搭建、功能设计、架构设计、核心实现,到调试、监控,一步一步教你从零搭建一个可用的 ReAct Agent;
- 实际应用场景:这是“游戏的开放世界地图”,告诉你 ReAct+Harness 在医疗、金融、教育、电商等行业的实际应用;
- 工具和资源推荐:这是“游戏的装备商店”,给你推荐学习 ReAct+Harness 最好的工具、书籍、论文、视频;
- 未来发展趋势与挑战:这是“游戏的续集预告”,告诉你 ReAct+Harness 未来会怎么发展,以及还有哪些挑战需要解决;
- 总结:学到了什么?:这是“游戏的通关奖励”,用通俗易懂的语言再次强调核心概念和它们之间的关系;
- 思考题:动动小脑筋:这是“游戏的隐藏关卡”,给你出一些思考题,鼓励你进一步思考和应用所学知识;
- 附录:常见问题与解答:这是“游戏的客服中心”,解答你在学习过程中可能遇到的问题;
- 扩展阅读 & 参考资料:这是“游戏的制作人员名单”,列出本文参考的所有论文、书籍、文档、视频。
术语表
为了避免你在阅读过程中遇到“看不懂的黑话”,我们先列一个核心术语表,用“地图探险”的类比来解释:
核心术语定义
| 核心术语 | 地图探险类比 | 专业定义(简化版) |
|---|---|---|
| ReAct 模式 | 探险家的“思考→行动→观察→修正→再思考”的循环流程 | 一种结合大模型**推理(Reasoning)和行动(Acting)**的协同模式,通过“思考→调用工具→观察结果→修正思考→再调用工具…”的循环,解决复杂的、实时的、专业领域的问题 |
| Harness Agent Core | 地图探险的“指挥中心” | Harness LLM Ops 平台中的核心模块,负责管理 Agent 的思考状态、调度工具调用、协调各个组件的工作 |
| Agent | 地图探险的“专业向导” | 一个由大模型驱动的、能够自主推理、调用工具、解决问题的程序单元 |
| Tool | 地图探险的“工具包”(比如地图、指南针、手机、手电筒) | 一个能够执行特定任务的程序/API/数据库,比如天气查询API、路线规划API、数据库查询接口 |
| State | 地图探险的“探险日志”(记录当前位置、已走路线、已发现的信息、剩余的任务) | Agent 在解决问题过程中积累的所有信息,包括思考历史、工具调用历史、观察结果、用户输入、任务目标等 |
| Executor | 地图探险的“行动执行者”(帮向导拿工具、查地图、订酒店) | Harness 中负责执行 Agent 决策的组件,包括工具调用的安全检查、超时控制、错误重试、结果格式化等 |
| Prompt Engineering | 地图探险的“向导培训手册”(告诉向导怎么思考、怎么用工具、怎么写探险日志) | 设计和优化大模型输入提示词的过程,目的是让大模型更准确、更高效地完成任务 |
| LLM Ops | 地图探险的“向导管理系统”(负责培训向导、监控向导的工作状态、优化向导的路线) | 一种结合大模型开发、部署、监控、调试、优化的工程实践,目的是让大模型应用从“原型”快速变成“生产级产品” |
相关概念解释
| 相关概念 | 地图探险类比 | 专业定义(简化版) |
|---|---|---|
| Reasoning-Only 模式 | 只会背地图册的探险家,一到陌生城市就抓瞎 | 传统的大模型使用模式,只让大模型进行推理,不调用任何工具,所有信息都来自大模型的预训练知识库 |
| Acting-Only 模式 | 只会按按钮的机器人,没有思考能力,别人让它做什么它就做什么 | 一种大模型使用模式,只让大模型调用工具,不进行推理,工具调用的决策由人工编写的规则决定 |
| Chain-of-Thought (CoT) | 探险家的“自言自语”(告诉自己为什么选这条路、为什么用这个工具) | 一种提示工程技术,让大模型在解决问题时,先把思考过程一步一步写出来,再给出答案,目的是提高大模型的推理准确性 |
| Self-Consistency | 让多个探险家同时探险同一条路线,然后选大多数探险家选的那条路 | 一种基于 CoT 的提示工程技术,让大模型多次生成不同的思考过程和答案,然后通过投票选最优解,目的是提高大模型的答案可靠性 |
| Toolformer | 会自己学会用工具的探险家(不需要别人教它怎么用指南针、怎么查地图) | 一种让大模型自动学习如何调用工具的技术,通过在预训练数据中加入工具调用的示例,让大模型在预训练阶段就掌握工具调用的能力 |
缩略词列表
| 缩略词 | 全称 | 中文翻译 |
|---|---|---|
| LLM | Large Language Model | 大语言模型 |
| ReAct | Reasoning + Acting | 推理与行动协同 |
| CoT | Chain-of-Thought | 思维链 |
| API | Application Programming Interface | 应用程序编程接口 |
| SDK | Software Development Kit | 软件开发工具包 |
| CI/CD | Continuous Integration/Continuous Deployment | 持续集成/持续部署 |
| MDP | Markov Decision Process | 马尔可夫决策过程 |
| NLP | Natural Language Processing | 自然语言处理 |
核心概念与联系:用“地图探险”类比彻底搞懂 ReAct+Harness
故事引入:探险家小明的两次城市之旅
为了让你更直观地理解 ReAct 模式的优势,我们先来看一个真实的故事(改编自 OpenAI 的 ReAct 论文实验):
假设你是一个住在北京的小学生,你的好朋友小红要来上海玩,你想帮她:
- 订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆;
- 给她规划一条从虹桥火车站到这个菜馆的地铁+步行路线;
- 查一下明天上海的天气,提醒她带什么衣服。
你有两个“探险家助手”可以选:
- 助手A(只会背地图册的Reasoning-Only探险家):他背过2023年之前的所有上海地图册、上海菜馆点评、上海天气历史数据,但他没有手机,不能查实时数据,也不能订座;
- 助手B(会看地图、会用手机、会写探险日志的ReAct探险家):他也背过一些基本的上海地理知识,但他有一个装满工具的背包(手机里有大众点评模拟版、高德地图模拟版、OpenWeatherMap API),还有一个探险日志本,他会先思考“我需要做什么”,再决定用什么工具,然后观察工具返回的结果,再修正思考,直到完成任务。
我们来看看两个助手的表现:
助手A的表现(Reasoning-Only模式)
你:“帮我订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆,然后规划从虹桥火车站到这里的路线,再查明天的天气。”
助手A(背了一堆地图册之后):“上海本帮菜馆有很多,比如南翔馒头店、小南国、老正兴… 离陆家嘴地铁站步行5分钟的有… 人均80以内的可能有… 明天上海的天气可能和今天差不多… 抱歉我没有实时数据,订不了座,也查不了实时天气和实时路线。”
你:“…(无语)”
助手B的表现(ReAct模式)
你:“帮我订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆,然后规划从虹桥火车站到这里的路线,再查明天的天气。”
助手B(打开探险日志本,写下任务目标,然后开始自言自语):
思考1:我需要完成三个任务:1. 找符合条件的本帮菜馆并订座;2. 规划路线;3. 查天气。首先应该先找菜馆,因为路线和天气都是围绕菜馆的。找菜馆需要知道四个条件:明天晚上7点有空位、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅。我没有实时数据,应该用大众点评模拟版API来查。
助手B(拿出手机,打开大众点评模拟版API,输入查询条件,然后等待结果):
行动1:调用大众点评模拟版API,参数:city=上海,cuisine=本帮菜,price_max=80,near_station=陆家嘴,walk_time_max=5,has_child_seat=true,available_time=2025-10-15T19:00:00+08:00,party_size=2(假设小红和她妈妈一起去)。
助手B(收到API返回的结果,然后写在探险日志本上):
观察1:大众点评模拟版API返回了1个符合条件的菜馆:“老上海弄堂菜(陆家嘴店)”,地址:浦东新区陆家嘴环路1000号恒生银行大厦B1层,人均75元,离陆家嘴地铁站6号口步行3分钟,有儿童座椅,明天晚上7点有2人空位,订座电话:021-12345678。
助手B(继续自言自语):
思考2:太好了,找到了符合条件的菜馆!接下来需要订座。订座应该用商家的API,但大众点评模拟版API没有订座功能?哦不对,我可以用模拟的订座工具(因为是实战项目,我们会自己写一个模拟订座工具)。
助手B(拿出手机,打开模拟订座工具,输入参数,然后等待结果):
行动2:调用模拟订座工具,参数:restaurant_name=老上海弄堂菜陆家嘴店,address=浦东新区陆家嘴环路1000号恒生银行大厦B1层,time=2025-10-15T19:00:00+08:00,party_size=2,contact_name=小红,contact_phone=13800138000。
助手B(收到工具返回的结果,然后写在探险日志本上):
观察2:模拟订座工具返回:订座成功!订座编号:SH20251015001,确认短信已发送到13800138000。
助手B(继续自言自语):
思考3:订座成功!接下来需要规划从虹桥火车站到这个菜馆的地铁+步行路线。规划路线应该用高德地图模拟版API。
助手B(拿出手机,打开高德地图模拟版API,输入参数,然后等待结果):
行动3:调用高德地图模拟版API,参数:origin=虹桥火车站,destination=老上海弄堂菜陆家嘴店,transport_mode=subway_walk。
助手B(收到API返回的结果,然后写在探险日志本上):
观察3:高德地图模拟版API返回:路线1:虹桥火车站坐地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约45分钟,总票价约5元;路线2:虹桥火车站坐地铁10号线(虹桥火车站→基隆路方向)到南京东路站下车,换乘地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约50分钟,总票价约5元。推荐路线1。
助手B(继续自言自语):
思考4:路线规划成功!接下来需要查明天上海的天气。查天气应该用OpenWeatherMap API。
助手B(拿出手机,打开OpenWeatherMap API,输入参数,然后等待结果):
行动4:调用OpenWeatherMap API,参数:city=上海,date=2025-10-15,units=metric。
助手B(收到API返回的结果,然后写在探险日志本上):
观察4:OpenWeatherMap API返回:明天上海的天气是多云转小雨,气温18℃-24℃,东北风3-4级,相对湿度60%-80%。
助手B(继续自言自语):
思考5:所有任务都完成了!现在需要整理一下结果,给用户一个清晰的回复。
助手B(合上探险日志本,然后给你一个清晰的回复):
“小红妈妈您好!我已经帮您完成了所有任务:
- 订座成功:订了老上海弄堂菜(陆家嘴店)明天晚上7点的2人空位,人均75元,离陆家嘴地铁站6号口步行3分钟,有儿童座椅,订座编号:SH20251015001,确认短信已发送到13800138000;
- 路线规划成功:推荐从虹桥火车站坐地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约45分钟,总票价约5元;
- 明天天气提醒:明天上海多云转小雨,气温18℃-24℃,东北风3-4级,建议带一件薄外套和一把雨伞。
祝您和小红玩得开心!😊”
你:“哇!太棒了!这就是我想要的!”
看完这个故事,你应该能直观地感受到 ReAct 模式的优势:它让大模型从「只会背知识的书呆子」变成「会解决实际问题的专业人士」。接下来,我们就用这个“地图探险”的类比,一步一步拆解 ReAct 模式和 Harness 四大核心组件的本质,以及它们之间的关系。
核心概念解释(像给小学生讲故事一样)
核心概念一:ReAct 模式——探险家的“思考→行动→观察→修正→再思考”循环
我们刚才已经通过故事看到了 ReAct 模式的工作流程,现在我们用更清晰的语言(还是用地图探险的类比)来定义它:
ReAct 模式的本质:一个由大模型驱动的「状态机」(State Machine),它会在「思考状态」「行动状态」「观察状态」「修正状态」「完成状态」之间不断切换,直到完成任务。
我们把这个循环流程拆成5个小步骤,每个步骤都用地图探险的类比来解释:
-
思考状态(Reasoning State):
- 地图探险类比:探险家停下来,拿出探险日志本,回顾之前的探险记录(已走路线、已发现的信息),然后思考“我现在在哪里?我需要做什么?下一步应该用什么工具?”,最后把思考过程写在探险日志本上。
- 专业定义:大模型接收当前的状态信息(包括用户输入、任务目标、思考历史、工具调用历史、观察结果),然后生成下一步的思考过程(Reasoning)和行动决策(Action)。
- 关键要求:思考过程必须清晰、具体、可追溯(用 Chain-of-Thought 提示工程技术),行动决策必须明确、可执行(比如“调用大众点评模拟版API,参数是xxx”,而不是“查一下大众点评”)。
-
行动状态(Acting State):
- 地图探险类比:探险家拿出对应的工具(比如大众点评模拟版手机APP),按照之前的行动决策操作工具(比如输入查询条件),然后等待工具返回结果。
- 专业定义:Agent 按照大模型生成的行动决策,调用对应的工具(Tool),并传入工具需要的参数。
- 关键要求:行动状态必须安全、高效、可靠(比如工具调用前要做权限检查、参数验证,调用时要做超时控制、错误重试,调用后要做结果格式化)——这些都是 Harness Executor 组件要解决的问题。
-
观察状态(Observing State):
- 地图探险类比:探险家收到工具返回的结果(比如大众点评模拟版APP返回的菜馆列表),然后把结果整理成清晰、易懂的格式,写在探险日志本上。
- 专业定义:Agent 接收工具返回的原始结果(Observation Raw),然后把它整理成大模型能看懂的格式(Observation Formatted),并更新到状态信息中。
- 关键要求:观察结果必须简洁、准确、有用——如果工具返回的结果太长(比如大众点评返回了100个菜馆的详细信息),Agent 需要先对结果进行“摘要”(Summarization),只保留大模型需要的信息;如果工具返回的结果太专业(比如医疗API返回了一堆医学术语),Agent 需要先对结果进行“翻译”(Translation),转换成大模型能看懂的语言。
-
修正状态(Refining State):
- 地图探险类比:探险家回顾之前的思考过程、行动决策、观察结果,看看有没有错误(比如之前查的人均价格错了、之前选的路线绕远了),如果有错误,就修正思考过程,然后重新进入思考状态。
- 专业定义:大模型接收更新后的状态信息,然后判断之前的思考过程和行动决策是否正确,观察结果是否符合预期,如果不符合,就修正思考过程,然后重新生成行动决策;如果符合,就继续进入思考状态,完成下一个任务。
- 关键要求:修正状态必须及时、准确、灵活——如果大模型“走火入魔”重复问同一个问题(比如重复调用大众点评模拟版API查同一个菜馆的人均价格),Agent 需要及时干预,强制它进入修正状态,或者直接终止任务(这也是 Harness 可观测性组件要解决的问题)。
-
完成状态(Finished State):
- 地图探险类比:探险家完成了所有任务,然后整理探险日志本,给用户一个清晰、易懂的总结。
- 专业定义:大模型判断所有任务都已完成,然后生成最终的答案(Final Answer),并终止任务。
- 关键要求:最终答案必须清晰、具体、有用——要直接回答用户的问题,不要有多余的思考过程(思考过程应该只保存在状态信息中,用于调试和监控)。
为了让你更直观地理解 ReAct 模式的循环流程,我们画一个简单的文本示意图:
[用户输入/任务目标] → 进入思考状态
↓
[大模型生成思考过程和行动决策] → 进入行动状态
↓
[Agent 调用工具并传入参数] → 工具执行任务
↓
[工具返回原始结果] → 进入观察状态
↓
[Agent 整理结果并更新状态] → 进入修正状态
↓
[大模型判断是否需要修正] → 如果需要,修正后重新进入思考状态
↓
[大模型判断是否完成任务] → 如果没完成,继续进入思考状态
↓
[大模型生成最终答案] → 终止任务
接下来,我们再画一个Mermaid 流程图(流程节点中没有括号、逗号等特殊字符),让你更清晰地看到 ReAct 模式的状态切换:
核心概念二:Harness Agent Core——地图探险的“指挥中心”
刚才我们讲了 ReAct 模式的本质是一个「状态机」,但要把这个状态机落地成生产级应用,你需要一个「指挥中心」来管理它的所有组件:思考状态的管理、行动状态的调度、观察状态的整理、修正状态的干预、完成状态的判断——这就是 Harness Agent Core 的用武之地。
我们还是用地图探险的类比来定义 Harness Agent Core:
Harness Agent Core 的本质:一个由「Agent Manager」「State Manager」「Tool Manager」「Executor Manager」「Observability Manager」五大子模块组成的「中央指挥系统」,它负责协调所有组件的工作,让 ReAct 模式的状态机安全、高效、可靠地运行。
我们把这五大子模块拆成5个小部分,每个部分都用地图探险的类比来解释:
-
Agent Manager(探险家管理器):
- 地图探险类比:负责招聘、培训、管理所有的探险家(Agent),比如给探险家分配任务、给探险家提供培训手册(提示词模板)、给探险家发放背包(工具包)、给探险家配备探险日志本(状态存储)。
- 专业定义:负责创建、配置、管理所有的 Agent 实例,包括 Agent 的类型(比如 ReAct Agent、CoT Agent、Acting-Only Agent)、Agent 使用的大模型(比如 OpenAI GPT-4o、Claude 3.5 Sonnet、Google Gemini 1.5 Pro)、Agent 使用的提示词模板、Agent 可以使用的工具列表、Agent 的状态存储方式(比如本地内存、Redis、PostgreSQL)。
- 核心功能:
- Agent 实例的创建和销毁;
- Agent 配置的加载和更新;
- Agent 任务的分配和调度;
- Agent 提示词的动态生成和优化。
-
State Manager(探险日志管理器):
- 地图探险类比:负责管理所有探险家的探险日志本(State),比如给探险家发放新的日志本、保存探险家的日志记录、检索探险家的历史日志、备份探险家的日志记录。
- 专业定义:负责管理 Agent 的所有状态信息,包括用户输入、任务目标、思考历史、工具调用历史、观察结果、临时变量、会话上下文等,支持多种状态存储方式(比如本地内存、Redis、PostgreSQL、MongoDB),支持状态的序列化和反序列化,支持状态的版本控制和历史回溯。
- 核心功能:
- 状态的创建和初始化;
- 状态的读取和更新;
- 状态的序列化和反序列化;
- 状态的版本控制和历史回溯;
- 状态的备份和恢复。
-
Tool Manager(工具包管理器):
- 地图探险类比:负责管理所有探险家的工具包(Tool),比如给探险家的工具包添加新工具、移除旧工具、检查工具是否可用、给工具编写使用说明书(工具描述和参数说明)。
- 专业定义:负责管理 Agent 可以使用的所有工具,包括工具的注册和注销、工具的元数据管理(比如工具名称、工具描述、工具参数说明、工具返回值说明、工具权限要求)、工具的可用性检查、工具的分类和标签管理。
- 核心功能:
- 工具的注册和注销;
- 工具的元数据管理;
- 工具的可用性检查;
- 工具的分类和标签管理;
- 工具的版本控制。
-
Executor Manager(行动执行者管理器):
- 地图探险类比:负责管理所有探险家的行动执行者(Executor),比如给探险家配备专门的行动执行者、监督行动执行者的工作、处理行动执行者遇到的问题(比如工具坏了、手机没信号了)。
- 专业定义:负责管理 Agent 的工具调用执行,包括工具调用的权限检查、参数验证、超时控制、错误重试、结果格式化、错误处理等,支持多种执行模式(比如同步执行、异步执行、批量执行),支持多种错误重试策略(比如固定间隔重试、指数退避重试、最大重试次数限制)。
- 核心功能:
- 工具调用的权限检查;
- 工具调用的参数验证;
- 工具调用的超时控制;
- 工具调用的错误重试;
- 工具调用的结果格式化;
- 工具调用的错误处理;
- 工具调用的日志记录。
-
Observability Manager(监控调试管理器):
- 地图探险类比:负责监控所有探险家的工作状态,比如查看探险家的实时探险日志、查看探险家的工具调用次数、查看探险家的任务完成率、查看探险家的失败原因,当探险家遇到问题时,及时干预和调试。
- 专业定义:负责管理 Agent 的可观测性和调试,包括 Agent 的实时状态监控、Agent 的性能指标收集(比如响应时间、工具调用次数、失败率、成本)、Agent 的思考过程可视化、Agent 的错误告警、Agent 的调试会话管理等,支持多种监控数据存储方式(比如 Prometheus、Grafana、Elasticsearch),支持多种可视化方式(比如 Harness LLM Ops 控制台、自定义 Dashboard)。
- 核心功能:
- Agent 的实时状态监控;
- Agent 的性能指标收集和分析;
- Agent 的思考过程可视化;
- Agent 的错误告警和通知;
- Agent 的调试会话管理;
- Agent 的成本监控和优化。
为了让你更直观地理解 Harness Agent Core 的架构,我们画一个简单的文本示意图:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Harness LLM Ops 平台 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Harness Agent Core(指挥中心) │ │
│ ├───────────────────────────────────────────────────────────────────────┤ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────┐ │ │
│ │ │ Agent Manager│ │ State Manager│ │ Tool Manager │ │Executor │ │ │
│ │ │(探险家管理器)│ │(探险日志管理器)│ │(工具包管理器)│ │(执行者)│ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ └─────────┘ │ │
│ │ ┌───────────────────────────────────────────────────────────────────┐ │ │
│ │ │ Observability Manager(监控调试管理器) │ │ │
│ │ └───────────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │ │ Agent N │ │
│ │(ReAct探险家1)│ │(CoT探险家2) │ │(Acting探险家3)│ │(自定义探险家N)│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 大模型API │ │ 工具API │ │ 状态存储 │ │ 监控存储 │ │
│ │(GPT4o等) │ │(大众点评等) │ │(Redis等) │ │(Prometheus)│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
接下来,我们再画一个Mermaid 架构图(架构节点中没有括号、逗号等特殊字符),让你更清晰地看到 Harness Agent Core 的各个组件之间的关系:
核心概念三:Agent——地图探险的“专业向导”
讲完了 Harness Agent Core(指挥中心),接下来我们讲 Agent(专业向导)——这是你直接交互的组件,也是 ReAct 模式的核心载体。
我们还是用地图探险的类比来定义 Agent:
Agent 的本质:一个由「大模型大脑」「提示词培训手册」「工具包」「探险日志本」「行动执行指令」五大核心要素组成的「智能体」,它能够自主推理、调用工具、解决问题。
我们把这五大核心要素拆成5个小部分,每个部分都用地图探险的类比来解释:
-
大模型大脑(LLM Brain):
- 地图探险类比:探险家的大脑,负责思考、决策、学习。
- 专业定义:Agent 的核心推理引擎,通常是一个大语言模型(比如 OpenAI GPT-4o、Claude 3.5 Sonnet、Google Gemini 1.5 Pro),也可以是一个微调后的专用模型(比如专门用于医疗诊断的微调模型)。
- 关键要求:大模型大脑必须具有较强的推理能力、工具调用能力、自然语言理解能力——通常来说,模型越大(比如 GPT-4o、Claude 3.5 Sonnet),这些能力越强,但成本也越高;模型越小(比如 GPT-3.5 Turbo、Claude 3 Haiku),成本越低,但能力也越弱,可能需要更多的提示工程优化。
-
提示词培训手册(Prompt Template):
- 地图探险类比:探险家的培训手册,告诉探险家怎么思考、怎么用工具、怎么写探险日志、怎么判断任务是否完成。
- 专业定义:Agent 的核心提示工程组件,是一个预定义的文本模板,里面包含了 Agent 的角色设定、任务目标、工具列表(包括工具名称、工具描述、工具参数说明、工具返回值说明)、思考格式要求、行动格式要求、观察格式要求、完成格式要求、示例对话(Few-Shot Examples)等内容。
- 关键要求:提示词培训手册必须清晰、具体、可操作——示例对话(Few-Shot Examples)是最重要的部分,它能让大模型更快地学会如何按照要求思考、如何调用工具、如何写探险日志。
-
工具包(Toolkit):
- 地图探险类比:探险家的背包,里面装着探险家解决问题需要的所有工具(比如地图、指南针、手机、手电筒)。
- 专业定义:Agent 可以使用的所有工具的集合,每个工具都是一个独立的程序/API/数据库,能够执行特定的任务(比如天气查询、路线规划、数据库查询、文件读写)。
- 关键要求:工具包必须精简、有用、可靠——不要给 Agent 太多没用的工具,否则大模型会“选择困难症”,不知道用哪个工具;每个工具都必须有清晰的描述和参数说明,否则大模型会不知道怎么用;每个工具都必须经过充分的测试,否则会经常出错,影响 Agent 的任务完成率。
-
探险日志本(State):
- 地图探险类比:探险家的探险日志本,记录当前位置、已走路线、已发现的信息、剩余的任务、思考历史、工具调用历史、观察结果等内容。
- 专业定义:Agent 在解决问题过程中积累的所有信息的集合,包括用户输入、任务目标、思考历史、工具调用历史、观察结果、临时变量、会话上下文等。
- 关键要求:探险日志本必须完整、准确、可追溯——所有的思考过程、工具调用历史、观察结果都必须记录下来,用于调试和监控;状态信息必须及时更新,否则大模型会基于过时的信息做出错误的决策。
-
行动执行指令(Action Instructions):
- 地图探险类比:探险家的行动执行手册,告诉探险家怎么操作工具、怎么处理工具返回的错误、怎么整理工具返回的结果。
- 专业定义:Agent 的工具调用执行规则,包括工具调用的权限检查规则、参数验证规则、超时控制规则、错误重试规则、结果格式化规则、错误处理规则等。
- 关键要求:行动执行指令必须安全、高效、可靠——工具调用前必须做权限检查,防止 Agent 调用敏感的工具(比如删除数据库的工具);工具调用时必须做超时控制和错误重试,防止 Agent 因为工具超时或偶尔出错而终止任务;工具调用后必须做结果格式化,把原始结果转换成大模型能看懂的格式。
为了让你更直观地理解 Agent 的核心要素,我们画一个简单的文本示意图:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Agent(专业向导) │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ 大模型大脑(LLM Brain) │ │
│ │ (GPT4o Claude35Sonnet Gemini15Pro等) │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 提示词培训手册 │ │ 工具包 │ │ 探险日志本 │ │
│ │(Prompt Template)│ │(Toolkit) │ │(State) │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ 行动执行指令(Action Instructions) │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
接下来,我们再画一个Mermaid 交互关系图(交互节点中没有括号、逗号等特殊字符),让你更清晰地看到 Agent 的各个核心要素之间的交互关系:
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)