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

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文档的服务也需要改成相应的解析代码。 

<think>好的,用户现在想了解Dify项目的二次开发指导资源,还有如何参与开源贡献。首先,我需要确认Dify的官方文档是否有相关部分。根据之前的引用,Dify是开源且社区驱动的,所以应该会有相应的指南。 接下来,用户可能需要具体的步骤,比如如何搭建开发环境。参考引用[3],安装流程提到了通过浏览器访问本地安装页面,可能二次开发需要本地部署开发版本,而不仅仅是生产环境。可能需要查阅官方文档中的开发者指南部分。 另外,开源贡献通常涉及代码提交、问题反馈等流程。需要指导用户如何找到GitHub仓库,查看贡献指南,比如CONTRIBUTING.md文件。用户可能对GitHub流程不太熟悉,需要简单说明如何fork仓库、创建分支、提交PR等。 用户可能还想知道社区资源,比如论坛、Slack或Discord频道,以便交流问题。引用[1]提到社区驱动,所以应该存在这些渠道。需要建议用户加入社区,参与讨论。 此外,Dify的扩展性方面,用户可能想开发自定义插件或集成其他模型。需要引用文档中的API插件开发部分,可能参考引用[3]提到的智能客服案例,说明如何利用现有模块进行扩展。 最后,确保用户了解如何保持与上游仓库同步,避免代码冲突。同时,提醒他们在开发过程中进行试,可能涉及单元试或使用Dify试框架。</think>关于 Dify 项目的二次开发与开源贡献,以下是分步指南: ### 一、二次开发准备 1. **环境搭建** - 按照官方文档部署开发环境,推荐使用 Python 3.8+ Node.js 16+ - 克隆仓库:`git clone https://github.com/langgenius/dify` - 依赖安装参考[^3]中提到的部署流程,需特别注意前后端分离架构的配置 2. **架构理解** - 前端采用 React + TypeScript,后端使用 Flask + Celery - 核心模块包含:工作流引擎、模型适配层、知识库管理,可通过调试模式跟踪代码执行路径[^1] ### 二、开源贡献流程 1. **参与方式** - 在 GitHub 提交 PR 前需签署贡献者协议(CLA) - 推荐从「good first issue」标签的任务开始,贡献文档改进也受官方欢迎 2. **扩展开发示例** ```python # 自定义模型适配器示例 class CustomModelProvider(BaseModelProvider): def invoke(self, prompt: str) -> str: # 实现自定义模型调用逻辑 return modified_response ``` 需继承框架定义的基类并实现接口方法 ### 三、核心资源指引 1. **官方文档** - 开发者指南:https://docs.dify.ai/development/overview - API 文档:包含 200+ 个 RESTful 接口说明 2. **社区支持** - 官方 Discord 频道提供技术讨论区 - 定期举办的贡献者线上会议记录可在 GitHub Wiki 查看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值