AI 重塑云原生应用开发实战
邢云阳
联通云 AI 与容器技术专家
869 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 17 讲/共 28 讲
第五章:AI 微服务——云原生 API 网关到 AI 网关的蜕变 (1讲)
AI 重塑云原生应用开发实战
15
15
1.0x
00:00/00:00
登录|注册

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

你好,我是邢云阳。
经过了几节课的产品体验和源码学习后,终于要来到实践环节了。在本节课以及下一节课,我会带你参考 Dify Agent 的思路,用 Go 语言做一个零代码可配置的 API Agent 产品出来。
之前有同学问过我,这个课程为什么要用 Go 语言来做,做 AI 开发的主流语言不应该是 Python 吗?在这里,我做一下统一回答。
我们知道云原生应用开发的“母语”是 Go,而学习这个课程的同学大多数是做云原生开发,希望额外学习 AI 相关的知识提升自己的。因此,使用 Go 语言来做课程,会让大多数同学上手更加方便,理解起来也会更加容易。试想,如果原理真的理解了,能用自己最熟悉的语言零框架手撸出来了,那需要用到 Python 或者一些第三方框架,比如 LangChain 时,上手也会非常的快。
第二点是在云原生的某些场景下,无法使用 Python 语言进行开发,比如下一章节要给你讲解的云原生网关以及 wasm 技术,就暂时不支持 Python 语言。所以我在综合考虑后,决定全程用 Go 语言来做课程。在这里也希望你能够摆脱语言的束缚,重点学习原理以及套路,将来不管用到什么工具时都能够从容应对。
那么言归正传,我们开始进入今天的实战编码环节。

ReAct 模板

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

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
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部