LLM、Agent 与 Harness 实操教程

作者:新兰2026.11.13 03:32浏览量:0

简介:本文面向开发者与运维人员,系统讲解如何基于大语言模型构建智能体,并设计 Harness 评测与运行框架。内容涵盖目标拆解、工具调用、任务规划、评测指标、安全隔离、结果验证与常见问题排查,帮助读者完成可复现的智能体落地流程。

教程目标

本教程的目标是帮助读者完成一套从“大语言模型”到“智能体”再到“Harness 运行与评测框架”的完整落地流程。最终你将能够实现以下效果:

  1. 理解 LLM、Agent、Harness 三者的职责边界。
  2. 能够将一个大语言模型接入工具,并让其在明确目标下自主拆解任务、调用工具、整合结果。
  3. 能够为一个智能体设计稳定的运行流程,包括任务规划、工具调用、上下文管理、错误处理与安全控制。
  4. 能够搭建一套轻量级 Harness,用于样本管理、执行追踪、结果评测、回归验证与线上监控。
  5. 能够针对常见问题,如循环调用、工具参数错误、上下文丢失、输出不稳定、权限越界等,进行定位与优化。

本教程不是单纯介绍概念,而是围绕“如何搭建一个可运行、可验证、可扩展的 LLM 智能体系统”展开,适合希望将大语言模型从“问答工具”升级为“可执行任务的业务系统”的技术人员阅读。


适用读者与适用场景

适用读者

本教程适合以下读者:

  • 应用开发者:希望将大模型接入业务系统,完成自动化任务处理。
  • 运维人员:需要保障智能体运行稳定性、可观测性与安全性。
  • 技术负责人:需要评估智能体方案的工程可行性、成本、风险与验收方式。
  • 企业数字化团队:希望在客服、运营、分析、知识管理、流程自动化等场景中引入智能体能力。

适用场景

常见的可落地场景包括:

  • 企业知识问答:基于内部资料回答问题,并引用来源。
  • 运营数据分析:根据自然语言指令查询指标、生成报表、解释趋势。
  • 智能客服:识别用户意图,调用订单、物流、售后等工具。
  • 流程辅助:根据用户目标生成步骤,并协调多个系统完成任务。
  • 示例型任务:如旅行规划、会议安排、资料整理等需要多步执行的场景。

本教程将以一个通用的“旅行规划智能体”为例进行说明,但该方法同样适用于其他需要“理解目标 + 拆解任务 + 调用工具 + 汇总结果”的业务场景。


agent-harness-">核心概念:LLM、Agent 与 Harness 的关系

在开始实施前,需要先明确三者关系。很多人会把“调用大模型”误认为就是“智能体”,但实际上,智能体是一个由模型、工具、状态、流程和控制策略共同组成的系统。

1. LLM:理解与生成的核心引擎

LLM,即大语言模型,主要负责:

  • 理解用户输入;
  • 提取任务目标;
  • 进行推理与规划;
  • 生成自然语言回复;
  • 在结构化输出场景下生成工具调用参数;
  • 对工具返回结果进行归纳与表达。

LLM 本身并不天然拥有“行动能力”。它只能根据输入生成文本或结构化内容。如果希望它完成真实操作,就必须通过工程手段将其连接到外部工具。

2. Agent:具备目标感和执行能力的智能体

Agent 是在 LLM 基础上增加以下能力后形成的系统:

  • 目标理解:从用户输入中识别任务目标;
  • 任务规划:将复杂目标拆分为多个步骤;
  • 工具调用:根据当前状态选择并调用合适工具;
  • 结果观测:接收工具返回结果并更新状态;
  • 反思修正:根据错误或缺失信息调整后续动作;
  • 最终输出:完成任务并生成用户可理解的结果。

简单说,LLM 是“大脑”,Agent 是“具备手脚、记忆和计划能力的大脑”。

3. Harness:运行、评测与治理的框架

Harness 可以理解为智能体的“运行线束”和“评测框架”。它不是某一个具体功能,而是一套围绕智能体运行过程建立的基础设施,通常包括:

  • 输入样本管理;
  • 任务执行编排;
  • 工具调用适配;
  • 日志与轨迹记录;
  • 结果评测;
  • 指标统计;
  • 异常处理;
  • 回归测试;
  • 安全审计。

如果 Agent 是执行者,Harness 就是让执行者“可测试、可追踪、可优化、可治理”的系统底座。


前置准备

在正式实现前,需要准备以下内容。

1. 可用的模型推理能力

你需要一个可调用的大语言模型服务。常见能力包括:

  • 文本理解;
  • 文本生成;
  • 结构化输出;
  • 多轮对话;
  • 指令遵循;
  • 可选的函数调用或工具调用能力。

如果模型服务支持结构化输出,应优先使用结构化输出降低解析成本;如果不支持,也可以通过提示词约定输出格式,再由程序侧解析和校验。

2. 工具或接口清单

智能体要“动手”,必须依赖工具。工具可以是:

  • 查询类工具:天气查询、数据库查询、搜索接口、知识检索;
  • 计算类工具:单位换算、日期计算、价格计算;
  • 业务类工具:订单查询、工单创建、库存查询;
  • 写入类工具:预订、提交、审批、创建任务。

需要注意:写入类或高风险操作应增加权限控制与人工确认机制。

3. 权限与密钥管理

所有工具调用都应遵循最小权限原则。建议准备:

  • 工具访问凭证;
  • 权限白名单;
  • 请求限流策略;
  • 审计日志;
  • 敏感数据脱敏规则。

不要在提示词、日志或前端展示中暴露密钥、令牌、内部地址等敏感信息。

4. 运行环境

如果要在生产环境运行,可依托云环境中的通用能力,例如:

  • 容器平台:部署智能体服务;
  • 消息队列:承接异步任务;
  • 对象存储:保存样本、日志、评测结果;
  • 数据库:保存任务状态、会话状态和评测记录;
  • 日志服务:记录调用链路;
  • 监控告警:观察失败率、延迟和异常;
  • 身份认证:控制接口访问权限。

如果运行在百度智能云等云平台,也可以使用上述通用类目能力完成工程化落地。

5. 评测样本集

没有评测样本,就无法判断智能体是否真正可用。建议至少准备三类样本:

  • 正常样本:目标清晰、工具可用、结果可预期;
  • 边界样本:信息缺失、需要追问或需要澄清;
  • 异常样本:工具失败、权限不足、超时、参数非法。

6. 基础技术知识

建议读者具备以下基础:

  • 熟悉 HTTP 接口调用;
  • 了解 JSON 或 YAML 配置;
  • 理解状态机或流程编排;
  • 了解基本的日志、监控、重试和超时机制;
  • 了解基本的安全与权限控制原则。

实施步骤

下面按照从 0 到 1 的顺序,拆解智能体与 Harness 的实现步骤。


第一步:明确任务目标与边界

做什么

在开始写代码前,先把任务定义清楚:

  • 用户输入是什么?
  • 期望输出是什么?
  • 允许调用哪些工具?
  • 不允许执行哪些操作?
  • 哪些操作需要人工确认?
  • 失败时如何降级?

例如,对于“旅行规划”任务,可以定义如下目标:

输入:出发地、目的地、日期、预算、偏好。

输出:一份包含交通、住宿、行程安排和注意事项的旅行建议。

边界:只提供建议,不自动完成真实支付;如涉及预订,必须提示用户确认。

为什么做

智能体最大的风险之一是“边界不清”。如果模型没有明确限制,可能会:

  • 调用不该调用的工具;
  • 生成超出权限的建议;
  • 在高风险操作上直接执行;
  • 在信息不足时强行输出结果。

因此,任务边界是智能体安全性的第一道保障。

注意什么

  • 高风险操作必须显式标注;
  • 输出格式应可校验;
  • 对模糊需求应允许追问;
  • 不应要求模型“猜测”缺失的关键参数。

第二步:设计工具清单与接口契约

做什么

将智能体需要使用的工具统一抽象为“接口契约”。每个工具至少包含:

  • 工具名称;
  • 工具描述;
  • 输入参数;
  • 输出结果;
  • 错误码;
  • 超时时间;
  • 是否幂等;
  • 是否需要权限确认。

示例:

  1. {
  2. "name": "query_weather",
  3. "description": "查询指定城市和日期的天气情况",
  4. "parameters": {
  5. "city": "string",
  6. "date": "string"
  7. },
  8. "output": {
  9. "temperature": "string",
  10. "condition": "string"
  11. },
  12. "idempotent": true
  13. }
  1. {
  2. "name": "search_transport",
  3. "description": "查询两地之间的交通方案",
  4. "parameters": {
  5. "origin": "string",
  6. "destination": "string",
  7. "date": "string"
  8. },
  9. "output": {
  10. "options": "array"
  11. },
  12. "idempotent": true
  13. }
  1. {
  2. "name": "reserve_service",
  3. "description": "提交预订请求",
  4. "parameters": {
  5. "item_id": "string",
  6. "user_id": "string",
  7. "confirm": "boolean"
  8. },
  9. "output": {
  10. "order_id": "string",
  11. "status": "string"
  12. },
  13. "idempotent": true,
  14. "require_confirmation": true
  15. }

为什么做

工具契约决定了模型能否稳定调用工具。如果参数描述不清,模型容易出现:

  • 参数缺失;
  • 参数类型错误;
  • 工具选择错误;
  • 多次重复调用;
  • 对错误结果无法理解。

清晰的工具契约可以显著降低执行偏差。

注意什么

  • 工具描述要简洁明确;
  • 参数命名要语义清晰;
  • 必须在前置校验阶段过滤非法参数;
  • 写操作工具必须考虑幂等和重复提交风险。

第三步:实现任务规划与执行循环

做什么

智能体不应只输出一段最终答案,而应按照“规划—执行—观察—调整”的循环运行。

一个通用执行循环如下:

  1. 输入用户目标
  2. ↓
  3. 解析任务状态
  4. ↓
  5. 模型生成下一步动作
  6. ↓
  7. 如果是工具调用:校验参数并执行
  8. ↓
  9. 如果是最终回答:汇总输出
  10. ↓
  11. 记录本轮轨迹
  12. ↓
  13. 判断是否需要继续

伪代码示例:

  1. state = parse_user_input(user_input)
  2. while not state.finished and state.iteration < max_iterations:
  3. action = model.plan_next_action(state, available_tools)
  4. if action.type == "tool_call":
  5. result = validate_and_execute(action)
  6. state.observe(result)
  7. elif action.type == "ask_user":
  8. return clarify_question(action.question)
  9. elif action.type == "final_answer":
  10. return format_answer(action.content)
  11. else:
  12. log_warning("未知动作类型")
  13. break
  14. return fallback_answer()

为什么做

该循环是智能体的核心运行机制。它让系统具备以下能力:

  • 根据中间结果调整策略;
  • 在工具失败后重试或切换路径;
  • 在信息不足时向用户追问;
  • 避免无限生成无意义内容。

注意什么

  • 必须设置最大迭代次数;
  • 每一步动作都要写入日志;
  • 工具执行前要做参数校验;
  • 模型输出如果无法解析,应触发降级策略。

第四步:设计上下文管理与状态保存

做什么

智能体在处理多步任务时,需要保存状态。状态至少包括:

  • 用户原始目标;
  • 已完成的步骤;
  • 当前缺失信息;
  • 工具调用结果;
  • 临时变量;
  • 是否需要人工确认。

可以按层次设计:

  1. 会话短期上下文:用于当前多轮对话;
  2. 任务状态:用于多步骤任务执行;
  3. 长期知识:来自知识库或数据库;
  4. 评测轨迹:用于后续分析和回放。

为什么做

如果上下文管理不好,智能体容易出现:

  • 忘记用户已经提供的信息;
  • 重复询问相同问题;
  • 丢失关键参数;
  • 在长任务中偏离目标;
  • 工具调用结果无法被后续步骤利用。

注意什么

  • 上下文不是越多越好,过长会增加成本和延迟;
  • 关键状态应结构化保存,而不是全部塞入提示词;
  • 敏感信息不应长期保存在普通上下文中;
  • 可定期做摘要压缩,但必须保留关键事实。

第五步:构建 Harness 运行框架

做什么

Harness 的作用是把智能体的运行过程工程化。建议至少包含以下模块:

  1. 样本管理:管理输入样本和期望结果;
  2. 执行器:运行单个任务;
  3. 轨迹记录:保存每一步推理和工具调用;
  4. 评测器:判断输出是否正确;
  5. 报告器:汇总指标;
  6. 回归模块:在版本更新后自动复测。

一个简化的 Harness 结构如下:

  1. 输入样本
  2. ↓
  3. 任务执行器
  4. ↓
  5. 工具适配层
  6. ↓
  7. 轨迹存储
  8. ↓
  9. 评测器
  10. ↓
  11. 指标报告

轨迹记录建议包含:

  1. {
  2. "task_id": "demo-001",
  3. "input": "帮我规划一次三天旅行",
  4. "steps": [
  5. {
  6. "step": 1,
  7. "type": "plan",
  8. "content": "需要查询天气、交通和住宿"
  9. },
  10. {
  11. "step": 2,
  12. "type": "tool_call",
  13. "tool": "query_weather",
  14. "arguments": {
  15. "city": "杭州",
  16. "date": "2026-06-01"
  17. }
  18. },
  19. {
  20. "step": 3,
  21. "type": "tool_result",
  22. "content": "天气晴朗,温度适宜"
  23. }
  24. ],
  25. "final_answer": "建议上午抵达,下午游览西湖..."
  26. }

为什么做

没有 Harness,智能体很难做到:

  • 可复现;
  • 可评测;
  • 可回溯;
  • 可对比不同版本;
  • 可定位线上问题。

Harness 是把“模型能力”转化为“稳定产品”的关键工程层。

注意什么

  • 轨迹中不要记录敏感信息明文;
  • 评测标准应提前定义;
  • 评测结果要能区分模型问题、工具问题和流程问题;
  • Harness 本身也应版本化管理。

第六步:定义评测指标

做什么

建议从以下维度评估智能体:

  1. 任务完成率:是否成功完成用户目标;
  2. 工具调用准确率:是否选择了正确工具;
  3. 参数准确率:工具参数是否合法且完整;
  4. 结果一致性:相同输入多次运行是否稳定;
  5. 响应时延:端到端耗时是否可接受;
  6. 成本消耗:模型调用和工具调用成本是否可控;
  7. 安全性:是否越权、泄露敏感信息或执行高风险操作;
  8. 用户体验:回答是否清晰、可理解、可执行。

示例指标表:

  1. 任务完成率 = 成功完成任务数 / 总任务数
  2. 工具调用准确率 = 正确调用工具数 / 应调用工具数
  3. 参数错误率 = 参数校验失败次数 / 工具调用总次数
  4. 平均响应时间 = 所有任务总耗时 / 任务数
  5. 越权操作数 = 未授权写操作次数

为什么做

没有指标,就无法判断优化是否有效。评测指标能帮助团队区分:

  • 是模型理解错了?
  • 是工具描述不清楚?
  • 是流程设计不合理?
  • 是权限配置有问题?
  • 还是网络或工具服务异常?

注意什么

  • 不要只看最终回答,还要看执行轨迹;
  • 高风险指标必须单独统计;
  • 对不稳定输出应进行多次采样;
  • 评测集要定期更新,避免过拟合。

第七步:加入安全与权限控制

做什么

智能体具备工具调用能力后,必须建立安全机制。建议包括:

  • 工具白名单;
  • 参数校验;
  • 权限分级;
  • 高风险操作二次确认;
  • 请求限流;
  • 审计日志;
  • 敏感信息脱敏;
  • 工具调用熔断。

例如:

  • 查询类工具:可自动执行;
  • 写入类工具:需用户确认;
  • 删除类工具:默认禁止或需强授权;
  • 支付类操作:原则上不应由智能体自动完成。

为什么做

智能体一旦被赋予过多权限,可能带来严重风险。例如:

  • 误删数据;
  • 越权查询;
  • 重复提交订单;
  • 泄露内部信息;
  • 被恶意输入诱导执行危险操作。

注意什么

  • 权限应尽可能小;
  • 所有高风险动作必须可追踪;
  • 对模型生成的参数不能直接信任;
  • 所有工具调用必须经过服务端校验。

第八步:部署、灰度与上线

做什么

建议按以下阶段推进:

  1. 开发环境:验证基本流程和工具调用;
  2. 测试环境:接入评测集和回归测试;
  3. 预发环境:模拟真实流量和异常场景;
  4. 灰度发布:小流量验证稳定性;
  5. 全量上线:持续监控和迭代。

部署时可考虑:

  • 将模型调用与工具执行解耦;
  • 将耗时任务放入异步队列;
  • 对长任务进行状态持久化;
  • 对失败任务支持重试和人工接管;
  • 对关键接口设置超时和降级。

为什么做

智能体系统通常具有不确定性,不能像传统接口一样只靠单次测试判断稳定性。灰度发布和持续监控是必要的。

注意什么

  • 上线前必须完成安全评审;
  • 必须保留可回滚版本;
  • 必须建立异常告警;
  • 必须限制单次任务的最大执行时长和成本。

配置说明

在实现过程中,会涉及多个配置项。以下是通用配置示例,可根据实际系统调整。

  1. agent:
  2. max_iterations: 8
  3. timeout_seconds: 60
  4. temperature: 0.2
  5. require_confirmation_for_write: true
  6. fallback_response: "当前无法自动完成该任务,请提供更多信息或联系人工支持。"
  7. tools:
  8. whitelist:
  9. - query_weather
  10. - search_transport
  11. - search_hotel
  12. - reserve_service
  13. blocked:
  14. - delete_data
  15. - change_permission
  16. evaluation:
  17. sample_dir: ./samples
  18. retry_times: 3
  19. record_trace: true
  20. save_cost: true
  21. monitoring:
  22. log_level: info
  23. alert_on_failure_rate: true
  24. alert_on_latency_p95: 10s

关键配置含义

1. max_iterations

限制智能体单次任务的最大执行步数。

作用:防止模型陷入无限循环。

风险:设置过小可能导致复杂任务无法完成;设置过大可能导致成本上升。

2. timeout_seconds

单次任务或单次工具调用的超时时间。

作用:避免请求长时间阻塞。

风险:过短可能误杀正常任务;过长可能影响系统吞吐。

3. temperature

控制模型输出随机性。通常任务越需要稳定,取值应越低。

作用:降低随机发挥。

风险:过高可能导致结果不稳定;过低可能使表达过于机械。

4. require_confirmation_for_write

是否对写操作要求人工确认。

作用:降低误操作风险。

风险:会增加交互步骤,但更适合生产环境。

5. whitelist / blocked

工具白名单和黑名单。

作用:限制智能体可执行的动作范围。

风险:配置遗漏可能导致越权调用。

6. record_trace

是否记录执行轨迹。

作用:方便排查问题和评测。

风险:会增加存储成本,需要脱敏和生命周期管理。


示例说明:旅行规划智能体

下面以一个旅行规划任务为例,展示智能体如何运行。

任务输入

  1. 用户:我想下个月去杭州玩三天,预算中等,喜欢自然风光。

智能体执行过程

第一步:解析任务

模型识别出以下关键信息:

  • 目的地:杭州;
  • 时间:下个月;
  • 天数:三天;
  • 预算:中等;
  • 偏好:自然风光。

同时发现缺失信息:

  • 具体日期未确定;
  • 出发地未提供。

第二步:判断是否需要追问

如果出发地影响交通查询,可以追问:

  1. 请问您从哪个城市出发?

如果任务允许先给建议,也可以先基于常见假设给出方案,但应明确标注假设。

第三步:调用查询工具

假设用户补充出发地后,智能体开始调用工具:

  1. {
  2. "tool": "query_weather",
  3. "arguments": {
  4. "city": "杭州",
  5. "date": "2026-07-10"
  6. }
  7. }

返回结果:

  1. {
  2. "temperature": "26~33℃",
  3. "condition": "多云"
  4. }

接着查询交通:

  1. {
  2. "tool": "search_transport",
  3. "arguments": {
  4. "origin": "上海",
  5. "destination": "杭州",
  6. "date": "2026-07-10"
  7. }
  8. }

第四步:汇总结果

模型根据工具返回结果生成行程建议:

  1. 第一天:抵达杭州,入住酒店,下午游览西湖周边。
  2. 第二天:上午前往灵隐寺,下午体验龙井茶园。
  3. 第三天:上午参观博物馆,下午返程。
  4. 注意事项:天气多云,温度较高,建议携带防晒用品。

第五步:高风险操作确认

如果用户要求“帮我订酒店”,智能体不应直接执行,而应回复:

  1. 我可以为您推荐酒店,但正式预订需要您确认。请确认是否选择以下酒店?

只有用户明确确认后,才调用写操作工具。


结果验证

完成实现后,需要从以下几个方面验证结果。

1. 单任务验证

选择一个明确任务,检查:

  • 是否理解用户目标;
  • 是否拆解出合理步骤;
  • 是否调用正确工具;
  • 工具参数是否合法;
  • 是否根据工具结果生成合理输出;
  • 是否出现重复调用;
  • 是否在失败时有降级提示。

2. 轨迹验证

查看每一步执行轨迹,确认:

  • 每步动作是否有依据;
  • 是否跳步;
  • 是否调用未授权工具;
  • 是否忽略工具错误;
  • 是否正确更新任务状态。

3. 批量评测验证

使用评测集批量运行,观察:

  • 任务完成率;
  • 工具调用准确率;
  • 参数错误率;
  • 平均延迟;
  • 成本消耗;
  • 异常样本恢复率。

4. 回归验证

每次修改提示词、工具描述、模型版本或流程逻辑后,都应重新运行固定评测集,避免新版本引入退化。

5. 安全验证

重点检查:

  • 是否能绕过权限限制;
  • 是否能诱导执行危险操作;
  • 是否泄露敏感信息;
  • 是否在日志中记录明文密钥;
  • 是否对写操作进行了确认。

常见问题与排查

问题一:智能体陷入循环调用

现象:

  • 反复调用同一个工具;
  • 无法推进任务;
  • 响应时间持续增长。

可能原因:

  • 工具返回结果未被正确利用;
  • 状态更新失败;
  • 模型没有理解工具结果;
  • 缺少最大迭代限制。

解决思路:

  • 设置最大迭代次数;
  • 对重复动作进行去重;
  • 将工具结果结构化写入状态;
  • 在提示中明确要求“如果没有新信息,应停止调用”。

问题二:工具参数经常错误

现象:

  • 缺少必要参数;
  • 参数类型错误;
  • 日期格式错误;
  • 城市名称不规范。

可能原因:

  • 工具描述不清楚;
  • 参数约束不足;
  • 模型未按结构化格式输出。

解决思路:

  • 在工具契约中明确参数类型和格式;
  • 增加前置校验;
  • 对错误参数返回明确提示,让模型修正;
  • 对常见实体做标准化映射。

问题三:多轮任务中丢失上下文

现象:

  • 用户已经说过目的地,模型又问一次;
  • 前面工具结果没有用于后续步骤;
  • 长任务后期偏离目标。

可能原因:

  • 上下文过长被截断;
  • 状态没有持久化;
  • 只依赖模型记忆,没有结构化状态。

解决思路:

  • 将关键状态单独保存;
  • 定期做上下文摘要;
  • 将工具结果存入任务状态;
  • 每个步骤只加载必要上下文。

问题四:输出结果不稳定

现象:

  • 相同输入多次运行结果差异很大;
  • 格式时好时坏;
  • 有时遵循步骤,有时直接输出答案。

可能原因:

  • 模型随机性过高;
  • 提示约束不足;
  • 缺少结构化输出校验;
  • 评测次数太少。

解决思路:

  • 降低随机性参数;
  • 强化输出格式约束;
  • 增加后置校验;
  • 对关键任务进行多次采样并选择最稳定结果。

问题五:工具调用失败但智能体无法恢复

现象:

  • 工具超时;
  • 接口返回错误;
  • 智能体直接崩溃或输出无意义内容。

可能原因:

  • 没有错误处理;
  • 没有重试机制;
  • 模型不知道如何根据错误调整。

解决思路:

  • 对工具错误统一封装;
  • 对可重试错误进行有限重试;
  • 将错误信息以结构化方式反馈给模型;
  • 对不可恢复错误启用人工接管。

问题六:权限控制不足

现象:

  • 智能体可以调用删除接口;
  • 可以未经确认提交写操作;
  • 可以访问超出业务范围的数据。

可能原因:

  • 工具权限配置过宽;
  • 缺少白名单;
  • 没有区分查询类和写入类工具。

解决思路:

  • 按最小权限原则配置;
  • 写操作必须确认;
  • 危险工具默认禁用;
  • 所有调用记录审计日志。

优化建议

1. 性能优化

可以从以下方面优化:

  • 对重复查询结果做缓存;
  • 对可并行工具调用进行并发执行;
  • 对简单任务使用更轻量模型,复杂任务再升级模型;
  • 对长任务采用异步执行;
  • 对工具接口设置合理超时和重试策略。

2. 安全优化

建议持续完善:

  • 输入内容安全过滤;
  • 输出内容安全审核;
  • 工具调用权限隔离;
  • 高风险操作二次确认;
  • 日志脱敏;
  • 密钥轮换;
  • 访问审计。

3. 稳定性优化

建议引入:

  • 熔断机制;
  • 降级策略;
  • 失败重试;
  • 人工接管;
  • 任务状态持久化;
  • 幂等控制;
  • 超时控制。

4. 成本控制

可以从以下方面控制成本:

  • 限制最大迭代次数;
  • 限制上下文长度;
  • 缓存高频请求;
  • 对模型调用进行预算控制;
  • 按任务复杂度选择不同模型;
  • 避免无意义重复调用。

5. 可维护性优化

建议做到:

  • 工具契约配置化;
  • 提示词版本化;
  • 评测集版本化;
  • 执行轨迹可回放;
  • 指标看板可视化;
  • 配置变更可审计。

总结

本教程围绕 LLM、Agent 与 Harness 三个核心对象,给出了一条从概念到工程落地的完整路径。

首先,LLM 提供语言理解与生成能力,是智能体的核心引擎。其次,Agent 在 LLM 基础上加入目标理解、任务规划、工具调用、结果观测和状态管理,使模型从“会回答”升级为“能执行”。最后,Harness 通过样本管理、执行追踪、评测指标、安全控制和回归验证,让智能体从“可演示”走向“可运营”。

在实际落地时,建议重点关注以下几个方面:

  1. 任务边界必须清晰,避免智能体越权或误解目标。
  2. 工具契约必须明确,保证调用稳定和可校验。
  3. 执行循环必须可控,设置最大迭代、超时和降级策略。
  4. Harness 必须可追踪,能够记录每一步推理与工具调用。
  5. 评测体系必须持续运行,用数据驱动优化。
  6. 安全与权限必须前置设计,而不是上线后再补救。

如果后续要继续深入,可以进一步关注多智能体协作、工具编排平台、评测集自动生成、异常自动归因、任务成本优化以及企业级权限治理等方向。