在这里插入图片描述

一、Dify API 文件上传功能

Dify 提供的文件上传功能允许用户将文件上传到其平台,并在工作流或聊天应用中进行处理。这一功能特别适用于需要处理大量信息的场景,例如文档分析、代码审查、学习辅导和法律援助等。通过文件上传,用户可以将文件内容直接传递给支持文件处理的 LLM(大型语言模型),从而实现更高效的信息处理。

二、支持的文件类型

Dify 支持多种文件类型,包括但不限于以下格式:

  • 文档:TXT、Markdown、PDF、HTML、XLSX、XLS、DOCX、CSV、EML、MSG、PPTX、PPT、XML、EPUB。
  • 图片:JPG、JPEG、PNG、GIF、WEBP、SVG。
  • 音频:MP3、M4A、WAV、WEBM、AMR。
  • 视频:MP4、MOV、MPEG、MPGA。
三、文件上传的实现方法
(一)通过 API 上传文件
  1. 获取 API Key
    在使用 Dify API 上传文件之前,需要获取一个有效的 API Key。此 Key 用于身份验证,确保请求的安全性。

  2. 构建上传请求
    使用 Python 的 requests 库可以轻松实现文件上传。以下是一个示例代码:

    import requests
    
    def upload_file(local_file_path, api_key):
        file_type = 'application/pdf'  # 根据文件类型修改
        user = "abc-123"  # 用户标识
    
        url = 'https://api.dify.ai/v1/files/upload'
        headers = {'Authorization': f'Bearer {api_key}'}
    
        with open(local_file_path, 'rb') as file:
            files = {'file': (local_file_path, file, file_type)}
            data = {'user': user}
    
            response = requests.post(url, headers=headers, files=files, data=data)
    
        if response.status_code == 201:
            print("文件上传成功")
            return response.json()['id']
        else:
            print(f"文件上传失败,状态码: {response.status_code}")
            return None
    
  3. 处理上传结果
    成功上传文件后,API 会返回一个文件 ID,该 ID 可用于后续的工作流调用。

  4. 注意 : dify API 有两种文件上传方式 Dify API的 传参方式分别是以下两种 :

    • sys.file
# http://dify.api/v1/chat-messages 参数设置
{
      'inputs': {}
      ,'query': query,'response_mode': 'streaming','conversation_id': '','user': USER_ID,
      'files':[{ "type": category, "transfer_method": "local_file", "upload_file_id": file_id}]
}
# http://dify.api/v1/chat-messages 参数设置:
 {
     'inputs': {"upload_file":{"type":category,"transfer_method":"local_file","url":"","upload_file_id":file_id}}
      ,'query': query,'response_mode': 'streaming','conversation_id': '','user': USER_ID,
      'files': []
}
(二)在 Dify 应用中启用文件上传
  1. 在 ChatFlow 或 Workflow 中启用文件上传

    • 在 ChatFlow 应用中,可以通过点击右上角的“功能”按钮,开启文件上传功能。用户可以在聊天窗口中直接上传文件。
    • 在 Workflow 应用中,可以在“开始节点”添加文件变量。
  2. 文件处理与解析

    • 对于文档类型的文件,可以使用“文档提取器”节点将文件内容转换为文本,供 LLM 处理。
    • 对于图片或音频文件,可以直接在 LLM 节点中使用支持视觉或音频处理的模型。
四、应用场景
  1. 文档分析
    上传学术研究报告文件,LLM 可以快速总结要点,根据文件内容回答相关问题。

  2. 代码审查
    开发者上传代码文件,获得优化建议与 bug 检测。

  3. 学习辅导
    学生上传作业或学习资料,获得个性化的解释和指导。

  4. 法律援助
    上传完整的合同文本,由 LLM 协助审查条款,指出潜在风险。

五、注意事项
  1. 文件大小限制
    每个文件的大小上限为 15MB。

  2. 文件类型支持
    确保上传的文件类型在支持的范围内,否则可能导致上传失败。

  3. 安全性
    建议将 API Key 存储在安全的后端环境中,避免泄露。

六、总结

Dify 的文件上传功能为用户提供了强大的工具,可以将文件内容直接传递给 LLM 进行处理。无论是文档分析、代码审查还是法律援助,这一功能都能显著提高工作效率。通过简单的 API 调用,用户可以轻松实现文件上传,并在 Dify 的工作流中进行进一步处理。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐