LLMs之StructuredOutput:LangExtract的简介、安装和使用方法、案例应用之详细攻略

LLMs之StructuredOutput:LangExtract的简介、安装和使用方法、案例应用之详细攻略

目录

LangExtract的简介

1、特点

LangExtract的安装和使用方法

1、安装

T1、从PyPI安装

T2、从源码安装

T3、Docker安装

2、使用方法

2.1、配置环境

API密钥设置(对于云模型)

在环境中设置API密钥:

2.2、使用OpenAI模型

2.3、使用带有Ollama的本地LLM

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如何自动构建放射学报告的结构。可以直接在浏览器中尝试,无需设置 。

### minimind LLMs 源码解读分析 #### full_sft.py 文件解析 `full_sft.py` 是一个用于实现基于 PyTorch 的分布式混合精度语言模型全参数训练框架的脚本[^1]。该文件主要关注于如何高效地利用硬件资源,在大规模数据集上进行高效的训练。 为了支持分布式训练,此模块引入了 `torch.distributed.launch` 工具来启动多进程环境,并通过配置 GPU 设备来进行并行计算。对于优化器的选择,默认采用 AdamW 来更新权重参数;同时为了加速收敛过程以及提高数值稳定性,还应用了梯度裁剪技术防止梯度过大造成不稳定现象发生。 此外,考虑到现代深度学习任务中常见的内存瓶颈问题,这里实现了自动混合精度机制 (Automatic Mixed Precision, AMP),它允许网络中的某些部分以较低位宽的数据类型运行从而节省显存空间而不影响最终性能表现。 ```python from torch.cuda.amp import GradScaler, autocast scaler = GradScaler() with autocast(): outputs = model(inputs) loss.backward() scaler.step(optimizer) scaler.update() ``` #### eval.py 文件解析 另一方面,《eval.py》则专注于构建一个可以与用户实时互动交流的人工智能系统[^2]。具体来说就是创建了一个命令行界面(Command Line Interface, CLI), 让使用者能够输入自然语言查询语句得到相应的回复结果。 在这个过程中涉及到的关键组件包括但不限于: - **Tokenizer**: 负责将原始文本转换成 token 序列以便送入 Transformer 编解码架构处理; - **Model Inference Pipeline**: 定义好推理流程之后就可以调用预训练好的 checkpoint 进行预测操作了; - **Response Generation Logic**: 根据上下文信息动态调整生成策略确保对话连贯性逻辑一致性. ```python tokenizer = AutoTokenizer.from_pretrained('pretrained_model_path') model = AutoModelForCausalLM.from_pretrained('pretrained_model_path') input_text = "你好" inputs = tokenizer(input_text, return_tensors="pt").to(device) outputs = model.generate(**inputs, max_length=50) response = tokenizer.decode(outputs[0], skip_special_tokens=True) print(response) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值