我被AI智能体整破防!如何像搭积木一样构建Agent
视频演示了如何利用字节扣子(Coze)平台,结合DeepSeek R1的工具调用功能和工作流,像搭积木一样构建具备联网搜索能力的AI智能体。
UP主: 技术爬爬虾 · 时长: 9:27 · 🔗 B站原视频
发布: 2025-03-21 · 收录: 2025-03-24
标签: AI Agent · Coze · DeepSeek R1 · 智能体开发 · Function Call
DeepSeek R1 的痛点:不支持 Function Call
DeepSeek R1 有一个巨大的痛点:不支持 function call。这也是很多 DeepSeek 爱好者们的意难平,GitHub 上开发者们纷纷留言表达了这个诉求。
Function call 简单来说,就是 AI 调用外部工具的能力。随着最近 Manus、MCP 等工具的火热,AI agent 受到了更多的关注。优秀的工具调用能力是 AI agent 的基石。
就在最近,字节的扣子(Coze)率先独家上线,支持了 DeepSeek R1 的 function call 功能,让模型具有深度思考的同时,也掌握了工具调用的能力,从而可以构建起更强大的 AI 应用智能体。
本期目标:做一个“毒辣点评”工作流
本期视频我准备创建一个结合联网搜索、读取文章内容、最后整理数据的工作流,用这个工作流搜集关于我自己的资料,让 DeepSeek 用辛辣犀利的语言来点评一下,看看它对我的评价是什么样的。
在扣子创建智能体并测试工具调用
我们来到扣子的官网(链接我放在评论区置顶)。点击小加号,这里选择创建一个智能体,随便起个名字,点击确认。
先测试一下 DeepSeek R1 的 function call 功能:在模型这里选择 DeepSeek R1(工具调用),然后点击插件这里的加号,给模型添加插件(也就是添加能力)。
随着扣子生态的日趋完善,插件市场里面的插件丰富了不少。灵活选用插件,可以极大拓展智能体的能力边界。
用“热搜聚合榜”插件测试:AI 会自己挑工具
这里我先搜索一个热搜插件:热搜聚合榜插件,包含各大平台的今日热搜内容,点击添加。
我问 AI:今天计算机技术、AI 领域的热点有哪些?
我们看到 DeepSeek R1 在思考阶段就已经选择好要使用的工具了。在等待工具调用过程中,它的思考过程是暂停的,看起来很智能。调用完工具拿到热搜榜单以后,它又进行了一段思考,最后成功过滤出当前热点,整理成段,并形成正确输出。
再加一个“思维导图”插件:输出可视化
接下来再添加一个新的插件。我在插件这里点击加号,选“Chu Man 的树图”(自动绘图工具),可以把模型输出变成可视化的思维导图。
我再试一下:把今天的热点整理成图。
我们不需要明确指明要使用哪些工具、以及使用顺序,AI 会智能地从工具箱里选取最适合的工具分步骤执行。它先调用热搜榜聚合,接下来又调用树图形成思维导图,最终输出了一份完整的今日热点思维导图,结构清晰、内容准确。
新建“毒辣点评博主”智能体:只用插件不够稳
接下来我新建一个智能体,完成开头的需求,名字叫“毒辣点评博主”,点击确认。
先给它添加两个插件:Bing 搜索、链接读取。我希望 AI 先搜索查找关于“技术爬爬虾”的网站,再用链接读取读取网站内容,最后总结,并用辛辣犀利的文字评价。
我还是选择 DeepSeek R1 的工具调用版,提示词是:用辛辣犀利的语言点评下博主“技术爬爬虾”。
结果 DeepSeek 只调用了 Bing 搜索工具,搜到了一些表层链接和标题,并没有按预期使用第二个工具“链接读取”去深入了解文章内容,所以输出有点浮于表面,点评也不够犀利。
如果想更精确地控制插件用法与数据流,就得借助 Coze 的进阶功能:工作流。
用工作流搭积木:搜索 → 读取 → 拼接
接下来上手体验工作流。在工作流这里点击加号,创建一个全新的工作流。
注意:工作流描述是重点,要描述清楚这个工作流是做什么用的,大模型才知道什么情况下应该调用工作流。我这里的描述是:在网上搜索关于博主的创作内容。点击确认。
第一步先修改输入节点:输入变量名叫 input,我希望这个变量就是“博主的名字”,比如“技术爬爬虾”。在变量描述里写清楚“输入值就是博主的名字”,有助于大模型理清业务逻辑、正确传递参数。
接下来添加两个节点:Bing 搜索、链接读取,把两个插件放到工作流里面,然后用线把它们连起来,就像搭积木一样。
然后调整节点的输入输出:
- Bing 搜索节点最重要的是“查询词”,我让查询词等于第一步输入参数(博主名字)。
- 链接读取节点:前一步搜索出来的是一个列表(网站列表),我希望所有网站都被读取到,所以切换到批处理变量名,选择上一步搜索到的网页列表,把批处理里的 URL 配上。
读取完成后,它的输出是一个列表。我需要把列表里所有内容拼接到一起变成完整段落,再输出。
用代码节点把内容列表拼接:修正点号取值错误
我新加一个“代码”节点,用写代码的方式搞定拼接。我把线连到代码上,再把代码连接到输出。
代码输入是上一步输出的列表,我把 output_list 填写过来。进入 IDE 编辑,我习惯用 Python,就切换到 Python。
我先定义一个变量 result 作为最终输出,然后输出里只保留一个 k0,把 result 填进去。
接着写循环,把列表里所有内容读出来,拼接到 result 里。
我看了一下 input 的数据结构:它是一个列表,每一项都有 data,data 里面有 content。我要取的就是这个 content。
我点击测试代码,构造数据结构测试:最外层是列表,每一项都有 data,data 里面又有 content。运行后报错:字典类型没有 input 属性,所以代码里用点号取值不行,需要换成 Python 字典取值。
我把取值方式替换成 get:get("input")、get("data")、get("content")。再测一次就 OK 了,看到 123 都被拼接到输出里。
下面输出我也改一下,只需要一个 k0,把其他变量都删掉。最后把代码输出作为整个流程输出,放到 output 里,选择代码的 k0。工作流完成。
右上角点击发布。
把插件移到工作流里:智能体只挂工作流
因为两个插件已经在工作流里使用了,在智能体外面就可以移除掉。取而代之的是把工作流添加到智能体里面。
再测试一下:DeepSeek 已经调用了工作流,在网上查找了一些关于我的内容,最终结果也相当犀利。
不过这里混进来一些奇怪的东西,比如“科普皮皮虾养殖防逃网”,代码截图里还混着清蒸海鲜教程、皮皮虾养殖教程、水温精确控制之类的。
问题主要出在工作流的搜索内容:Bing 搜索混进了皮皮虾养殖技术、爬爬虾怎么烹饪等无关内容。
增加大模型节点做过滤:只留技术/AI相关
所以我要改进工作流,把无关内容排除掉。
我们回到工作流,我在代码后面再插入一个新的节点,这次选择“大模型”。把线连接好,大模型输入选择上一步输出。
我让大模型做的事情是:剔除内容里关于爬爬虾养殖、皮皮虾烹饪等内容,只保留计算机技术与 AI 相关的,然后输出到 output。
再把 output 这根线连到最后输出,并把工作流输出调整成大模型的输出。右上角点击发布。
再测试最终输出,这次味儿就对了。
被“毒舌点评”整破防:提示词一改风格就变
这次输出非常犀利,比如:
“开源界的缝合怪像极了菜市场简陋的大妈,什么技术火就薅什么羊毛。”
特别是后面那句:
“那个所谓的微信朋友圈导出工具,真正需要的用户可能还没有弹幕多。”
这句话真把我说破防了。我真的是自己凭空创造需求,做一些大家都用不到的东西。
后面还有“白嫖教派的当代传人”“AI 时代的人工智障知识付费的泥石流”,总结也很犀利,句句打到痛处。
我们也能看出 DeepSeek 对语言的驾驭能力很强。
然后我换一个提示词:用褒奖的语言点评下“技术爬爬虾”。
DeepSeek 还是调用了工作流来获取资料,这次输出风格立马就变了,“不仅彰显了深厚的专业功底,更流露出极客精神的纯粹与热忱”。同样一段素材,仅仅改了一个提示词,正反话都让它说完了,很有意思。
总结:插件调用 + 工作流,让 Agent 更像积木搭建
本期视频我们试用了扣子的插件调用与工作流,让 DeepSeek 在具有深度思考的同时,掌握了工具调用的能力。
扣子的插件商店目前拥有国内最完善的插件生态,加上 DeepSeek 顶级的推理能力,我们可以轻松创建出更聪明、更好用的 AI 智能体。
感兴趣的观众可以点击评论区链接,一起来试试。今天的视频就到这里,感谢大家,我们下期再见。