链载Ai

标题: Doc2Agent“爬”了所有API文档,一键API,MCP简单了 [打印本页]

作者: 链载Ai    时间: 昨天 13:49
标题: Doc2Agent“爬”了所有API文档,一键API,MCP简单了

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 13px;line-height: 1.75;letter-spacing: 0.442px;text-align: justify;">我想问您一个问题:上次为了让AI代理调用某个第三方API,您花了多长时间写包装代码?一天?三天?还是一周?不过现在,Brandeis大学的研究者们带来了一个让人眼前一亮的解决方案——Doc2Agent,它能从API文档直接生成可执行,MCP可调用的Python工具,而且成功率还挺不错。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 13px;line-height: 1.75;border-left: 4px solid rgb(15, 76, 129);border-radius: 6px;color: rgba(0, 0, 0, 0.5);background: rgb(247, 247, 247);">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 13px;line-height: 1.75;letter-spacing: 0.442px;color: rgb(0, 0, 0);text-align: left;">链接:https://github.com/coolkillercat/Doc2Agent[1]

title

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 15.6px;line-height: 1.75;display: table;color: rgb(255, 255, 255);background: rgb(15, 76, 129);text-align: center;">真实世界的API有多"野"

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 13px;line-height: 1.75;letter-spacing: 0.442px;text-align: justify;">现在大部分AI代理框架都假设API文档是完美的——格式统一、参数清晰、示例完整。但现实是什么样的呢?研究者们收集了167个真实API文档,发现只有24个算得上"高质量",剩下的要么缺参数示例,要么文档格式乱七八糟,有些甚至连基础URL都没写清楚。这就像您拿到一份没有说明书的家具,却要求马上组装好一样困难。

图1 现实 API 与 AI 代理的鸿沟ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 13px;line-height: 1.75;max-width: 100%;display: block;border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 8px;height: auto !important;" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=116367&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9JdXJrMWlhZjR4ZEdudlV4eWcxRWlidTduaWNEVG94dk5IY0JBUm1JWkJpYVJWUThpYWtwWlFKVHdxZEh4WkZsZmRUTnNmYzJDUndLQUUyTkVqQjVISWJGUWNBLzY0MD93eF9mbXQ9anBlZyZhbXA=;from=appmsg"/>

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 15.6px;line-height: 1.75;display: table;color: rgb(255, 255, 255);background: rgb(15, 76, 129);text-align: center;">Doc2Agent的四步"魔法"

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;orphans: 2;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 13px;line-height: 1.75;letter-spacing: 0.442px;text-align: justify;">Doc2Agent的核心思路其实很直观:既然人能从文档理解API怎么用,那AI为什么不行?它设计了一个四步流程——工具生成、工具验证、工具优化、代理部署。第一步用GPT-4o从HTML或Markdown文档中提取结构化信息,就像您阅读文档时会标记重点一样。接下来把这些信息转换成Python函数,每个API调用都被包装成一个独立的工具。图2 Doc2Agent 自动化流程概览ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 13px;line-height: 1.75;max-width: 100%;display: block;border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 8px;height: auto !important;" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=116367&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9JdXJrMWlhZjR4ZEdudlV4eWcxRWlidTduaWNEVG94dk5IY2lhZGNrRng0enRaeExhbXhWZDlSMTgxMGF3UDhlbzB4TUZhNHQyNndpYkduU1VqdnRRQ2lhcXQ5US82NDA/d3hfZm10PWpwZWcmYW1w;from=appmsg"/>

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;letter-spacing: normal;orphans: 2;text-align: start;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;font-size: 14.3px;line-height: 1.2;border-left: 3px solid rgb(15, 76, 129);">自动修复:Claude来当"调试专家"

工具生成后怎么保证能正常运行呢?Doc2Agent设计了一套验证机制,用GPT-4o判断API响应是否符合预期,如果出错就让Claude-3.5-Sonnet来修复代码。这个组合很巧妙——GPT-4o善于理解和评估,Claude善于写代码和调试。最多经过三轮迭代,大部分工具都能达到可用状态,就像有个经验丰富的同事在帮您调试一样。

技术细节:模板化生成的巧思

从代码实现角度看,Doc2Agent的工程化做得很扎实。它为不同HTTP方法准备了模板(GET、POST、PUT、DELETE),支持动态参数注入、认证函数集成、错误处理等。最有意思的是它的"目标导向生成"策略——对于复杂API,先生成一个函数"指纹"(定义用途和输入输出),再基于指纹生成完整代码。这就像先画草图再填细节,让生成的工具更贴近实际使用场景。

实战验证:跨境电商AI客服的完整实现

为了验证Doc2Agent的实际效果,我基于作者源代码开发了一个专门针对跨境电商场景的Doc2Agent代码,使用DeepSeek v3替代GPT-4o进行文档解析,Deepseek R1负责代码修复,配合SentenceTransformer实现参数智能匹配。

上下滑动查看更多

Slide left and right to see more

实测结果如上:处理Stripe支付API仅需84秒,DHL物流API用时101秒,基础功能测试100%通过,自动修复后代码可直接用于生产环境。传统方式下一个5人团队需要2-3个月才能完成的API集成工作,现在90秒就能自动生成包含完整错误处理、类型注解和测试示例的生产级代码。

以上图跨境电商Doc2Agent生产的create_payment_intent(创建支付意图)工具为例,这并非一个简单的API调用封装,而是一段生产级的Python代码:

可以说,Doc2Agent输出的不仅是一个能跑通的脚本,而是一个遵循了软件工程最佳实践、可以直接集成到严肃商业项目中的可靠工具。

这种自动化带来的商业价值是显而易见的。按照每个高级工程师1000元/小时计算,传统API集成成本约20,000元/个,而自动化方案几乎为零成本,ROI超过1500%。更重要的是,生成的代码可以直接被AI客服调用:客户询问支付问题时,系统2秒内自动创建新支付链接;查询物流时,3秒返回包裹详细状态;价格换算1秒完成实时汇率计算。对于需要快速集成多个第三方服务的创业公司来说,这种"一个文件、开箱即用"的解决方案堪称降维打击,让原本需要专业开发团队数月完成的工作变成了产品经理也能搞定的配置任务。

参数推断:让AI"猜"得更准

图3 参数数据库与语义匹配示意

这里有个很有意思的发现——当API文档缺少参数示例时,直接让GPT-4o猜测的成功率很低。所以研究者们想了个聪明的办法:构建一个参数数据库,从已经验证成功的API响应中提取参数值,然后用语义相似度匹配来推断新API的参数。比如一个API需要"user_id"参数,系统会从数据库中找到类似的用户标识符,成功率比盲猜高了一倍。

WebArena测试:55%性能提升的秘密

图5 WebArena 各方法对比数据表

在WebArena基准测试中,Doc2Agent表现确实不错:平均成功率从29.2%提升到45.3%,这是55%的相对提升。更重要的是成本控制——每个任务只需要0.12美元,而直接调用API的方法需要1.20美元。为什么会有这么大的差异?主要是因为工具化后,代理不需要每次都解析冗长的API文档,而是直接调用现成的Python函数。

糖生物学:从零到专家级应用

研究者们还做了一个很有意思的实验——为糖生物学领域构建专门的AI代理。这个领域的API特别复杂,不同数据库用的标识符和格式都不一样,比如同一个糖分子可能有IUPAC、GLYCAM、GlyTouCan ID等多种表示方法。Doc2Agent自动生成了70个工具,成功率达到81.5%,证明这套方法在专业领域也很实用。

MCP集成:无缝对接现有框架

您可能担心这些生成的工具怎么集成到现有项目中?Doc2Agent支持两种部署方式:MCP服务器和OpenAPI规范导出。MCP是Anthropic提出的标准协议,可以直接集成到Claude Desktop、LangGraph、LlamaIndex等框架中。想象一下,您只需要把API文档丢给Doc2Agent,几分钟后就能得到一套完整的工具包,直接在您的AI应用中使用。

局限性:不是万能药

当然,Doc2Agent也有局限性。它依赖现有的API文档,对于没有文档的API就束手无策了。另外,对于有状态的API(需要多步操作的),验证机制还不够完善。还有就是参数推断主要依赖API间的依赖关系,如果是完全独立的API,效果会打折扣。不过考虑到这是第一个系统性解决这个问题的方案,这些局限性都可以理解。

现在就可以试试

如果您正在开发需要大量API集成的AI产品,不妨直接试一下Doc2Agent。虽然现在还是研究阶段,但核心思路已经很成熟了。您可以考虑在项目中实验这种自动化的API包装方法,特别是对于那些文档质量不高的第三方服务。毕竟,能让机器做的事情,为什么要让人来做呢?






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5