16|实践:用Go语言手写可定制API Agent(上)

ReAct 模板
- 深入了解
- 翻译
- 解释
- 总结

1. 本节课使用 Go 语言做一个零代码可配置的 API Agent 产品,因为云原生应用开发的“母语”是 Go,而学习这个课程的同学大多数是做云原生开发,希望额外学习 AI 相关的知识提升自己的。 2. Go 语言提供了强大的模板引擎,text/template 包可以帮助实现动态填充模板内容,使得在 Go 中实现与 Python 相似的功能成为可能。 3. 通过本地 YAML 配置文件解析的方式来模拟 Dify 中通过在 UI 上填写工具信息的方式来完成工具创建。 4. 完成配置文件的导入后,拿到了 OpenAPI 文档,规定用户只能使用 OpenAPI 3.0 及以上版本的格式,低版本的 Swagger 格式不支持。 5. OpenAPI 解析的过程是将 OpenAPI 文档转化成 APIToolBundle 的过程,需要定义好相应的结构体。 6. APIToolBundle 参考 Dify 的设计,需要将 URL、Method、Summary、OperationID、Parameters 拆解出来,一方面需要拼接 ReAct 模板的工具部分,另一方面在后面调用通用 HTTP 方法时也会使用。 7. 在配置导入环节,利用 YAML 反序列化,将文档的各段注入到结构体中。 8. 在 APIToolBundle 结构体中还设计了 OpenAPI 参数,存储每一条路由的 Method 所对应的值,目的是在后续做参数解析拼装时,判断参数是 query 参数还是 requestBody 参数。 9. 本节课讲解了如何设计本地 YAML 配置文件的方式来模仿 Dify 前端配置工具参数的过程,以及用 Go 模板语法实现 python 模板的同款效果,从而让 ReAct 模板变得直观,易扩展。
《AI 重塑云原生应用开发实战》,新⼈⾸单¥59