利用Dify和flask搭建AI结合知识库自动生成word的应用(亲测)

发布于:2025-04-16 ⋅ 阅读:(32) ⋅ 点赞:(0)

Dify是一个开源的LLM应用开发平台,它通过直观的可视化界面,帮助开发者快速构建和部署AI应用,支持包括模型管理、知识库、工作流编排等全方位功能,你可以把它理解为一个类似于扣子的"AI应用的乐高积木系统";这里我们介绍一个利用Dify和flask搭建AI结合知识库自动生成word的应用的例子。

一、工具准备:

1、搭建一个属于自己的Dify开发平台。

开源地址:https://gitcode.com/gh_mirrors/di/dify

不愿意搭建的也可以使用Dify云平台:https://cloud.dify.ai/  不过这会儿好像访问不了了,待修复。


2、Flask安装

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

使用 pip 安装 Flask:

pip install flask

 二、编写本地服务用于接收AI检索服务的内容,生成word文件

这里主要是用python来写的:

from flask import Flask, request, jsonify

from docx import Document # type: ignore

from docx.shared import Pt # type: ignore

from docx.enum.text import WD_ALIGN_PARAGRAPH # type: ignore

from datetime import datetime

import os

import logging

import subprocess

app = Flask(__name__)

# 配置日志

logging.basicConfig(level=logging.DEBUG)

logger = logging.getLogger(__name__)

# 配置保存文档的目录

SAVE_DIR = "./data/"

if not os.path.exists(SAVE_DIR):

    os.makedirs(SAVE_DIR)

@app.route('/test', methods=['POST'])

def test():

    return 'hello world!'

@app.route('/generate_doc', methods=['POST'])

def generate_doc():

    try:

        # 获取请求中的JSON数据 --知识库 + word文档生成

        #data = request.json

        #title = data.get('title')

        #content = data.get('content')

        #获取请求中的RAW数据 --test文档生成

        data = request.get_data(as_text=True)

        title,content = data.split('!!')

        # 生成文档

        file_name = f"phl_{datetime.now().strftime('%Y%m%d_%H%M%S')}.docx"

        file_path = os.path.join(SAVE_DIR, file_name)

        logger.debug(f"File path: {file_path}")

        doc = Document()

        if title:

            # 添加大标题

            paragraph = doc.add_heading(title, level=1)

            paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER  # 居中对齐

            paragraph.style.font.name = 'FangSong'  # 直接设置整个段落的字体

            paragraph.style.font.size = Pt(22)  # 二号字体

        if content:

            # 添加正文

            paragraph = doc.add_paragraph(content)

            paragraph.style.font.name = 'FangSong'  # 直接设置整个段落的字体

            paragraph.style.font.size = Pt(10.5)  # 五号字体

        doc.save(file_path)

        logger.info(f"Document generated successfully at {file_path}")

        # 在Mac上打开文件

        #subprocess.call(['open', file_path])

        return jsonify({"message": "Document generated successfully", "file_path": file_path}), 200

    except Exception as e:

        logger.error(f"Error generating document: {e}")

        return jsonify({"error": str(e)}), 500

if __name__ == '__main__':

    app.run(debug=True, host='0.0.0.0', port=5001)

工具代码写好后,在代码所在目录的终端窗口中输入执行启动flask服务命令:

Python Doc_flask_app.py

三、在Dify平台上新建知识库+word生成的应用 ,主要沿用已有知识库应用模板,加上HTTP请求节点即可。HTTP请求节点上配置成上面生成word的服务,就可以把AI检索的内容生成word文件了。(word文件的格式可以在代码中调整,本例暂时只实现功能,感兴趣可以自行研究)

 

到此,你就可以通过聊天机器人查询知识库并生成word文档了!

HTTP请求节点也可以采用JSON格式入参,那么相应的生成word文档的服务也需要改成相应的解析代码。