在当今AI驱动的世界中,能够获得结构化的输出是利用大型语言模型(LLM)的关键。尽管一些模型提供商支持内置方式来返回结构化输出,但并不是所有的模型都有这种能力。因此,使用输出解析器(Output Parser)来帮助用户通过提示指定任意JSON模式,并查询符合该模式的模型输出,最后将该模式解析为JSON,是一种常见而有效的方法。
技术背景介绍
输出解析器是使语言模型生成结构化数据的工具。这在许多应用场景中都是关键,例如自动生成报告,填充表格数据,或者在软件应用中使用模型输出等。在本指南中,我们将探讨如何使用JsonOutputParser来解析JSON输出。
核心原理解析
JsonOutputParser是一个内置的工具,用于提示并解析JSON输出。它不仅与PydanticOutputParser功能相似,还支持部分JSON对象的流式传输。这使得它在实时应用中非常有用。通过定义期待的JSON模式,您可以轻松从模型中获取结构化的响应。
代码实现演示
以下是如何使用JsonOutputParser与Pydantic共同声明预期模式的实际示例:
%pip install -qU langchain langchain-openai
import os
from getpass import getpass
# 配置API密钥
os.environ["OPENAI_API_KEY"] = getpass()
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI
# 配置ChatOpenAI模型
model = ChatOpenAI(temperature=0)
# 定义期望的数据结构
class Joke(BaseModel):
setup: str = Field(description="joke的开场问题")
punchline: str = Field(description="joke的答案")
# 设置提问
joke_query = "Tell me a joke."
# 配置JsonOutputParser
parser = JsonOutputParser(pydantic_object=Joke)
# 创建PromptTemplate
prompt = PromptTemplate(
template="Answer the user query.\n{format_instructions}\n{query}\n",
input_variables=["query"],
partial_variables={"format_instructions": parser.get_format_instructions()},
)
# 运行链条
chain = prompt | model | parser
# 调用链条
response = chain.invoke({"query": joke_query})
print(response)
应用场景分析
上述技术可应用于多种场景,包括但不限于:
- 自动生成问答对数据集。
- 创建符合特定格式的报告。
- 数据填充与格式验证。
实践建议
- 始终注意提示设计,以确保模型输出符合预期的JSON格式。
- 考虑使用流式输出在需要时实时处理数据。
- 结合您特定的应用需求,调节模型的
temperature、max_tokens等参数,以优化生成效果。
结束语:如果遇到问题欢迎在评论区交流。
—END—
1662

被折叠的 条评论
为什么被折叠?



