LLMs之StructuredOutput:LangExtract的简介、安装和使用方法、案例应用之详细攻略
目录
LangExtract的简介
2025年7月底,Google发布了LangExtract。LangExtract是一个Python库,它使用LLM(大型语言模型)从非结构化文本中提取结构化信息,提取过程基于用户定义的指令 。 它可以处理临床笔记或报告等材料,识别和组织关键细节,同时确保提取的数据与源文本对应。
GitHub地址:https://github.com/google/langextract
1、特点
LangExtract具有以下特点:
>> 精确的源头定位:将每次提取的内容映射到源文本中的确切位置,从而可以通过可视化突出显示轻松进行追溯和验证 。
>> 可靠的结构化输出:基于少量示例强制执行一致的输出模式,利用Gemini等支持模型中的受控生成来保证强大的结构化结果 。
>> 针对长文档优化:通过优化文本分块、并行处理和多次传递的策略,克服大型文档提取中的“大海捞针”挑战,从而提高召回率 。
>> 交互式可视化:即时生成一个独立的交互式HTML文件,以可视化和审查数千个提取的实体及其原始上下文 。
>> 灵活的LLM支持:支持用户偏好的模型,从Google Gemini系列等基于云的LLM到通过内置Ollama接口的本地开源模型 .
>> 适应任何领域:只需几个示例,即可为任何领域定义提取任务。LangExtract可以适应用户的需求,而无需任何模型微调 。
>> 利用LLM世界知识:使用精确的提示措辞和少量示例来影响提取任务如何利用LLM知识。任何推断信息的准确性及其对任务规范的遵守取决于所选的LLM、任务的复杂性、提示指令的清晰度以及提示示例的性质 .
LangExtract的安装和使用方法
1、安装
T1、从PyPI安装
推荐给大多数用户。对于隔离环境,请考虑使用虚拟环境:
python -m venv langextract_env
source langextract_env/bin/activate
# On Windows: langextract_env\Scripts\activate
pip install langextract
T2、从源码安装
LangExtract使用带有pyproject.toml的现代Python打包来进行依赖管理。 使用-e安装会将包置于开发模式,允许用户修改代码而无需重新安装。
git clone https://github.com/google/langextract.git
cd langextract
# For basic installation:
pip install -e .
# For development (includes linting tools):
pip install -e ".[dev]"
# For testing (includes pytest):
pip install -e ".[test]"
T3、Docker安装
docker build -t langextract .
docker run --rm -e LANGEXTRACT_API_KEY="your-api-key" langextract python your_script.py
2、使用方法
2.1、配置环境
API密钥设置(对于云模型)
使用云托管模型(如Gemini或OpenAI)时,需要设置API密钥。设备上的模型不需要API密钥。对于使用本地LLM的开发者,LangExtract提供对Ollama的内置支持,并且可以通过更新推理端点扩展到其他第三方API。
从以下位置获取API密钥:
AI Studio for Gemini models
Vertex AI for enterprise use
OpenAI Platform for OpenAI models
在环境中设置API密钥:
选项1:环境变量
export LANGEXTRACT_API_KEY="your-api-key-here"
选项2:.env文件(推荐)
将API密钥添加到.env文件:
# Add API key to .env file
cat >> .env << 'EOF'
LANGEXTRACT_API_KEY=your-api-key-here
EOF
# Keep your API key secure
echo '.env' >> .gitignore
在Python代码中:
import langextract as lx
result = lx.extract(
text_or_documents=input_text,
prompt_description="Extract information...",
examples=[...],
model_id="gemini-2.5-flash"
)
选项3:直接API密钥(不推荐用于生产)
也可以直接在代码中提供API密钥,但这不建议用于生产环境:
result = lx.extract(
text_or_documents=input_text,
prompt_description="Extract information...",
examples=[...],
model_id="gemini-2.5-flash",
api_key="your-api-key-here" # Only use this for testing/development
)
2.2、使用OpenAI模型
LangExtract也支持OpenAI模型。以下是一个OpenAI配置示例:
import langextract as lx
import os
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
language_model_type=lx.inference.OpenAILanguageModel,
model_id="gpt-4o",
api_key=os.environ.get('OPENAI_API_KEY'),
fence_output=True,
use_schema_constraints=False
)
注意:OpenAI模型需要fence_output=True和use_schema_constraints=False,因为LangExtract尚未为OpenAI实施模式约束。
2.3、使用带有Ollama的本地LLM
LangExtract支持使用Ollama进行本地推理,允许用户在没有API密钥的情况下运行模型:
import langextract as lx
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
language_model_type=lx.inference.OllamaLanguageModel,
model_id="gemma2:2b", # or any Ollama model
model_url="http://localhost:11434",
fence_output=False,
use_schema_constraints=False
)
快速设置:从ollama.com安装Ollama,运行ollama pull gemma2:2b,然后运行ollama serve。
LangExtract的案例应用
Romeo and Juliet Full Text Extraction(罗密欧与朱丽叶全文提取)
LangExtract可以直接从URL处理完整的文档。 这个例子演示了从Project Gutenberg的《罗密欧与朱丽叶》全文(147,843个字符)中提取,展示了并行处理、顺序提取通道以及长文档处理的性能优化。
Medication Extraction(药物提取)
LangExtract擅长从临床文本中提取结构化的医疗信息。 这些例子演示了基本的实体识别(药物名称、剂量、途径)和关系提取(连接药物及其属性),展示了LangExtract在医疗保健应用中的有效性 。
Radiology Report Structuring: RadExtract(放射学报告结构化:RadExtract)
RadExtract是一个HuggingFace Spaces上的实时交互式演示,展示了LangExtract如何自动构建放射学报告的结构。可以直接在浏览器中尝试,无需设置 。