一、概述
dify工作流有自己的api接口,但是返回格式不是标准的openai格式,因此无法对接一些标准的AI客户端。
目前解决方案有2个:
1. 新版本的dify,有提供插件OpenAI Compatible Dify,可以进行转换。但是有2个缺点:
- 只支持chat类型的应用,Workflow(工作流)是不支持的。
- 插件提供的接口,可以直接调用,不需要api key也可以调用,不安全。
2. 通过Dify2OpenAI,就可以将dify工作流转换为标准的openai格式。可以同时支持Chat、Completion、Agent 和 Workflow bots API
二、Dify2OpenAI
简介
Dify2OpenAI 是一个将 Dify 应用程序转换为 OpenAI API 接口的网关服务,使您可以使用 OpenAI API 兼容的方式访问 Dify 的 LLM、知识库、工具和工作流程。
特征
- 将 Dify API 转换为 OpenAI API
- 支持流式传输和阻止
- 在 dify 上支持 Chat、Completion、Agent 和 Workflow bots API
支持
- 图像支持
- 变量支持
- 持续对话
- Workflow Bot
- Streaming & Blocking
- Agent & Chat bots
官方github地址:https://github.com/onenov/Dify2OpenAI
三、Dify2OpenAI安装
github上有安装教程,安装最新版本的Node,最后npm run start就可以启动了。
但是这种启动方式,随时会中断。系统重启后,也不会自动起来。
我想使用docker方式启动,但是官方没有提供镜像。
怎么办?简单,自己做。没有条件,创造条件也要上
新建文件 Dockerfile
cd /data
# 下载项目
git clone https://github.com/onenov/Dify2OpenAI.git
cd Dify2OpenAI
vi Dockerfile
内容如下:
FROM node:23.11.0-alpine3.21
ADD . /app
RUN cd /app && npm install
WORKDIR /app
EXPOSE 3099
ENTRYPOINT ["npm","run","start"]
注意:这里的基础镜像,直接从dockerhub上面找了一个最新版本的node
构建镜像
docker build -t dify2opai:v1 .
新建文件docker-compose.yaml
内容如下:
services:
dify2openai:
image: dify2openai:v1
container_name: dify2openai
ports:
- "3099:3099"
restart: always
启动
docker-compose up -d
访问页面:http://ip地址:3099
效果如下:

四、dify对接Dify2OpenAI
登录到dify,找到一个chatflow类型的应用,点击访问API–>API密钥

创建一个api密钥,比如:app-MMajtWxluWwHhJcOuiSI80y9

打开AI客户端CherryStudio,添加模型

添加dify

API密钥,app-MMajtWxluWwHhJcOuiSI80y9,这个就是dify的api密钥
API地址,http://10.44.32.14:3099/v1/,注意:这里的地址是Dify2OpenAI的地址,末尾必须携带/

点击添加模型
模型ID,dify|Chat|http://10.44.32.14/v1,
注意:格式就是参考Dify2OpenAI的第二种请求方式。
model 参数格式:
"model": "dify|BOT_TYPE|DIFY_API_URL|INPUT_VARIABLE|OUTPUT_VARIABLE"
模型名称,可以随便写。为了方便区分,和dify应用名一样
分组名称,可以随便写。为了方便区分,写dify

添加完成后,点击检查

选择模型

确保连接成功

返回聊天页面,选择模型test-chatflow,询问问题,得到结果。

能返回正确的结果,说明对接dify成功。
注意:如果有几十个dify应用要进行转换openai,只需要部署一个Dify2OpenAI即可。如果并发量比较大,可以运行多个副本。
转载作品,原作者:肖祥,文章来源:https://www.cnblogs.com/xiao987334176/p/18805992