AI 重塑云原生应用开发实战
邢云阳
联通云 AI 与容器技术专家
831 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 16 讲/共 28 讲
第四章:可定制 API Agent 原理与实战 (3讲)
AI 重塑云原生应用开发实战
15
15
1.0x
00:00/00:00
登录|注册

15|原理:可定制 API Agent 原理详解

你好,我是邢云阳。
在前两节课中,我们通过高德地图 API,在 GPTs 和 Dify 两个平台上体验了零代码构建 Agent 应用,相信你对产品设计思路已经有了较为清晰的理解。那本节课,我们就扒一扒 Dify 的部分代码,探讨一下其 API Agent 是如何实现的。
由于 Dify 的代码是用 Python 编写的,因此本节课会涉及到一些 Python 内容。对于不熟悉 Python 的同学,倒也不必担心,重点学习套路即可。毕竟现在是 AI 时代,使用 Cursor、通义灵码等工具,可以轻松理解和生成代码。不过我还是建议你抽空学习一下 Python,因为它是目前做 AI 开发的最佳实践。另外,由于本课程是采用的文字形式而不是视频,因此不可能将源代码全部贴在文章中,只能是截取部分重点的代码片段。因此你可以下载一份源代码在本地,对照着文章一起看,效果会更好。

ReAct 模板

在使用 Dify Agent 的过程中,我们知道其支持 Function Calling 和 ReAct 两种方法。Function Calling 属于大模型的标准化能力,不用太关注。我们可以着重看一下 ReAct 方案,看一下其 ReAct 模板与我们前面章节课程中使用的模板有何区别。
进入 Dify 源码根目录,依次进入 api -> core -> agent -> prompt 文件夹,可以看到一个 template.py 的文件。这里面存放的就是 Dify Agent 的 prompt 模板。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Dify Agent 的 ReAct 模板采用 JSON 格式,提高了输出格式的稳定性,同时包含提示词部分和历史对话,为大模型设置人设,规范其边界行为等。 2. API Agent 的工具全部使用 OpenAPI 的形式进行配置,包括 openapi、info、servers、paths、components 等几个模块,其中 components 模块定义了整个文档的可重用元素。 3. Dify 解析 OpenAPI 结构的代码通过调用 auto_parse_to_tool_bundle 方法进行文档解析,同时处理了 Swagger 转 OpenAPI 的逻辑,考虑到用户可能会混淆两种标准的规则。 4. Dify Agent 封装了一个方法用于处理流式响应中的每一个 chunk,代码定义了一个光标,从 reponse 的第 0 个字符开始,一个字符一个字符地向后读取并处理,处理的规则来自于 ReAct 模板中定义的大模型的返回格式。 5. Dify 在代码中会在每一次大模型返回后,抽取 usage 字段后的值,进行累加,从而得到真实的 token 消耗。 6. Dify 定义了一个 _invoke 方法,是通用 HTTP 工具,包含 assembling_request、do_http_request、validate_and_parse_response 和 create_text_message 方法,用于处理 API 工具的执行。 7. Dify 设定了轮次限制,避免 Agent 陷入死循环,白白浪费大量的 token。 8. Dify 支持多模态大模型,返回的消息有可能是文本、图片、链接等等,因此做了一个统一的消息结构,便于传递。 9. Dify 通过统计与大模型对话的每一轮 token 消耗,并作累加,得到一次调用 Agent 的真实 token 消耗,让用户了解使用 Agent 的真实情况。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 重塑云原生应用开发实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)