当前位置: 首页 > news >正文

Dify知识库下载小程序

一、Dify配置

1.查看或创建知识库的API

二、下载程序配置

1. 安装依赖resquirements.txt

######requirements.txt#####
flask==2.3.3
psycopg2-binary==2.9.9
requests==2.31.0
python-dotenv==1.0.0#####安装依赖
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

 2. 主程序代码app.py

##app.pyfrom flask import Flask, render_template, jsonify, Response
import requests
import os
from dotenv import load_dotenv
import io
import zipfile
import urllib.parse
from config import API_KEY, BASE_URLapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/api/datasets')
def get_datasets():headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}response = requests.get(f'{BASE_URL}/v1/datasets?page=1&limit=20',headers=headers)if response.status_code == 200:data = response.json()datasets = [{'id': item['id'], 'name': item['name']} for item in data.get('data', [])]return jsonify(datasets)return jsonify({'error': '获取知识库列表失败'}), response.status_code@app.route('/api/files/<dataset_id>')
def get_files(dataset_id):headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}response = requests.get(f'{BASE_URL}/v1/datasets/{dataset_id}/documents',headers=headers)if response.status_code == 200:data = response.json()files = []for item in data.get('data', []):file_id = item['id']file_name = item.get('data_source_detail_dict', {}).get('upload_file', {}).get('name', file_id)files.append({'id': file_id, 'name': file_name})return jsonify(files)return jsonify({'error': '获取文件列表失败'}), response.status_codedef download_single_file(dataset_id, document_id):headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}# 获取文件下载地址response = requests.get(f'{BASE_URL}/v1/datasets/{dataset_id}/documents/{document_id}/upload-file',headers=headers)if response.status_code == 200:download_url = response.json().get('download_url')if download_url:# 拼接完整的下载URLfull_url = f'{BASE_URL}{download_url}'file_response = requests.get(full_url, headers=headers)if file_response.status_code == 200:return file_response.contentreturn None@app.route('/api/download/<dataset_id>/<document_id>')
def download_file(dataset_id, document_id):content = download_single_file(dataset_id, document_id)if content:return Response(content,mimetype='application/octet-stream',headers={'Content-Disposition': 'attachment'})return jsonify({'error': '文件下载失败'}), 400@app.route('/api/download-dataset/<dataset_id>')
def download_dataset(dataset_id):# 获取文件列表headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}response = requests.get(f'{BASE_URL}/v1/datasets/{dataset_id}/documents',headers=headers)if response.status_code != 200:return jsonify({'error': '获取文件列表失败'}), response.status_codefiles = []for item in response.json().get('data', []):file_id = item['id']file_name = item.get('data_source_detail_dict', {}).get('upload_file', {}).get('name', file_id)files.append({'id': file_id, 'name': file_name})# 创建ZIP文件memory_file = io.BytesIO()with zipfile.ZipFile(memory_file, 'w') as zf:for file in files:content = download_single_file(dataset_id, file['id'])if content:zf.writestr(file['name'], content)memory_file.seek(0)return Response(memory_file.getvalue(),mimetype='application/zip',headers={'Content-Disposition': f'attachment;filename=dataset_{dataset_id}.zip'})if __name__ == '__main__':app.run(debug=True)

3.  配置知识库的Base_URL和API_key

配置dify知识库和数据库鉴权信息,如下:

# 知识库API配置
API_KEY = 'dataset-YNXAxOyNucHoyzVUN6MlPJXT'
BASE_URL = 'http://10.1.140.33'

 

三、启动服务

#python3 app.py

访问 http://127.0.0.1:5000/ 进行下载文件或整个知识库

http://www.xdnf.cn/news/780535.html

相关文章:

  • OpenCV CUDA模块特征检测------创建Harris角点检测器的GPU实现接口cv::cuda::createHarrisCorner
  • 【Ragflow】25.Ragflow-plus开发日志:excel文件解析新思路/公式解析适配
  • supervisor 常见问题大全
  • Kotlin List 操作全面指南
  • 如何生成和制作PDF文件
  • MybatisPlus--核心功能--service接口
  • [Python] python信号处理绘制信号频谱
  • 《CF912E Prime Gift》
  • 推荐一款PDF压缩的工具
  • Mac版本Android Studio配置LeetCode插件
  • 机器学习——聚类算法
  • C++ try{}catch{} 语句块中潜藏问题排查指南
  • CSS(2)
  • Ajax技术分析方法全解:从基础到企业级实践(2025最新版)
  • MySQL的备份和恢复
  • 【Spring AI】如何实现文生图功能
  • ArcGIS Pro字段计算器与计算几何不可用,显示灰色
  • 手摸手还原vue3中reactive的get陷阱以及receiver的作用
  • 高通SoC阵列服务器
  • APM32芯得 EP.07 | 探索使用以太网(ETH),搭建一个简单的本地HTTP服务器
  • 基于Linux系统docker封装exe
  • CentOS 7.9 安装 宝塔面板
  • 【leetcode】15.三数之和
  • 机器学习:集成学习概念、分类、随机森林
  • 24.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--认证微服务
  • 使用 C++/OpenCV 图像直方图比较两个图片相似度
  • 奥威BI+AI数据分析:企业数智化转型的加速器
  • Redis 缓存粒度如何控制?缓存整个对象还是部分字段?
  • 三目标微网对经济性进行优化调度
  • Hadoop HDFS 体系结构与文件读写流程剖析