google/langextract
A Python library for extracting structured information from unstructured text using LLMs with precise source grounding and interactive visualization.
LangExtract – 基于LLM的结构化提取
功能 – LangExtract是一个Python库,可从任何非结构化文本(临床记录、文学作品、报告等)中提取结构化信息(实体、属性、关系)。它将文本与您编写的few-shot提示一起发送给大型语言模型(LLM),然后将每个返回的数据映射回原始文档中的精确字符范围。该库还生成交互式HTML可视化器,以便您在上下文中查看每个提取的高亮显示。
重要性 –
- 有根据的结果:每个提取都链接到其源位置,使验证变得容易,并支持需要可追溯性的下游管道(例如医疗审计)。
- 支持长文档:文本自动分块、并行处理,并可运行多次传递以提高召回率。
- 模型无关:支持Google Gemini(云)、OpenAI模型以及通过Ollama的本地模型;您还可以通过插件系统添加自定义提供程序。
- 无需微调:您只需提供提示和几个示例;通过提示工程利用LLM的世界知识。
如何开始 –
- 使用
pip install langextract(或从源代码/Docker)安装。 - 编写描述提取任务的简短提示,并提供展示所需输出格式的一个或多个ExampleData对象。
- 调用
lx.extract(text_or_documents, prompt_description, examples, model_id=…)。 - 使用
lx.io.save_annotated_documents将结果保存到JSONL文件,并通过lx.visualize生成可视化HTML文件。
典型工作流片段
import langextract as lx, textwrap
prompt = "按出现顺序提取角色、情感和关系。使用精确文本。"
examples = [
lx.data.ExampleData(
text="ROMEO. But soft! …",
extractions=[
lx.data.Extraction("character", "ROMEO", {"emotional_state": "wonder"}),
lx.data.Extraction("emotion", "But soft!", {"feeling": "gentle awe"}),
],
)
]
result = lx.extract(
text_or_documents="Lady Juliet gazed longingly at the stars…",
prompt_description=prompt,
examples=examples,
model_id="gemini-3.5-flash",
)
lx.io.save_annotated_documents([result], "extraction_results.jsonl")
html = lx.visualize("extraction_results.jsonl")
open("visualization.html", "w").write(html.data)
支持的後端 –
- Google Gemini(云,需要
LANGEXTRACT_API_KEY)。 - OpenAI(
gpt‑4o、gpt‑4o‑mini等,可选langextract[openai])。 - Ollama用于本地模型,如
gemma2:2b(无需API密钥)。 - 自定义提供程序可通过轻量级插件注册表添加为单独包。
可扩展性功能 –
- 并行分块处理(
max_workers)。 - 多轮提取(
extraction_passes)。 - Vertex AI批处理API集成,用于成本高效的大规模任务。
了解更多 –
- 实时演示:https://google‑langextract.hf.space/(浏览器中的罗密欧与朱丽叶提取)。
docs/文件夹中的完整文档,包括模式使用、批处理API和提供程序插件指南。- 长文本、药物提取和放射报告结构化(RadExtract)的示例笔记本。
社区与贡献 – 仓库包含社区构建的模型提供程序列表,并欢迎拉取请求。贡献需要贡献者许可协议。
LangExtract是一个真正的开源项目,致力于LLM驱动的信息提取,完全契合AI/ML工具领域。
相关
- 项目
- 项目
- 项目
- 项目
- 项目