Dify将大模型结果最终输出Excel表格
接着上一篇使用大模型提取QA这一篇是将QA输出的内容打印在表格上面,将最终大模型生成的QA问答对,以excel的形式进行输出。dify本身没有生成Excel的模块,或者是有,但我没有发现。但是聪明的程序猿是不会被难倒,有通过json生成Excel的py啊,可以使用http模块,调用py程序。
接着上一篇使用大模型提取QA
自动化生成问答对(question&answer)-CSDN博客
这一篇是将QA输出的内容打印在表格上面,将最终大模型生成的QA问答对,以excel的形式进行输出。
dify本身没有生成Excel的模块,或者是有,但我没有发现。
但是聪明的程序猿是不会被难倒,有通过json生成Excel的py啊,可以使用http模块,调用py程序。
目录
dify输出方法思路
第一步,运行一段python程序,启一个http
第二步,测试构建dify的work flow流程,搭建http模块
第一步:python程序
早就有人写过生成Excel的程序,如下
from flask import Flask,request,jsonify
import os
import pandas as pd
import datetime
app = Flask(__name__)
@app.route('/')
def hello_world(): # put application's code here
return 'Hello World!'
@app.route('/write_to_excel', methods=['POST'])
def write_to_excel():
# 1. 检查请求数据
if not request.is_json:
return jsonify({"result": -1, "error": "Content-Type必须是application/json"}), 400
data = request.json
# 2. 参数为空检查
if not data or len(data) == 0:
return jsonify({"result": -1, "message": "输入参数为空"}), 400
try:
# 3. 生成带时间戳的文件名
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
excel_file_path = os.path.join(os.getcwd(), f'output_{timestamp}.xlsx') # 添加时间戳
# 4. 数据处理
df = pd.DataFrame(data)
df.to_excel(excel_file_path, index=False, engine='openpyxl')
return jsonify({
"result": 1,
"message": "数据已成功写入Excel文件",
"file_path": excel_file_path,
"saved_rows": len(data),
"timestamp": timestamp # 返回时间戳信息
}), 200
except Exception as e:
return jsonify({"result": -1, "error": str(e)}), 500
if __name__ == '__main__':
app.run()
下面讲一下如何使用这段代码
首先,在电脑上需要安装python,pip工具类软件
然后,运行下面的代码,安装组件
python3 -m pip install flask pandas openpyxl
想知道安装没有安装成功,甚至可以在屏幕上打印出来
python3 -c "import flask, pandas, openpyxl; print('All packages imported successfully!')
当然以上的脚本不是我写的,是A I写的,大家合理使用AI,如下,它不仅帮你写,还帮你执行。


以上步骤完成后,可以在terminal中运行本代码:
python3 dify2excel.py
然后就会看到屏幕打印出:
然后大胆的打开浏览器,看看页面上有没有hello world几个大字,代表了咱们程序运行成功了

第二步,搭建测试dify workflow工作流

1、http一定要使用http://host.docker.internal:5000/write_to_excel,不能使用127.0.0.1
2、headers要填写对
3、很重要,输入一定要是一段json,要不然输出错误
测试成功,最后生成的结果:

在程序的同目录下会生成一个Excel表
LLM结构化输出
说一下我遇见的错误

就是因为我给它的不是一段json,所以它解析不出来。
在我真正想把我生成的QA生成到Excel,我需要倒回到大模型那个模型,让大模型输出json格式的内容。
这里要保证大模型的输出为一个JSON格式,是结构化的
方法一:定义一个合适的prompt参数
倒回去修改第二个大模型的system prompt参数:

你必须根据我的问答对格式来生成一个JSON对象,要求只输出JSON,不要有任何其他文字。
标红这段字体非常重要,之前我描述,以JSON格式进行展示,然后每次给我生成的是一个可复制的JSON,输入到http调用请求中,总是返回参数不正确。

如何写好prompt ,是使用好大模型的关键!
经过调试后,生成一个EXECL表
缺点:超过20行后,又会变成之前的mark down块
方法二、代码调用
这个还需要重新补充一下
当我想生成超过20条的问题的时候,大模型依旧给我返回带json注释的内容,如下:
```json [ {"问题"...."........} ] ```
dify增加代码块,通过代码吧json部分的内容去掉
def main(raw_input) :
import re
import json
# Use regex to extract content between square brackets or curly braces
json_match = re.search(r'\[.*\]', raw_input, re.DOTALL) or re.search(r'\{.*\}', raw_input, re.DOTALL)
if json_match:
clean_json_str = json_match.group()
# Parse the extracted string into a JSON object
json_data = json.loads(clean_json_str)
# Output the cleaned JSON
return {"json_data":json_data}
else:
return {"error": "No JSON found in input"}


最后可以将json格式输送个下一个模块,生成表格
缺点:格式一变,就需要对应的重新编写代码
方法三、提取参数模块使用
使用参数提取,把非json格式,通过大模型新提取参数,将其转换成对应的参数格式。


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)