1、使用示例
Hawa 执行 github 统计任务,快速了解一下 Hawa Code 是如何自主识别补全Code Mode API 中缺失的 OutputSchema 。
任务
分析一下我的 github 账号下哪个项目 git 提交次数最多,这个项目每个提交人的提交次数分别是多少,不统计 fork 的项目
执行步骤解析
1、获取当前 github 账号信息
● Code(async () => { … |
2、查询当前账号下所有项目
Code(async () => { … |
3、获取 list_commits API 方法参数和描述
● Code(async () => { … |
4、在第一个仓库试一次 list_commits,确认返回结构。
● Code(async () => { … |
5、推断出出参结构并进行保存,同时统计出提交次数最多的项目
● Code(async () => { … |
5、提交最多的是 hcode-pages(3185 次)。接下来统计该项目每个提交人的提交次数。
Code(async () => { … |
统计结果
分析完成。以下是统计结果(已排除 fork 项目,共 46 个非 fork 仓库)。 |
2、OutputSchema 自主学习
2.1、OutputSchema 缺失
Hawa Code 把 MCP 转换为 Code Mode provider API,然后通过 JavaScript 代码级联调用这些 API 执行任务。
MCP 工具都会提供 InputSchema,可以保证工具正确调用,但是很多 MCP 工具都没有提供 OutputSchema,这就导致模型无法判断出参结果,从而无法做到代码级联调用。
2.2、OutputSchema 解析
如果 MCP 工具没有提供 OutputSchema,比较简单的方式是通过工具的返回结果推断 OutputSchema,这个方式常规场景中都是可行的,其有两种方案:
- 执行调用时候程序通过返回结果生成 OutputJSONSchema,优势是不需要模型参与。
- 通过模型自主的判断 OutputJSONSchema,优势是可以提高准确性。
Hawa Code 采取的方案就是第二种,符合 Hawa Code 理念“模型会越来越聪明,应该让模型去主导更多的事情”。同时模型可以提高准确性,比如返回结果是一个枚举值,模型可以通过多次的返回结果去订正 OutputJSONSchema。
在以上的示例中 HawaCode 首先从第一个仓库试一次 list_commits,确认返回结构。然后进行了保存。模型可以选择多种方式和合适的时机去解析 OutputSchema 结构。
2.3、渐进式学习
在以上的示例中,Hawa Code 执行了多次调用,相比传统的工具调用大量减少了模型调用次数,示例中不存在分页多次调用问题,Hawa Code 在多次使用 Github API 过程中会逐渐补全缺失的 OutputSchema,如果 OutputSchema 是全量的,Hawa Code 执行两次模型调用就可以完成此任务。
- 获取 API 描述和出参和入参结构
- 执行业务落地代码调用。
Code Mode 非常适合处理复杂的业务逻辑任务,而对于传统的工具调用就很难做到,比如执行上千次分页调用。
欢迎了解使用 Hawa Code:https://www.hawacode.com/docs/