dify自动化批量询问LLM并且保存回复为文件
dify自动化批量询问LLM并且保存回复为文件在AI应用开发中我们常常需要批量调用大语言模型LLM来处理大量文本数据例如批量生成摘要、批量翻译文档、批量抽取结构化信息等。手动一条条输入不仅效率低下还容易出错。本文将从实战角度出发演示如何使用dify的API接口结合Python脚本实现自动化批量询问LLM并将所有回复保存为文件。### 准备工作dify与API密钥在开始之前请确保你已经部署了dify或使用云端dify并创建了一个应用如“通用对话”应用。从应用设置中获取API密钥API Key和应用IDApp ID。我们将使用dify的chat-messages接口流式/非流式进行批量调用。本示例使用Python 3.8需要安装requests库bashpip install requests### 核心思路循环调用与文件持久化批量询问的本质是准备一个待问列表例如从CSV、JSON或文本文件读取然后循环调用dify API每次传入不同的用户输入最后将每次返回的LLM回复写入一个文件中如.txt或.json。为了便于追踪我们还会记录输入与输出的对应关系。### 代码示例一简单批量询问并保存为文本文件以下脚本从questions.txt读取每行一个问题逐条发送给dify然后将回复追加到answers.txt中格式为“问题 - 回答”。pythonimport requestsimport json# 配置dify API信息DIFY_API_URL https://your-dify-domain.com/api/v1/chat-messages # 替换为你的dify地址API_KEY app-xxxxxxxxxxxxxxxxxxxxxxxxx # 替换为你的API Keydef ask_dify(question: str) - str: 调用dify的非流式chat接口返回LLM的回复文本。 headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { inputs: {}, # 可以传入变量如 {topic: question} query: question, response_mode: blocking, # 非流式等待完整回复 conversation_id: , # 每次新对话 user: batch-user } try: resp requests.post(DIFY_API_URL, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() # 解析回复文本dify blocking模式返回结构中的answer字段 answer data.get(answer, ) return answer except Exception as e: print(f请求失败: {e}) return [ERROR]def main(): # 1. 从文件读取问题列表每行一个问题 questions [] with open(questions.txt, r, encodingutf-8) as f: for line in f: line line.strip() if line: questions.append(line) print(f共读取到 {len(questions)} 个问题开始批量询问...) # 2. 逐条询问并写入结果文件 with open(answers.txt, w, encodingutf-8) as out: for idx, q in enumerate(questions, 1): print(f正在处理第 {idx} 个问题: {q[:30]}...) ans ask_dify(q) # 写入格式问题 - 回答 out.write(f问题 {idx}: {q}\n) out.write(f回答 {idx}: {ans}\n) out.write( * 50 \n) print(所有问题处理完毕结果已保存至 answers.txt)if __name__ __main__: main()使用说明- 在脚本同目录下创建questions.txt每行写一个问题例如什么是人工智能 请用中文解释什么是机器学习。 请写一首关于秋天的诗。- 运行脚本等待完成后查看answers.txt。### 代码示例二批量处理JSON数据并保存为结构化文件实际业务中问题可能附带元数据如ID、类别。以下示例从input.json读取结构化数据每条包含id和question字段调用dify后将回复与原数据组合保存为output.json便于后续分析。pythonimport requestsimport json# 配置dify API信息同上DIFY_API_URL https://your-dify-domain.com/api/v1/chat-messagesAPI_KEY app-xxxxxxxxxxxxxxxxxxxxxxxxxdef ask_dify(question: str) - str: 与示例一相同调用dify并返回回答文本 headers { Authorization: fBearer {API_KEY}, Content-Type: application/json } payload { inputs: {}, query: question, response_mode: blocking, conversation_id: , user: batch-user } try: resp requests.post(DIFY_API_URL, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() return data.get(answer, ) except Exception as e: print(f请求失败: {e}) return [ERROR]def main(): # 1. 读取JSON格式的输入数据 with open(input.json, r, encodingutf-8) as f: records json.load(f) # 预期格式: [{id: 1, question: xxx}, ...] print(f共处理 {len(records)} 条记录) results [] for idx, record in enumerate(records): q record.get(question, ) print(f处理记录 {idx1}: id{record.get(id)}, 问题{q[:30]}...) ans ask_dify(q) # 2. 构建输出记录保留原始字段添加answer output_record { id: record.get(id), question: q, answer: ans, status: success if ans ! [ERROR] else error } results.append(output_record) # 3. 保存为JSON文件 with open(output.json, w, encodingutf-8) as f: json.dump(results, f, ensure_asciiFalse, indent2) print(f处理完成结果已保存至 output.json共 {len(results)} 条)if __name__ __main__: main()input.json示例json[ {id: 101, question: 解释一下量子计算的基本原理。}, {id: 102, question: 写一段关于区块链的科普文字。}, {id: 103, question: 简述TCP/IP协议栈的四层结构。}]运行后output.json将包含每个问题的回答方便后续程序读取或导入数据库。### 进阶优化并发请求与错误重试当问题数量达到几百甚至上千时串行调用会非常慢。我们可以使用concurrent.futures或aiohttp进行并发请求。以下是一个简单的线程池并发版本基于示例一改造pythonfrom concurrent.futures import ThreadPoolExecutor, as_completedimport requests# ... 相同的ask_dify函数 ...def process_question(q: str, idx: int): print(f开始处理第 {idx} 个问题) ans ask_dify(q) return idx, q, ansdef main_concurrent(): questions [] with open(questions.txt, r, encodingutf-8) as f: for line in f: line line.strip() if line: questions.append(line) results [None] * len(questions) # 预分配列表保持顺序 with ThreadPoolExecutor(max_workers5) as executor: # 同时并发5个请求 futures {executor.submit(process_question, q, i): i for i, q in enumerate(questions)} for future in as_completed(futures): idx, q, ans future.result() results[idx] (q, ans) # 按原始索引存放 # 写入文件 with open(answers_concurrent.txt, w, encodingutf-8) as out: for idx, (q, ans) in enumerate(results): out.write(f问题 {idx1}: {q}\n) out.write(f回答 {idx1}: {ans}\n) out.write( * 50 \n) print(并发处理完成结果保存至 answers_concurrent.txt)注意并发数不宜过大以免被dify限流。建议根据dify的部署配置调整max_workers通常5-10比较安全。### 总结本文通过两个实战代码示例展示了如何使用Python调用dify API实现自动化批量询问LLM并将回复保存为文本文件或JSON文件。核心要点包括1.批量循环从文件或JSON读取问题列表逐条调用dify的chat-messages接口。2.结果持久化使用文本文件或JSON文件保存输入与输出便于后续查看或二次处理。3.错误处理通过try/except捕获网络异常避免单个失败中断整个流程。4.并发优化使用线程池提升处理效率适合大规模数据。实际生产环境中还可以加入进度条显示、失败重试机制指数退避、断点续传等功能。希望这篇文章能帮助你快速搭建自己的批量LLM调用工具节省重复劳动的时间。

相关新闻

AI汇报工具实战:Notion+Gamma+Tome高效组合

AI汇报工具实战:Notion+Gamma+Tome高效组合

1. 职场汇报的痛点与变革契机 每次季度汇报前夜的办公室灯火通明,是当代职场人最熟悉的场景。市场部的Lisa正在第17次修改PPT配色,技术部的王工反复调试着永远对不齐的数据图表,而管理层最常收到的却是"信息过载却重点模糊"的汇报材…

2026/7/27 19:42:13 阅读更多 →
分库分表后SQL全崩?这些坑我替你踩完了

分库分表后SQL全崩?这些坑我替你踩完了

分库分表后SQL全崩?这些坑我替你踩完了 还记得我们第一次把2亿条订单数据拆成16个分片段上线的那天,本来信心满满觉得性能肯定能起飞,结果上线刚十分钟告警就炸了:订单列表接口超时率冲到35%,订单count统计接口最长要1…

2026/7/27 19:41:13 阅读更多 →
C++ CRC16校验:从原理到查表法与硬件优化的工程实践

C++ CRC16校验:从原理到查表法与硬件优化的工程实践

1. 项目概述:为什么CRC16校验在C开发中如此重要?在嵌入式通信、文件传输、网络协议这些对数据可靠性要求极高的领域,数据在传输或存储过程中,一个比特的翻转都可能导致灾难性的后果。想象一下,你通过串口向一台工业设备…

2026/7/27 19:41:13 阅读更多 →

最新新闻

Factorio Calculator开发者指南:线性代数如何解决原油精炼难题

Factorio Calculator开发者指南:线性代数如何解决原油精炼难题

Factorio Calculator开发者指南:线性代数如何解决原油精炼难题 【免费下载链接】kirkmcdonald.github.io Simple web-based calculator for the game Factorio. 项目地址: https://gitcode.com/gh_mirrors/ki/kirkmcdonald.github.io Factorio Calculator是一…

2026/7/27 19:51:19 阅读更多 →
深入理解peg-markdown的PEG语法:从markdown_parser.leg文件学习语法定义

深入理解peg-markdown的PEG语法:从markdown_parser.leg文件学习语法定义

深入理解peg-markdown的PEG语法:从markdown_parser.leg文件学习语法定义 【免费下载链接】peg-markdown An implementation of markdown in C, using a PEG grammar 项目地址: https://gitcode.com/gh_mirrors/pe/peg-markdown peg-markdown是一个使用PEG语法…

2026/7/27 19:51:19 阅读更多 →
组件级响应式的破局:CSS 容器查询的工程落地与取舍

组件级响应式的破局:CSS 容器查询的工程落地与取舍

组件级响应式的破局:CSS 容器查询的工程落地与取舍 一、从视口到容器:组件响应式的痛点回溯 在 CSS 容器查询(Container Queries)进入稳定规范之前,前端响应式布局的唯一锚点是浏览器视口(viewport&#…

2026/7/27 19:51:19 阅读更多 →
3D 资产生成的质量门禁:用几何与材质指标做自动化验收

3D 资产生成的质量门禁:用几何与材质指标做自动化验收

3D 资产生成的质量门禁:用几何与材质指标做自动化验收 一、生成容易验收难:AIGC 网格的隐性瑕疵 文本或图像转 3D 越来越顺手,一张概念图几秒出网格,可美术拿到手常皱眉:破面、非流形、UV 拉伸、法线反转、材质撞色&am…

2026/7/27 19:51:19 阅读更多 →
2026年文字转语音在线使用怎么选?用了半年我只留这款低成本工具

2026年文字转语音在线使用怎么选?用了半年我只留这款低成本工具

简短结论 2026年选择文字转语音在线工具,核心是匹配自身使用场景与成本预算。不同类型工具适配不同需求:大厂工具适合专业高要求场景,生态工具适合对应体系内办公用户,免费工具适合偶尔轻量使用,听脑AI更适合需要低成本…

2026/7/27 19:51:19 阅读更多 →
【Vue知识点总结】Vue2 与 Vue3 区别

【Vue知识点总结】Vue2 与 Vue3 区别

目录 一、核心区别 1. 从“选项式”到“组合式”API Vue 2:选项式 API (Options API) Vue 3:组合式 API (Composition API) 2. 性能:从“够用”到“极致” 3. TypeScript 支持 4. 新增特性 (1) 多根节点 (Fragment) (2) Teleport (传送门) (3) Suspense(支持异步组…

2026/7/27 19:50:19 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻