使用引用示例进行数据提取的技巧

使用引用示例进行数据提取的技巧

在文本和其他非结构化或半结构化形式中提取信息以生成结构化表示时,通常可以通过向大型语言模型提供引用示例来提高提取质量。在这种背景下,工具调用的LLM功能经常被使用。本指南演示了如何构建工具调用的少量示例,以帮助指导提取和类似应用的行为。

技术背景介绍

引用示例能够帮助模型更准确地理解和提取指定的信息,尤其是在工具调用模型中应用时。虽然我们主要讲解如何在工具调用模型中使用这些示例,但这项技术也适用于JSON或基于提示的其他技术。

LangChain在LLM的消息中实现了一个工具调用属性,以包括工具调用。请参阅我们的工具调用指南以获取更多详细信息。

核心原理解析

通过构建一个包含以下消息序列的聊天历史来准备数据提取的引用示例:

  • HumanMessage: 包含用于提取的示例输入。
  • AIMessage: 包含示例工具调用。
  • ToolMessage: 包含示例工具输出。

LangChain采用这种约定来将工具调用结构化为不同LLM模型之间的对话。

首先,我们构建一个提示模板,包含这些消息的占位符:

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "You are an expert extraction algorithm. Only extract relevant information from the text. If you do not know the value of an attribute asked to extract, return null for the attribute's value."),
        MessagesPlaceholder("examples"),  # <-- 引用示例的占位符
        ("human", "{text}"),
    ]
)

代码实现演示(重点)

Person为例,我们定义数据提取的结构:

from typing import List, Optional
from langchain_core.pydantic_v1 import BaseModel, Field

class Person(BaseModel):
    """Information about a person."""
    name: Optional[str] = Field(..., description="The name of the person")
    hair_color: Optional[str] = Field(..., description="The color of the person's hair if known")
    height_in_meters: Optional[str] = Field(..., description="Height in METERs")

class Data(BaseModel):
    """Extracted data about people."""
    people: List[Person]

定义引用示例:

examples = [
    (
        "The ocean is vast and blue. It's more than 20,000 feet deep. There are many fish in it.",
        Data(people=[]),
    ),
    (
        "Fiona traveled far from France to Spain.",
        Data(people=[Person(name="Fiona", height_in_meters=None, hair_color=None)]),
    ),
]

将示例转换为消息格式:

from langchain_core.messages import (
    AIMessage,
    BaseMessage,
    HumanMessage,
    ToolMessage,
)

messages = []

for text, tool_call in examples:
    messages.extend(
        tool_example_to_messages({"input": text, "tool_calls": [tool_call]})
    )

应用场景分析

使用工具调用的平台,如OpenAI、Azure、Anthropic等,都可以适用于这种引用示例策略。通过定义良好的少量示例,我们可以显著提高数据提取的质量。

实践建议

  • 在构建引用示例时,选择多样化的输入,以涵盖广泛的场景。
  • 定义清晰的目标输出,以指导模型的预测行为。
  • 定期测试和更新您的示例,以确保它们与当前需求保持一致。

结束语:如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值