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/8/26 15:14:45 阅读更多 →
分库分表后SQL全崩?这些坑我替你踩完了

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

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

2026/8/26 20:23:09 阅读更多 →
C++ CRC16校验:从原理到查表法与硬件优化的工程实践

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

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

2026/8/20 23:23:26 阅读更多 →

最新新闻

绿色金融:碳中和背景下的金融工具、运作逻辑与实操指南

绿色金融:碳中和背景下的金融工具、运作逻辑与实操指南

1. 项目概述:当金融遇见“绿色”最近几年,但凡关注点经济新闻的朋友,肯定对“碳中和”这个词不陌生。它从一个略显专业的环保术语,迅速演变成了全球各国、各大企业战略规划里的核心KPI。简单来说,就是通过植树造林、节…

2026/8/26 20:51:06 阅读更多 →
IDM批量下载视频全攻略:从原理到实战,构建高效下载流水线

IDM批量下载视频全攻略:从原理到实战,构建高效下载流水线

1. 项目概述:为什么IDM是批量下载视频的利器如果你经常需要从各种网站下载视频,无论是为了学习、备份还是内容创作,手动一个个点开链接、等待、保存,这个过程不仅枯燥,效率也极其低下。这时候,一个强大的下…

2026/8/26 20:51:06 阅读更多 →
在Sonata Board上体验CHERI:硬件级内存安全实战指南

在Sonata Board上体验CHERI:硬件级内存安全实战指南

收到这个题目,很多人第一反应是:CHERI 不是那个还在论文里、实验室里的东西吗?Sonata Board 又是什么开发板?我也是抱着“先看看能跑成什么样”的心态入手的。结果这块板子给我的冲击,比想象中大得多——它把一套完整的…

2026/8/26 20:51:06 阅读更多 →
头歌实践教学平台:数据科学与大数据技术导论(六)

头歌实践教学平台:数据科学与大数据技术导论(六)

六、数据任务描述 本关任务:根据相关知识内容完成右边选择题。相关知识 为了完成本关任务,你需要掌握: 1.数据的概念; 2.数据类型; 3.数据组织形式; 4.数据的使用; 5.数据的价值; 6.…

2026/8/26 20:51:06 阅读更多 →
告别重复劳动!桌面 AI 智能体榜单发布,普通人零代码落地 AI 工作流的实战指南

告别重复劳动!桌面 AI 智能体榜单发布,普通人零代码落地 AI 工作流的实战指南

2026三掌柜赠书活动第四十五期 WorkBuddy从上手到变现 目录 前言 当AI从“帮你写”走向“替你干”,普通人多了一套生产力 关于《WorkBuddy从上手到变现》 编辑推荐 内容简介 作者简介 图书目录 《WorkBuddy从上手到变现》全书速览 结束语 前言 AI 工具已经…

2026/8/26 20:51:06 阅读更多 →
动态规划算法:核心思想与面试实战指南

动态规划算法:核心思想与面试实战指南

1. 动态规划:算法面试的必杀技 第一次接触动态规划是在大三的算法课上,教授在黑板上写下"Fibonacci数列"几个大字时,我完全没意识到这将是我算法学习路上最重要的转折点。直到后来参加校招面试,被面试官连续追问三道动态…

2026/8/26 20:50:05 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →