Python 如何处理 AI API 的长文本:文件读取、分段与上下文整理
当文档、日志或代码文件较长时直接一次性发送给 AI API 容易超过上下文限制也会增加处理时间。本文介绍一种适合个人项目的长文本处理流程。为什么长文本不能直接全部发送一段较长的内容直接放进请求里可能遇到超过模型上下文长度请求体过大响应变慢处理结果不完整内容中无关部分太多更实用的流程是读取文件 → 清理内容 → 分段 → 分别处理 → 汇总结果这样可以让每次请求只处理一部分内容也更方便定位失败位置。一、先读取文本文件Python 可以使用pathlib读取文件frompathlibimportPath file_pathPath(example.txt)textfile_path.read_text(encodingutf-8)print(text[:500])如果文件可能不是 UTF-8 编码需要根据实际情况处理编码异常。不要默认所有文件都可以直接读取。二、先清理无用内容在分段前可以先做简单清理defclean_text(text:str)-str:lines[line.strip()forlineintext.splitlines()]lines[lineforlineinlinesifline]return\n.join(lines)清理的目的不是删除所有空行而是减少重复空白、无效分隔符和明显无关内容。如果是日志文件还可以根据时间、级别或关键字筛选内容。三、按照固定长度分段最简单的分段方式是按照字符数量切分defsplit_text(text:str,chunk_size:int4000)-list[str]:return[text[i:ichunk_size]foriinrange(0,len(text),chunk_size)]这种方式实现简单但可能把一句话或一个代码块从中间截断。适合用于初步测试结构简单的纯文本对边界要求不高的任务四、优先按照段落分段如果希望保留文章结构可以优先按段落切分defsplit_by_paragraph(text:str,max_chars:int4000)-list[str]:paragraphstext.split(\n\n)chunks[]current[]current_length0forparagraphinparagraphs:ifcurrentandcurrent_lengthlen(paragraph)max_chars:chunks.append(\n\n.join(current))current[]current_length0current.append(paragraph)current_lengthlen(paragraph)ifcurrent:chunks.append(\n\n.join(current))returnchunks这种方式比直接按字符切分更适合文章、说明文档和 Markdown 文件。五、给每个分段增加编号分段处理时建议保留编号chunkssplit_by_paragraph(text)forindex,chunkinenumerate(chunks,start1):print(f正在处理第{index}/{len(chunks)}段)编号可以帮助你定位失败片段记录处理进度重新处理单个分段汇总结果时保持顺序六、调用 AI API 分别处理每一段下面是一个基础示例fromopenaiimportOpenAI clientOpenAI(api_keyyour-api-key,base_urlhttps://your-api-domain.com/v1,)defsummarize_chunk(chunk:str)-str:responseclient.chat.completions.create(modelyour-model-name,messages[{role:system,content:你负责提取文本中的关键事实保持简洁不要添加原文没有的信息。,},{role:user,content:f请总结下面这段内容\n\n{chunk},},],)returnresponse.choices[0].message.content实际处理时可以逐段调用并保存结果。七、最后汇总分段结果summaries[]forindex,chunkinenumerate(chunks,start1):summarysummarize_chunk(chunk)summaries.append(f第{index}段{summary})final_text\n\n.join(summaries)print(final_text)如果分段数量很多最终汇总也可能变成长文本。可以再次进行二次总结或者只保留关键字段。八、长文本处理中的几个注意点1. 分段不要过大要给系统提示词和模型输出留出空间。2. 分段不要过小过小会导致上下文不足增加请求次数。3. 需要保留文档结构标题、章节和代码块最好不要随意截断。4. 失败后支持单段重试不要因为一个片段失败就丢弃全部结果。5. 注意敏感信息上传前应检查密钥、手机号、邮箱和其他隐私内容。九、适合长文本分段的场景Markdown 文档总结项目日志分析代码文件说明会议记录整理知识库内容处理批量文本分类如果任务需要理解全文关系可以先分段提取信息再进行统一汇总。十、结语长文本处理的核心不是简单截断而是建立一个可恢复的流程先读取和清理根据内容分段逐段处理并记录编号失败时只重试单段最后汇总结果对于 Python AI 项目来说这种方式比一次性发送整篇文档更容易控制请求规模也方便后续扩展缓存、限流和日志功能。免责声明本文内容仅用于技术交流与经验分享具体实现请结合项目实际情况调整。

相关新闻

计算机图形学实践:从基础绘制到着色器编程

计算机图形学实践:从基础绘制到着色器编程

1. 项目概述"Games102 作业下"这个标题看似简单,实际上包含了计算机图形学课程中一系列富有挑战性的实践内容。作为计算机图形学基础课程的核心作业,它通常涉及三维建模、渲染管线、着色器编程等关键技术的实践应用。在图形学领域,…

2026/8/1 4:45:46阅读更多 →
UE5蓝图样条线移动:从原理到实战的完整实现指南

UE5蓝图样条线移动:从原理到实战的完整实现指南

1. 项目概述:为什么需要蓝图驱动的样条线移动?在虚幻引擎5(UE5)的项目开发中,无论是制作一个简单的过场动画,还是实现复杂的巡逻AI路径,让物体沿着预设的路径平滑移动都是一个高频需求。手动K帧…

2026/8/1 4:45:46阅读更多 →
STM32串口初始化实战:标准库配置USART1/2/3与避坑指南

STM32串口初始化实战:标准库配置USART1/2/3与避坑指南

1. 项目概述:为什么串口初始化是STM32开发的基石在嵌入式开发领域,尤其是基于STM32的项目中,串口通信(USART/UART)几乎是每个项目都绕不开的基础功能。无论是用于打印调试信息、与上位机通信,还是连接GPS、…

2026/8/1 4:43:46阅读更多 →
枚举基础用法详解

枚举基础用法详解

// 枚举基础用法:声明、赋值、输出、比较和switch控制 enum Apple {Jonathan, GoldenDel, RedDel, Winesap, Cortland }class EnumDemo {public static void main(String args[]) {Apple ap Apple.RedDel;System.out.println("Value of ap: " ap); // 输…

2026/8/1 5:58:08阅读更多 →
金蝶云星空ERP数据库迁移电信云RDS实战指南

金蝶云星空ERP数据库迁移电信云RDS实战指南

1. 项目背景与核心价值:当企业级ERP遇上云原生数据库最近在帮一家客户做系统上云的迁移方案,他们用的是金蝶云星空,数据库一直托管在本地机房。随着业务量增长,老旧的物理服务器在性能、扩展性和运维成本上越来越吃力。客户的目标…

2026/8/1 5:58:08阅读更多 →
Unity UIEffect组件实战:从原理到性能优化,打造高性能UI特效

Unity UIEffect组件实战:从原理到性能优化,打造高性能UI特效

1. 项目概述:为什么你的Unity UI需要“特效”?如果你做过Unity项目,尤其是手游或者需要精致界面的应用,肯定遇到过这样的困境:UI设计师给了一套非常酷炫的界面设计稿,充满了流光、阴影、模糊、颜色渐变等效…

2026/8/1 5:58:08阅读更多 →
Unity Shader入门:从渲染管线到顶点/片元着色器实践

Unity Shader入门:从渲染管线到顶点/片元着色器实践

1. 项目概述:从“黑盒”到“可控”的渲染之旅如果你刚开始接触Unity,或者已经能用C#脚本让角色跑跳、让UI动起来,但一看到材质球上那些复杂的参数和神秘的Shader代码就感到头疼,那么这篇笔记可能就是为你准备的。我最初学Unity时&…

2026/8/1 5:58:08阅读更多 →
Java开发者转型TypeScript的实践指南

Java开发者转型TypeScript的实践指南

1. 为什么Java开发者需要关注TypeScript 作为深耕Java领域多年的开发者,我最初接触TypeScript时也带着疑问:为什么要学习另一种语言?直到参与了一个全栈项目后才发现,TypeScript正在成为现代Web开发的重要拼图。根据2023年Stack …

2026/8/1 5:58:08阅读更多 →
Cesium WebGL Shader优化:从Entity API到GPU高性能渲染实战

Cesium WebGL Shader优化:从Entity API到GPU高性能渲染实战

你有没有遇到过这种情况:自己写的 Cesium 地图特效跑起来总是一卡一卡的,而别人做的同样功能却丝滑流畅?这背后往往不是代码逻辑的差异,而是对 WebGL Shader 底层原理的理解深度不同。最近我在一个三维可视化项目中,需…

2026/8/1 5:56:08阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →