【通用智能体】Dify API 文件上传功能: 两种传参方式的API传参方式

在这里插入图片描述

一、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 的工作流中进行进一步处理。

### Dify API 文件上传方法详解 文件上传接口允许用户将指定类型的文件(如 PNG、JPG、JPEG、WEBP 和 GIF)上传至服务器,以便后续在消息交互中使用。此功能适用于多模态理解场景,例如图文结合的内容生成。 #### 请求方式与路径 文件上传的请求方式为 `POST`,对应的 API 路径为 `/files/upload`[^1]。 #### 请求体结构 请求体需包含待上传的文件数据。以下是 JSON 格式的示例说明: ```json { "file": { "url": "https://example.com/sample.png", "name": "sample.png", "size": 5120, "mime_type": "image/png" } } ``` 上述字段解释如下: - **url**: 文件的网络地址(如果采用远程链接形式)。如果是本地上传,则无需提供该字段。 - **name**: 文件名,应包含扩展名以表明其类型。 - **size**: 文件大小(单位为字节),用于验证文件是否超出限制范围。 - **mime_type**: MIME 类型,标明文件的具体类别,例如图像文件通常为 `image/*`。 #### 响应返回值 成功上传后,API 将返回一个唯一的 `upload_file_id`,这是后续操作所需的关键标识符[^2]。响应示例如下: ```json { "data": { "id": "f1a2b3c4d5e6", "url": "http://api.dify.com/files/f1a2b3c4d5e6", "name": "sample.png", "size": 5120, "mime_type": "image/png", "created_at": "2023-12-25T12:00:00Z" }, "status": "success" } ``` 其中,`id` 字段即为生成的 `upload_file_id`,可用于其他接口调用中的关联操作[^3]。 #### 完整代码示例 (Python) 以下是一个基于 Python 的文件上传示例代码片段: ```python import requests def upload_file(file_path): url = "https://api.dify.com/files/upload" with open(file_path, 'rb') as file: files = {'file': file} response = requests.post(url, files=files) if response.status_code == 200: result = response.json() print(f"File uploaded successfully! ID: {result['data']['id']}") return result['data']['id'] else: print(f"Failed to upload file. Status code: {response.status_code}") return None # 使用函数 uploaded_id = upload_file('path/to/your/image.png') if uploaded_id: print(f"Use this ID for further operations: {uploaded_id}") ``` 以上代码实现了从本地读取文件并将其提交到 Dify 平台的功能。注意替换实际 URL 地址以及目标文件路径。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值