当前位置: 代码网 > it编程>前端脚本>Python > Python处理AI API长文本的完整流程

Python处理AI API长文本的完整流程

2026年08月24日 Python 我要评论
为什么长文本不能直接全部发送?一段较长的内容直接放进请求里,可能遇到:超过模型上下文长度请求体过大响应变慢处理结果不完整内容中无关部分太多更实用的流程是:读取文件 → 清理内容 → 分段 → 分别处理

为什么长文本不能直接全部发送?

一段较长的内容直接放进请求里,可能遇到:

  • 超过模型上下文长度
  • 请求体过大
  • 响应变慢
  • 处理结果不完整
  • 内容中无关部分太多

更实用的流程是:

读取文件 → 清理内容 → 分段 → 分别处理 → 汇总结果

这样可以让每次请求只处理一部分内容,也更方便定位失败位置。

一、先读取文本文件

python 可以使用 pathlib 读取文件:

from pathlib import path

file_path = path("example.txt")
text = file_path.read_text(encoding="utf-8")
print(text[:500])

如果文件可能不是 utf-8 编码,需要根据实际情况处理编码异常。不要默认所有文件都可以直接读取。

二、先清理无用内容

在分段前,可以先做简单清理:

def clean_text(text: str) -> str:
    lines = [line.strip() for line in text.splitlines()]
    lines = [line for line in lines if line]
    return "\n".join(lines)

清理的目的不是删除所有空行,而是减少重复空白、无效分隔符和明显无关内容。

如果是日志文件,还可以根据时间、级别或关键字筛选内容。

三、按照固定长度分段

最简单的分段方式是按照字符数量切分:

def split_text(text: str, chunk_size: int = 4000) -> list[str]:
    return [
        text[i:i + chunk_size]
        for i in range(0, len(text), chunk_size)
    ]

这种方式实现简单,但可能把一句话或一个代码块从中间截断。

适合用于:

  • 初步测试
  • 结构简单的纯文本
  • 对边界要求不高的任务

四、优先按照段落分段

如果希望保留文章结构,可以优先按段落切分:

def split_by_paragraph(text: str, max_chars: int = 4000) -> list[str]:
    paragraphs = text.split("\n\n")
    chunks = []
    current = []
    current_length = 0

    for paragraph in paragraphs:
        if current and current_length + len(paragraph) > max_chars:
            chunks.append("\n\n".join(current))
            current = []
            current_length = 0

        current.append(paragraph)
        current_length += len(paragraph)

    if current:
        chunks.append("\n\n".join(current))

    return chunks

这种方式比直接按字符切分更适合文章、说明文档和 markdown 文件。

五、给每个分段增加编号

分段处理时,建议保留编号:

chunks = split_by_paragraph(text)

for index, chunk in enumerate(chunks, start=1):
    print(f"正在处理第 {index}/{len(chunks)} 段")

编号可以帮助你:

  • 定位失败片段
  • 记录处理进度
  • 重新处理单个分段
  • 汇总结果时保持顺序

六、调用 ai api 分别处理每一段

下面是一个基础示例:

from openai import openai

client = openai(
    api_key="your-api-key",
    base_url="https://your-api-domain.com/v1",
)


def summarize_chunk(chunk: str) -> str:
    response = client.chat.completions.create(
        model="your-model-name",
        messages=[
            {
                "role": "system",
                "content": "你负责提取文本中的关键事实,保持简洁,不要添加原文没有的信息。",
            },
            {
                "role": "user",
                "content": f"请总结下面这段内容:\n\n{chunk}",
            },
        ],
    )
    return response.choices[0].message.content

实际处理时,可以逐段调用并保存结果。

七、最后汇总分段结果

summaries = []

for index, chunk in enumerate(chunks, start=1):
    summary = summarize_chunk(chunk)
    summaries.append(f"第 {index} 段:{summary}")

final_text = "\n\n".join(summaries)
print(final_text)

如果分段数量很多,最终汇总也可能变成长文本。可以再次进行二次总结,或者只保留关键字段。

八、长文本处理中的几个注意点

1. 分段不要过大

要给系统提示词和模型输出留出空间。

2. 分段不要过小

过小会导致上下文不足,增加请求次数。

3. 需要保留文档结构

标题、章节和代码块最好不要随意截断。

4. 失败后支持单段重试

不要因为一个片段失败就丢弃全部结果。

5. 注意敏感信息

上传前应检查密钥、手机号、邮箱和其他隐私内容。

九、适合长文本分段的场景

  • markdown 文档总结
  • 项目日志分析
  • 代码文件说明
  • 会议记录整理
  • 知识库内容处理
  • 批量文本分类

如果任务需要理解全文关系,可以先分段提取信息,再进行统一汇总。

十、结语

长文本处理的核心不是简单截断,而是建立一个可恢复的流程:

  • 先读取和清理
  • 根据内容分段
  • 逐段处理并记录编号
  • 失败时只重试单段
  • 最后汇总结果

对于 python ai 项目来说,这种方式比一次性发送整篇文档更容易控制请求规模,也方便后续扩展缓存、限流和日志功能。

以上就是python处理ai api长文本的完整流程的详细内容,更多关于python处理ai api长文本的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com