微信扫码
与创始人交个朋友
我要投稿
本次分享,带大家熟悉 Dify
中另外两个重要概念 -- 智能体
+工作流
,进而打造一个图像生成专家
。
Dify 中,有几个概念不太容易区分,很多小伙伴问:
下图聊天助手
和智能体
到底有什么区别?工作流
又是啥?
笔者一开始进来也懵,进去体验一番,也只能有个感性认识。
为了回答上述问题,特地去查了官方文档,下面用大白话分享给大家:
聊天助手
:主要面向对话式应用,咱们前几篇教程都是基于聊天助手
搭建。它有两种搭建方式:其中基础编排
一个大模型就可以搞定,而工作流编排
则适用于多步逻辑/多个模型的对话式应用。文本生成应用
:只支持单次对话,适用于文章生成、翻译等任务。
Agent
:完全自主化的智能体,对复杂任务进行规划、拆解、工具调用、迭代。适用于要调用外部工具
的场景。Dify 为Agent
提供了 Function calling(函数调用)和 ReAct 两种推理模式。
工作流
:面向自动化场景,适合数据分析、电子邮件自动化等。
值得注意的是:工作流
支持发布为工具,然后在Agent
中调用。
下面,我们就来实操这个过程:用工作流
的方式创建一个图片生成工具
,然后在图片生成Agent
中调用。
AI 图像生成技术已经非常成熟,从 SD 到 Flux 再到最近的小熊猫,高质量、高分辨率且逼真的图像,已不再难求。
然而,这些模型通常比较大,本地部署成本非常高,为此,推荐大家前往硅基官网注册一个账号,体验它的免费模型!
注册成功后,新建一个 api_key,下面会用到。关于如何获取 api_key,猴哥之前多次分享,这里不再赘述!
在创建空白应用这里,选择工作流
:
进来后,页面只有一个开始
组件,给它添加上两个字段,用于后续请求图像生成API:
你怎么知道添加哪些字段呢?
参考硅基的API文档:https://docs.siliconflow.cn/api-reference/images/images-generations
Body 内需要的字段,就是我们要准备的:
然后,在开始
节点后面新建一个节点:HTTP
请求,填写如下:
这里有几点需要注意:
Json
格式,字段务必加上双引号。HTTP请求
节点输出的标准的 response,为了提取其中 Body 中的内容,我们需要一个代码执行
节点,把生成图片的 url 拿到。
代码执行
节点,编辑如下:
这里有几点需要注意:
直接将代码执行
节点的 url 字段输出:
最后,点击右上角发布
,记得最下方完成配置,才能发布为工具:
如下图所示,给工具起一个英文名字,工具描述这里,尽可能详细,明确具体用途,方便大模型按需调用!
工具入参,也要加上描述,以便大模型能够生成对应的参数值,提高调用成功率!
至此,一个图像生成工具
就制作完成了。
下面,我们创建一个 Agent 来调用它。
创建应用,选这个:
Step 1: 在下方把刚做好的图像生成工具
加上:
Step 2: 编写角色提示词:
Step 3: Agent 设置:
图中的大模型只支持 ReAct 方式实现函数调用,如果你的模型支持 Function call,可进行选择。
Step 4: 调试和预览:
如果希望实时显示图像呢?
来,修改一下提示词:
根据用户输入,生成给图像流工具{{generate_image}}的参数:提示词和图像尺寸,
获得最终的生成图像的url,并显示最终的图像
如果我指定了尺寸,智能体会自动选择一个最匹配的尺寸参数,如下图所示:
生成效果不咋样?
对,提示词最好改为英文,以确保生成效果。
当然这一步也可以交给智能体,只需修改提示词如下:
根据用户输入,生成给图像流工具{{generate_image}}的参数:提示词和图像尺寸,获得最终的生成图像的url,并显示最终的图像
要求:
- 提示词:请从对话记录中找到和图片生成相关的词汇,生成给stable diffusion等图片生成模型的英文提示词;
- 图像尺寸:请从对话记录中找到和图像尺寸相关的词汇,并找到图像尺寸选项中最接近的一个,如果没有相关词汇,则默认选择768x1024
智能体发布后,就可以在后端调用它的 API。
不过,Dify 中 Agent 的 API 调用有点特殊:只支持流式输出!不知道为啥 Dify 这样设置,懂的小伙伴帮忙评论区解释一下。
python 端的调用代码示例如下:
url = 'http://localhost:3006/v1/chat-messages'
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json',
}
data = {
"inputs": {},
"query": "生成一张猫的图片,尺寸2:1",
"response_mode": "streaming",
"conversation_id": "",
"user": "xiaoai",
}
response = requests.post(url, headers=headers, json=data)
events = []
for chunk in response.iter_lines():
if chunk:
chunk_data = chunk.decode('utf-8').replace('data: ', '')
events.append(json.loads(chunk_data))
with open('data.json', 'w') as f:
json.dump(events, f, indent=4, ensure_ascii=False)
本文通过综合运用工作流
和Agent
,带大家实操了Dify 搭建图像生成专家。
前端使用还是很丝滑的,但后端调用时,因为流式输出,出现了各种问题。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-04-25
2024-04-24
2024-07-20
2024-07-16
2024-05-08
2024-05-07
2024-05-09
2024-06-21
2024-04-25
2024-08-06