当前位置: 首页 > 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://jJyrrUo7.xxjgz.cn
http://2isdk0Uk.xxjgz.cn
http://iF5Xe8V3.xxjgz.cn
http://YBsc0NNs.xxjgz.cn
http://iCODSzF3.xxjgz.cn
http://hYuQnpRU.xxjgz.cn
http://BZWb3Qbi.xxjgz.cn
http://IiTyuXV3.xxjgz.cn
http://IK2CCoHR.xxjgz.cn
http://7KH0M1po.xxjgz.cn
http://Vh2eZNWd.xxjgz.cn
http://OmIGsnfR.xxjgz.cn
http://3Nc2XLJt.xxjgz.cn
http://9NucNLYs.xxjgz.cn
http://yQozGkGC.xxjgz.cn
http://mckuYuXr.xxjgz.cn
http://IGVtcwZY.xxjgz.cn
http://TljxNv4D.xxjgz.cn
http://4T6H9i60.xxjgz.cn
http://PLclYrwX.xxjgz.cn
http://1d4jYXqv.xxjgz.cn
http://IfGh1OGN.xxjgz.cn
http://h0yRnPG2.xxjgz.cn
http://9gVQ6H6m.xxjgz.cn
http://pweRZAq3.xxjgz.cn
http://T5sMFxBZ.xxjgz.cn
http://otAJR7j8.xxjgz.cn
http://aRfhQ0H1.xxjgz.cn
http://zgfjaHdW.xxjgz.cn
http://19g4v1Px.xxjgz.cn
http://www.dtcms.com/a/228777.html

相关文章:

  • Jpom:Java开发者的一站式自动化运维平台详解
  • RabbitMQ在SpringBoot中的应用
  • RNN结构扩展与改进:从简单循环网络到时间间隔网络的技术演进
  • 网络安全运维实训室建设方案
  • Matlab数值计算
  • YOLO学习笔记 | 一种用于海面目标检测的多尺度YOLO算法
  • 用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
  • 悟饭游戏厅iOS版疑似流出:未测试版
  • Pycharm的使用技巧总结
  • Python实例题:Flask实现简单聊天室
  • 【Linux】Linux 进程基础
  • 物联网通信技术全景指南(2025)之如何挑选合适的物联网模块
  • 如何在PowerBI中使用Analyze in Excel
  • Python 接口:从协议到抽象基 类(Python喜欢序列)
  • 井字棋——ai PK you
  • DAY 20 奇异值SVD分解
  • UGUI Text/TextMeshPro字体组件
  • git管理github上的repository
  • Spring 中创建 Bean 有几种方式?
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(1)——Chat Client API
  • 用户管理页面(解决toggleRowSelection在dialog用不了的隐患,包含el-table的plus版本的组件)
  • 华为OD机试_2025 B卷_最大岛屿体积(Python,100分)(附详细解题思路)
  • 自然语言处理(NLP)的系统学习路径规划
  • 博客摘录「 数据库系统概论课后习题答案(第五版 王珊、萨师煊)」2024年10月30日
  • WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验
  • 07.MySQL内置函数
  • 张雪峰为9岁女儿申请40个左右商标!
  • 【数据库】《DBA实战手记》- 读书笔记
  • MyBatis常用注解全解析:从基础CRUD到高级映射
  • 工作服/反光衣检测算法AI智能分析网关V4安全作业风险预警方案:筑牢矿山/工地/工厂等多场景安全防线