Dify Ai开发

v1.0.0发布于:2024-04-17 15:45

说明文档
回复列表 (0)

介绍

Dify,是一个用于开发 Ai 应用的工具,支持知识库,流程编排,向量检索,并可接入多种模型。

本插件集成了 Dify 的 SDK,可以很方便地调用 Dify 的接口。

Dify 安装部署与使用视频教程

🔥 微信智能客服,个微&企微 插件已经支持调用 dify 了

标识

调用插件的时候需要用到标识,标识是唯一的,不能重复,建议使用英文,不要使用中文,对应插件 plugin.json 中的 key 字段

  • 标识:dify

配置

{
  "baseUrl": "dify服务地址,http://xxxxxx/v1",
  "apiKey": {
    "chat": "聊天的密钥",
    "workflows": "工作流的密钥",
    "text": "文本生成的密钥",
    "agent": "智能体的密钥"
  }
}

方法

下面是插件提供的一些方法

  • text
   /**
   * 文本生成
   * @param data
   * @param callback
   */
  async text(data: TextData, callback?: (data: any) => void)
  • agent
  /**
   * 智能体
   * @param data
   * @param callback
   */
  async agent(data: AgentData, callback?: (data: any) => void)
  • chat
  /**
   * 聊天
   * @param data
   * @param callback
   * @returns
   */
  async chat(data: ChatData, callback?: (data: any) => void)
  • workflows
  /**
   * 工作流
   * @param data
   */
  async workflows(data: WorkflowsData, callback?: (data: any) => void)

数据类型

// 基础数据
interface BaseData {
  // 变量数据,类型是key value
  inputs: {
    [key: string]: any;
  };
  // 应答模式默认blocking  blocking:同步;streaming:流式
  response_mode?: "blocking" | "streaming";
  // 文件列表
  files?: {
    // 类型,image:图片
    type: "image";
    // 传递方式 remote_url:远程地址;local_file:本地文件
    transfer_method: "remote_url" | "local_file";
    // 图片地址,仅当传递方式为 remote_url 时需要传入
    url: string;
    // 上传文件 ID 仅当传递方式为 local_file 时 需要传入
    upload_file_id: string;
  }[];
  // 用户唯一标识
  user: string;
  // 不是必填的,如果需要动态配置,可以传入
  apiKey?: string;
}

// 工作流流数据
interface WorkflowsData extends BaseData {}

// 聊天数据
interface ChatData extends BaseData {
  // 用户输入/提问内容
  query: string;
  // 会话 ID,需要基于之前的聊天记录继续对话,必须传之前消息的conversation_id
  conversation_id?: string;
  // 自动生成标题,默认 true
  auto_generate_name?: boolean;
}

// 文本数据
interface TextData extends BaseData {
  // 会话 ID,需要基于之前的聊天记录继续对话,必须传之前消息的conversation_id
  conversation_id?: string;
}

// 智能体数据
interface AgentData extends BaseData {
  // 用户输入/提问内容
  query: string;
  // 会话 ID,需要基于之前的聊天记录继续对话,必须传之前消息的conversation_id
  conversation_id?: string;
  // 自动生成标题,默认 true
  auto_generate_name?: boolean;
}

调用示例

以工作流为例

@Inject()
pluginService: PluginService;

// 获取插件实例
const instance = await this.pluginService.getInstance('test');

// 非流式执行
const res = await instance.workflows({
  inputs: {
    content: "你好,你是谁",
  },
  user: "COOL",
});
console.log(res);
// 流式执行
await instance.workflows(
  {
    inputs: {
      content: "你好,你是谁",
    },
    user: "COOL",
    response_mode: "streaming",
  },
  (data) => {
    console.log(data);
  }
);

更新日志

  • v1.0.0 (2024-04-17)
    • 初始版本