ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

亚马逊云科技智能投标 Agent 跑 Agent Harness 长任务,Base URL 填 TaoToken

亚马逊云科技智能投标 Agent 跑 Agent Harness 长任务,Base URL 填 TaoToken 亚马逊云科技智能投标 Agent 把标书编制拆成招标文件解析、大纲生成、多 Agent 并行撰稿、标书智能核查、Word 输出六段靠 Agent Harness 状态机管住整条链路我把模型接入层收口到 TaoToken先去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 注册账号并创建 API Key。真正让这套编排跑不稳的地方通常不是状态机画得对不对而是每一环反复调用模型时接到了哪里——解析要长上下文、撰稿要生成质量、核查要跨文档一致性Supervisor Agent 还得先把解析、撰稿、审核三类需求识别出来再分派。中途断网、关机、换设备之后Harness 要按已保存的状态续跑可如果每个专项 Agent 各接一个通道断点恢复后的操作记录就散在好几把 Key 上审计时根本对不齐。所以我做的事不复杂让所有 Skill 和专项 Agent 的 Base URL 都指向同一个 https://taotoken.net/apiSupervisor 调度三类任务时走同一入口Key 只承担模型调用这一层的职责。1. 六段链路和 Agent Harness 状态机断点到底存在哪1.1 招标文件解析之后每一步都是一个可恢复的状态节点这套方案把标书编制切成六段每段之间不是函数调用而是一个带输入快照和输出产物的状态节点。招标文件解析完成落下来的是结构化字段大纲生成完成落下来的是章节目录与要点映射多 Agent 并行撰稿产出的是一堆草稿分片标书智能核查产出的是问题清单和修改建议最后 Word 输出把前面所有产物拼成一份可交付文档。理解这一点很关键状态机真正保护的不是「进程」而是「每个节点已经算出来的结果」。断网、关机、换设备之所以能续跑是因为 Harness 会在每个节点边界把状态写进持久层重启后从最后一个完成节点继续而不是从头再解析一遍几百页招标文件。这也意味着节点越重写状态的时机越要谨慎撰稿这种耗时最长、最容易被打断的阶段通常还要在分片粒度上再存一次。1.2 Supervisor Agent 分派三类任务时的判断依据Supervisor 在链路上的位置比较特殊它不直接生产标书内容只负责识别「这次请求属于哪一类」然后交给对应专项 Agent。原文把它的职责概括为识别解析、撰稿、审核三类需求再分派落到实现上判断依据一般来自当前所处阶段、上一步产物的类型、以及人工确认节点返回的选择。解析类输入是原始招标文件需要长上下文把项目背景、评分办法、技术参数一次性吃进去输出偏结构化字段。撰稿类输入是大纲和要点需要稳定的长文本生成可能要拆成多个分片并行跑。审核类输入是已生成草稿和招标原文需要交叉比对重点在于判断一致性和漏项。三类任务对模型的偏好不同如果把它们的接入配置写在三个地方一旦某把 Key 到期或者模型名变了就会出现「解析能跑、撰稿报错」这种很难第一眼看出来的半瘫状态。统一入口的价值就在这里。1.3 三处强制人工确认节点为什么必须写进状态原文强调的三处人工确认节点是这套长链路里唯一能让人类介入、又不会破坏状态机的地方。典型设置是解析结果确认、大纲确认、核查结论确认。这三处不只是弹个框等点击而是要把「谁确认的、确认时的产物版本、确认后是继续还是回退」一起写进状态。一旦这三处进了状态断点恢复的逻辑就变得更细重启后不仅要问「上一个完成节点是哪个」还要问「有没有卡在待确认的节点上」。如果 Skill 层用的是统一入口这三个节点的操作记录可以共用同一条 Key 维度去查出问题时能快速定位是模型调用失败还是确认动作本身没落库。2. 把 Skill 与 Supervisor 的 Base URL 收口到 https://taotoken.net/api2.1 去 TaoToken 拿一把只做模型调用的 Key模型接入这一步原文里对应的是「配置底座与模型通道」改写后落在 TaoToken 上。打开 TaoToken注册账号之后在控制台创建 API Key得到的字符串在下面所有配置里都用占位符YOUR_API_KEY表示。这里要划清一条边界这把 Key 只负责调用模型不负责调度任务、不负责存取状态、也不碰你们的标书文件。Harness 的状态存储、产物落盘、权限校验仍然走你们自己已有的方案。把它单独拎出来是因为长任务最怕权限和职责混在一起出了问题很难切割原因。创建完 Key 之后别急着一次性铺到所有 Agent 上。先留一把用来验证等单项 Agent 跑通再复制到全局配置这样出错时能立刻判断是配置问题还是链路问题。2.2 专项 Agent 和 Skill 都填同一个 Base URLTaoToken 提供的是统一 API 入口把它填进 Agent 的模型调用配置时地址写https://taotoken.net/api末尾不要加/v1。这条规则要重复三遍因为多数 SDK 会自己在后面拼路径手写/v1会直接变成双段路径。Supervisor 和各个 Skill 都用同一个 Base URL好处是可预期断点恢复后所有节点仍然打向同一个入口操作记录天然对齐。模型 ID 换新时只需要改配置里的一处不用逐个 Skill 去找。任何一条调用异常都能按同一把 Key 在控制台排查不用在多个供应商之间跳。模型 ID 不要凭印象写去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 的模型广场看当时可用的列表把对应 ID 抄进配置。写YOUR_MODEL_ID占位比写一个过期名字安全得多。2.3 Harness 配置示例环境变量与 agents 配置多数自研 Harness 会先读环境变量再读配置文件所以最省事的做法是把入口和 Key 放进环境变量让所有 Skill 引用同一个变量名。配置结构请按你们 Harness 的实际字段替换下面的示例只表达「同一入口、同一 Key、可单独指定模型」这三件事。# .env —— Harness 启动时加载模型调用只认这一组 LLM_BASE_URLhttps://taotoken.net/api LLM_API_KEYYOUR_API_KEY LLM_MODELYOUR_MODEL_ID# config/agents.yaml —— 字段名按你们 Harness 的实际结构替换 supervisor: base_url: https://taotoken.net/api api_key_env: LLM_API_KEY dispatch: parse: bid_parse draft: bid_draft review: bid_review skills: bid_parse: base_url: https://taotoken.net/api api_key_env: LLM_API_KEY model: YOUR_MODEL_ID outline_gen: base_url: https://taotoken.net/api api_key_env: LLM_API_KEY model: YOUR_MODEL_ID bid_draft: base_url: https://taotoken.net/api api_key_env: LLM_API_KEY model: YOUR_MODEL_ID bid_review: base_url: https://taotoken.net/api api_key_env: LLM_API_KEY model: YOUR_MODEL_ID配置里刻意没有给每个 Skill 写不同的base_url就是为了让 Supervisor 分派三类任务时无论落到哪个专项 Agent出口都一样。如果你们确实需要给核查类单独换更擅长长文比对的模型改model字段即可base_url保持一致。3. 先只开「招标文件解析」验证三要素能正常抽取3.1 单项 Agent 的验证清单项目背景、评分标准、硬性参数不要在第一次接入时就把六段链路全打开。长任务一旦某一步返回了空结果状态机还可能把它当成正常完成往下走最后在 Word 输出阶段才发现整份标书缺内容。正确的顺序是先只启用「招标文件解析」这一个 Skill把上游和下游都暂时断开让它单独跑一份真实的招标文件。验收标准就三条项目背景能否被抽成结构化字段而不是一段没切分的原文。评标打分标准能否按评分项拆开分值和技术要求能不能对上。硬性技术参数能否被识别为硬性条目而不是混在描述性文字里。这三类信息抽不对后面的大纲和撰稿都是建在沙子上。反复跑三四份不同格式的招标文件确认解析结果稳定再往下走。这个阶段模型调用次数不多正好用来确认 Base URL 和模型 ID 没填错。3.2 再逐步打开大纲生成与多 Agent 并行撰稿解析稳定之后打开大纲生成先串行跑观察大纲和解析产物之间的引用关系是否正确。确认没问题再打开多 Agent 并行撰稿这时候 Token 消耗会明显抬起来因为并行分片会同时打向模型接口。这一步要盯两个东西一是并发上去之后有没有出现限流或超时二是并行分片写回状态时有没有互相覆盖。前者和入口的稳定性有关后者是你们 Harness 自己的锁粒度问题两者要分开看别混成一个 bug。如果并发一上去就报错先把并行度降到二逐步往上加找到稳定区间。3.3 断电重启后检查断点是否沿用同一把 Key验证阶段最值得做的一次实验是在撰稿跑到一半时直接杀掉进程再重启 Harness看它是否从最后一个完成节点继续而不是从头再来。这里有个容易被忽略的检查点恢复后的模型调用用的还是不是同一把 Key。如果配置里写死了 Key恢复后自然一致如果 Key 是从某个临时环境读进来的重启后可能变成空值或者另一把这时任务表面在跑操作记录却断成了两截。所以恢复测试时除了看任务有没有继续还要回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 看这段时间的调用记录是否连续。三处人工确认节点也要各测一次确认在待确认状态下重启Harness 能正确停在原地等你确认而不是自己跳过去。4. 长任务里几类典型报错断点续跑后 401、404 怎么对4.1 401恢复后读到了旧 Key 或空 Key401 在这套链路上最常见的成因不是 Key 错而是「恢复后读到的是另一个值」。比如本地调试时手动导出过环境变量服务重启后那份临时变量没了配置读到空字符串或者团队里有人换过 Key但状态里记录的还是旧的那把。排查顺序是先打印实际生效的 Key 前缀确认是不是空值再去控制台确认这把 Key 是否仍然有效。还有一种情况是 Key 本身没问题但权限范围只覆盖了部分模型用在核查类 Skill 上就返回 401。这种时候把配置里的 Key 换成同一条记录里的另一把对比测试能很快分清是权限问题还是网络问题。4.2 404Base URL 末尾被补了 /v1404 多数是路径拼出来的。填进工具的 Base URL 是https://taotoken.net/api末尾不要带/v1也不要带 UTM 参数。有些 SDK 会默认在后面追加版本段如果配置里也写了/v1请求就会变成两段版本路径接口自然找不到。对照检查的方法很直接把配置里的 Base URL 和实际请求日志里的完整 URL 并排看。如果日志里出现了两个版本段或者混进了查询参数就是拼接问题。改完记得清一次缓存再重启 Harness有些运行时会缓存已经拼好的客户端。4.3 任务停在中间超时重试与状态回写长任务还会遇到一种不报错的失败请求超时后 Harness 自己重试成功了但状态里记的是第一次的失败结果于是断点位置和实际产物对不上。这种情况通常在核查阶段暴露表现为问题清单里出现了已经改过的条目。处理方式是在状态回写时带上调用标识让重试后的成功结果覆盖掉失败记录而不是追加。配置层做不了这件事但统一入口能帮你把这类问题限定在同一个调用维度里观察排查时不用先去确认是哪一个供应商的请求出的岔子。5. 接上自有知识库之前把入口和 Key 都固定下来5.1 模型对话里先试一条同 Key 的请求配置写完、单项 Agent 也跑通了建议再做一次旁路验证用同一把 Key 在 TaoToken 模型对话 里发一条测试消息确认模型 ID 和入口都对得上。这一步能把「配置格式错误」和「Harness 逻辑错误」彻底分开省掉很多来回猜的时间。如果这套长任务要长期跑可以顺手看一下 Coding Plan 的套餐是否够用后续要再建新 Key走 控制台 API Keys 就行。需要多 Agent 长任务统一模型入口的团队从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 领取 Key 后就能把这条链路接上你们已有的知识库流程解析、撰稿、核查三环共用同一个出口断点恢复和操作记录也就不用再逐把 Key 去核对了。
返回列表