day11-Dify智能体-发布-工作流
今日内容
1 对接大模型
# 0 Coze 是一个成熟的商业软件
-咱们用户只需要访问地址--》直接使用 --》本身集成了大模型
-豆包、deepseek大模型,插件:图像生成---》使用扣token
-更适合小白
-Coze 用gpt模型?用不了,没有提供
-Coze 用本地模型?用不了,不支持
# 1 这段时间学习:Dify--》开源软件--》源代码在github开源了--》我们可以下载源代码
-使用源代码,把dify程序(服务),跑在本地:
1 win/mac 本地【docker-destop】
-wsl
2 模拟企业环境:Linux 机器环境中-centos9环境
-使用虚拟机:vmware--》虚拟出机器--》安装了Linux
-在linux部署:docker
3 直接购买云服务器
-虚拟机一模一样
# 2 dify 需要有大模型:才能做工作流,智能体,聊天助手。。。
-本地部署大模型:Ollama软件--》几条命令就能部署一些开源大模型:deepseek,通义千问。。
-win/mac 本地不是
-虚拟机中
-云服务器中
# 3 dify对接 本地deepseek
# 4 dify 对接好大模型后---》再使用起来就跟Coze类似了
# 5 部署好dify--》相当于自己做了一个类Czoe平台----》你部署在公网上,给别人用--》收别人钱
-dify开源--》把源码根据公司定制修改

1.1 对接硅基流动
# 1 硅基流动 公司---》买了很多性能很高硬件--》在机房中部署了各种各样的开源大模型【deepseek,通义千问...】-->我们使用人家的大模型---》需要付费给它---》有个网站:需要我们注册,充钱---》就可以对接它部署的大模型了
-大模型:不需要跑在我们机器上--》我们调用就要花钱
# 2 大模型提供商
硅基流动有自己的模型吗?
目前好像还没有
公司实力很强吗?
就是一个卖服务的
那些公司实力强?
-有自己大模型的公司
阿里
字节
腾讯
deepseek
。。。。
# 3 注册硅基流动步骤:
# 3.1 注册账号
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/models
# 3.2 添加api秘钥
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/account/ak
-sk-hffmkkfpdddfijmsamqtozwszaaqabzzzdguhowrexqvzvar
# 3.3 通过实名认证
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/account/authentication
# 3.4 充值
https://cloud.siliconflow.cn/sft-d178p8oo8n4s73934nf0/expensebill
# 4 硅基流动:api秘钥 --不同人不一样
sk-hffmkkfpdddfijmsamqtozwszaaqabzzzdguhowrexqvzvar
# 5 dify对接
-如下图--》一次性把硅基流动所有模型都添加来了
-如果只想添加一个模型:
选择添加模型



1.2 对接deepseek
# 1 注册账号
https://platform.deepseek.com/api_keys
# 2 添加key
sk-2ce3369e07ad4cc3a2ab5f04bd39a220
# 3 实名认证
# 4 购买:充值
# 5 dify对接
https://api.deepseek.com/v1
# 6 可以添加多个秘钥
-你有多个deepseek账号
1 账号有100块钱
2 账号有50块钱
# 7 模型配置:多账号可以负载
- deepseek部署大模型--》部署一台机器---》上海机房,北京机房,新疆机房部署了非常大[集群]
-我们调用他们大模型的时候:
-默认选择一条线路去调--》假设调了 北京机房中的
-假设我们有多个账号
-账号1有100块钱,账号2有50块钱
-假设三次调用:我们就可以配置 两次走1账号,1次走2账号


1.3 对接火山方舟-就是豆包大模型
#1 麻烦一点--》火山方舟老版本,有很多模型---》支持dify对接很方便---》后来又上了更多大模型【更好的模型训练出来】---》有的老的大模型就下架了---》新的大模型对接时,多了个参数【前几天试的时候没改】---》dify默认不会添加多的那个参数,就会导致,有些新的大模型,用dify对接不了
# 2 找人工客服--》给它指出来了
-火山方舟模型不是只给dify用
-开发者直接用代码调用:多个参数,少个参数,代码改一下就行了
-dify开源软件:适配对接市面上所有主流的大模型
-不可能做到,火山方舟改,它立马就改的情况---》延迟几个月
-目前:可能有些最新模型对接不上
#1 注册账号,实名认证
https://console.volcengine.com/ark/region:ark+cn-beijing/model?vendor=Bytedance&view=DEFAULT_VIEW
# 2 开通管理---》开通一个模型--->开了某个模型,才能用某个模型[麻烦点,跟别的不一样]
如下图:开语言模型即可
# 3 创建一个API-key:
-支持两种对接方案:api-key和密钥方案
api-key:https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D
-ab6dc044-862f-4a33-8b3d-bfad67303c30
密钥:https://console.volcengine.com/iam/keymanage/
-Access Key ID: 你们自己的
-Secret Access Key:你们自己的
# 3 自定义推理中--》创建一个推理:开通监控
-https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint?config=%7B%7D
-记住接入点id号:ep-20251120211332-lwvpx
-记住模型名字:Doubao-1.5-thinking-vision-pro
# 4 对接--如下图








火山方舟对接新模型,多了个字段,dify没带
max_length字段没带,需要改dify的代码才能解决。。。
2 聊天助手,Agent,文本生成应用,ChatFlow和工作流 区别
### 1. 聊天助手(Chat Assistant)
- 定义:基于预训练大模型(如 GPT、LLaMA)的对话式 AI,可理解用户输入并生成自然语言回复。
- 特点
- 单轮或多轮对话:支持简单问答或复杂对话上下文。
- 知识库增强:可连接外部知识库(如文档、FAQ)提升回答准确性。
- 无代码配置:通过 Dify 界面配置参数、提示词模板即可创建。
- 适用场景:客服机器人、智能问答、闲聊机器人。
### 2. Agent(智能代理)
- 定义:具备工具使用能力的 AI 系统,可调用外部 API(如搜索、计算器、数据库)完成复杂任务。
- 特点
- 工具调用:自动选择并调用合适的工具(如调用天气 API 查询天气)。
- 推理链:分解复杂问题为多个步骤,逐步执行并整合结果。
- 代码能力:部分 Agent 支持生成或执行代码(如 Python 脚本)。
- 适用场景:数据分析、API 调用、多工具协同任务(如 “查询航班并预订酒店”)。
### 3. 文本生成应用(Text Generation App)
- 定义:基于大模型的文本生成能力,专注于内容创作的应用。
- 特点
- 模板化生成:通过预设模板生成特定类型内容(如文案、报告、诗歌)。
- 参数控制:调整生成长度、风格、创造性等参数。
- 批处理:支持批量生成多份内容。
- 适用场景:内容创作、文案生成、报告自动撰写。
### 4. ChatFlow(对话流程)
- 定义:可视化编排的对话逻辑,定义用户输入与 AI 回复的流程规则。
- 特点
- 流程图设计:通过拖放节点创建复杂对话逻辑(如多轮引导、条件分支)。
- 节点类型:包括文本回复、API 调用、条件判断、跳转等。
- 状态管理:保存对话上下文,支持长时间多轮对话。
- 适用场景:表单填写(如预订流程)、复杂业务流程引导、多轮对话游戏。
### 5. 工作流(Workflow)--->最重要的
- 定义:跨应用、跨系统的自动化任务序列,不仅限于对话场景。
- 特点
- 跨系统集成:连接 Dify 与其他工具(如 Slack、Notion、数据库)。
- 触发器驱动:基于时间、事件(如用户提交表单)自动启动。
- 多角色协作:支持不同用户角色参与流程(如审批、执行)。
- 适用场景:企业流程自动化(如工单处理)、数据同步、营销自动化。

3 情感陪伴机器人-应用发布
3.1 提示词
# 角色
你是贴心的深夜情感女友,在黑夜漫漫、用户孤独寂寞时,能够耐心倾听他们的心声,用温柔、善解人意的语言与用户聊天,给予情感上的支持和安慰。
## 技能
### 技能 1: 倾听与回应
1. 当用户向你倾诉情感问题或分享日常琐事时,认真倾听并给予富有同理心的回应。
2. 可以从不同角度理解用户的感受,提供温暖且有针对性的话语。
### 技能 2: 情感引导
1. 如果用户情绪低落或者迷茫,引导他们积极面对,帮助他们看到事情好的一面。
2. 通过提问等方式,帮助用户更清晰地认识自己的情感和需求。
### 技能 3: 陪伴聊天
可以围绕各种轻松愉快的话题,如兴趣爱好、梦想等,与用户展开聊天,让用户在交流中感受到陪伴。
## 限制:
- 主要围绕情感交流和陪伴展开对话,拒绝回答与情感陪伴无关的话题。
- 回复内容需符合温柔、善解人意的人设,语言风格要亲切自然。
- 所输出的内容必须清晰明了,符合正常交流的表达习惯。
3.2 发布
# 1 发布后:可以用地址访问--》必须在公网上,其他用户才能访问
http://192.168.23.145/chat/09dZFDdQxsuvS2IH
# 2 发布后:api
地址:http://192.168.23.145/app/dd28e350-ee1d-4650-b5a3-bc6769d827fa/develop
# 3 对着这个文档
-1 使用postman调用:能调通【不强制大家去试】
-2 使用代码对接:python,go,java。。。
今天有案例python[coze时也对接过]
-3 对接app,微信小程序。。。
# 4 步骤:
1 点 API秘钥,创建一个秘钥
-coez的token--》只有有了这个秘钥,才能访问智能体
-app-txB1kq0rHboE66jdNhpqpY31
2 发送对话消息
-我们把一句话发送给dify聊天机器人
-地址:http://192.168.23.145/v1/chat-messages
-请求方式:POST
-请求头:Authorization: Bearer app-txB1kq0rHboE66jdNhpqpY31
-请求体:
{
"inputs": {},
"query": "你叫什么名字",
"response_mode": "streaming",
"conversation_id": "",
"user": "lqz"
}
3 代码调用
3.3 Python调用[代码不需要理解-后续让ai帮我们写]
import requests
import json
import re
class DifyClient:
def __init__(self, api_key):
"""初始化Dify客户端,设置应用ID和API密钥"""
self.api_key = api_key
self.base_url = "http://192.168.23.145/v1/chat-messages" #要改成你们的:必须是你dify机器的ip地址
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def chat(self, query, conversation_id=None):
"""
发送消息到Dify并获取回复
Args:
query: 用户输入的消息
user_id: 用户唯一标识(可选)
conversation_id: 会话ID(可选,用于保持上下文)
Returns:
聊天回复结果
"""
payload = {
"inputs": {}, # 输入参数,可用于上下文注入
"query": query,
"response_mode": "blocking", # 阻塞模式,等待完整回复
"user": "lqz"
}
# 添加会话ID以保持上下文
if conversation_id:
payload["conversation_id"] = conversation_id
try:
response = requests.post(
self.base_url,
headers=self.headers,
data=json.dumps(payload)
)
response.raise_for_status()
res=response.json()
return self.remove_tag(res['answer'],'think'),res['conversation_id']
except requests.exceptions.RequestException as e:
print(f"API请求错误: {e}")
return None
def remove_tag(self,text, tag_name):
"""移除指定标签及其内容"""
# 匹配 <tag>...</tag> 或 <tag /> 格式的标签
pattern = fr'<{tag_name}\b[^>]*>.*?</{tag_name}>|<{tag_name}\b[^>]*\s*/>'
return re.sub(pattern, '', text, flags=re.DOTALL)
# 使用示例
if __name__ == "__main__":
try:
print('##############深夜女友##############')
print("输入 'exit' 结束对话")
# 替换为你的APP_ID和API_KEY---》放在请求头中的那个token
API_KEY = "app-txB1kq0rHboE66jdNhpqpY31"
client = DifyClient(API_KEY)
# 对话消息历史
messages = []
while True:
conversation_id=None
# 获取用户输入
print('\n你: ',end='')
user_input = input()
if user_input.lower() == "exit":
break
res,conversation_id=client.chat(user_input,conversation_id)
print('女友:'+res)
except Exception as e:
print(f"发生错误: {e}")
4 植物识别工作流
# 上传一张植物图片,识别出植物的名字,生长地区,特点。。。
4.1 创建应用

4.2 开始

4.3 LLM
# 1 选择使用 Qwen/Qwen2.5-VL-32B-Instruct
# 2 上下文开始变量接收用户传入图片
# 3 写入 提示词
# 4 开启视觉
# 5 输出变量,结构化输出

4.3.1 提示词
# 角色
你是一位专业的植物识别专家,凭借丰富的知识和经验,能够精准识别各种植物。
## 技能
### 技能 1: 识别植物
1. 当用户上传植物图片时,运用专业知识和相关工具,准确识别出植物的名称。
2. 确定该植物的生长地信息。
===回复示例===
- 🌿 植物名称: <植物具体名称>
- 🌍 生长地: <该植物通常生长的地域范围>
- 🌿 植物特点: <该植物显著特点>
===示例结束===
## 限制:
- 只讨论与植物识别相关的内容,拒绝回答与植物识别无关的话题。
- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求。

4.4 结束节点

4.5 发布

4.6 在线图片识别问题
# 1 本地图片---》传到dify上---》dify在本地:192.168.23.145---》大模型识别它--》大模型在外网【硅基流动的千问】---》外网的大模型如何访问到我们内网的图片呢?
-默认情况访问不到,我们需要改配置
-我测了:dify1.9版本,默认帮我们配置好了,可以用
-如果不能用,或其他老一点版本,按照如下步骤修改
## 2 修改
# 2.1 修改 .env文件,修改FILES_URL变量如下
FILES_URL=http://192.168.23.145
# 2.2 重启dify服务
docker compose down
docker compose up

浙公网安备 33010602011771号