ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何 5 分钟跑通大规模文本提取与分析:LiteLLM 统一 LLM 接口实战

如何 5 分钟跑通大规模文本提取与分析:LiteLLM 统一 LLM 接口实战 如何 5 分钟跑通大规模文本提取与分析LiteLLM 统一 LLM 接口实战【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm海量文本处理最磨人的从来不是模型本身而是外围杂事来源格式混着 PDF、扫描件、纯文本单份文档动辄超出模型上下文窗口换一家供应商就得改一遍 SDK 和计费逻辑。LiteLLM 把这几件事收进了一个包里用统一的 OpenAI 风格接口调用 100 家的 LLM API内置 PDF 文本提取与 OCR 管道代理层负责负载均衡和成本记录。下面按先跑通、再拆解、后放大的顺序过一遍。5 分钟跑通第一次提取 第一次分析装包之后两行代码就能完成PDF → 纯文本 → 模型分析的最小闭环# 安装pip install litellm import litellm from litellm.rag.ingestion.file_parsers.pdf_parser import extract_text_from_pdf # 解析 PDF优先 pypdf缺库时自动回退 PyPDF2 raw extract_text_from_pdf(open(contract.pdf, rb).read()) # 任选一家供应商的模型接口写法不变 resp litellm.completion( modelanthropic/claude-3-5-sonnet, messages[{role: user, content: f列出关键条款{raw[:3000]}}], ) print(resp.choices[0].message.content)注意extract_text_from_pdf接收的是字节流而不是路径方便直接对接 S3 等对象存储。提取失败时函数返回None而不是抛异常扫描件这类拿不到文本层的情况需要走后面的 OCR 通道。三项核心能力拆解统一 API 与模型路由。所有供应商的补全请求都收敛到litellm.completion(model, messages)一个入口model字符串里的前缀决定走哪家openai/、anthropic/、bedrock/、vertex_ai/……换模型改一个字符串换供应商基本不动业务代码。为什么重要文本分析任务通常要同时比几家模型的成本与抽取质量接口统一后这种对比才能做到小时级完成。文本提取PDF 与 OCR 两条腿。常规 PDF 用pdf_parser.py里的解析器逐页抽取源码在 litellm/rag/ingestion/file_parsers/。扫描件走 RAG 管道的 OCR 环节默认模型是mistral/mistral-ocr-latest可在ocr配置里换成 Azure AI、Vertex AI 等文档智能服务管道整体是上传 → OCR → 分块 → 向量化的顺序实现在 litellm/rag/。为什么重要真实语料里带扫描件的占比不低只有纯 pypdf 的管道会在这部分样本上整批丢数据。代理层与分布式处理。起一个 LiteLLM Proxy 后并发请求由代理做负载均衡、失败重试、预算扣减业务侧仍只调一个地址。为什么重要单机脚本处理到几千份文档时瓶颈往往在供应商侧限流而不是本地 CPU。完整管道实战分块 → 批量分析 → 整合仓库自带RecursiveCharacterTextSplitter按段落、换行、空格逐级递归切分避免把句子拦腰截断。下面的示例把它接到批量分析上from litellm import completion from litellm.rag.text_splitters import RecursiveCharacterTextSplitter # 按 1500 字符切块带默认重叠防止块边界切断语义 chunks RecursiveCharacterTextSplitter(chunk_size1500).split_text(raw) findings [] for i, chunk in enumerate(chunks): r completion(modelgpt-4o-mini, messages[{role: user, content: 提取本段的关键实体与数值 chunk}]) findings.append(f## 分块 {i}\n{r.choices[0].message.content}) open(result.md, w).write(\n\n.join(findings)) # 汇总落盘分块编号写进结果里后面排查哪一段抽错了可以直接定位。如果要处理上千份文档把循环换成litellm.acompletion加asyncio.gather并发数控制在供应商限流之内即可。规模化与成本控制代理面板能看到每个 API Key、每个模型维度的消耗审计日志页记录了键的创建、轮换、删除全过程适合多人共用的团队环境控成本有三个直接可用的抓手缓存相同前缀的抽取请求命中率不低开启响应缓存能砍掉重复开销模型分级初筛用 mini 档模型只对低置信度结果升级到旗舰模型复核预算与告警在代理上给 Key 设上限触顶自动拒绝而不是事后发现账单。观测侧接 Langfuse 后每个completion调用都会进 trace延迟、token 数、单次成本都能在时间线上展开避坑与调优 分块大小别照抄 3000chunk_size 要和模型上下文、prompt 模板一起算预留系统提示与输出空间实测 1000~1500 字符是多数抽取任务的舒适区OCR 引擎分场景选纯文本 PDF 用 pypdf 就够别浪费 OCR 额度表格密集的扫描件才上文档智能服务多语言场景优先看支持语言列表失败要留痕extract_text_from_pdf返回None的样本单独落一个失败清单跑完全量后回头补 OCR比整批重跑便宜得多限流先于并发批量任务把并发设为供应商 TPM 限额的 7 成左右留出重试余量比打满后被 429 拖垮整个批次更稳。延伸阅读更多管道细节看 litellm/rag/ingestion/ 下各供应商的 ingestion 实现代理行为与配置项可查 litellm/proxy/ 内的文档与配置样例。仓库地址git clone https://gitcode.com/GitHub_Trending/li/litellm。【免费下载链接】litellmThe fastest, litest AI Gateway. Rust core with Python SDK. Call 100 LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]项目地址: https://gitcode.com/GitHub_Trending/li/litellm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表