LangChain Output Parser的基本使用,Json解析器使用示例
·
0 用途
语言模型返回的内容通常都是字符串的格式(文本格式),但在实际AI应用开发过程中,往往希望model可以返回更直观、更格式化的内容,以确保应用能够顺利进行后续的逻辑处理。此时便可以使用Output Parser(输出解析器)进行格式转换。
1 常用输出解析器分类
LangChain有许多不同类型的输出解析器:
| 解析器 | 用途 |
|---|---|
| StrOutputParser | 字符串解析器 |
| StrOutputParser | 字符串解析器 |
| JsonOutputParser | Json解析器 |
| XMLOutputParser | XML解析器 |
| CommaSeparatedListOutputParser | CSV解析器 |
| DatetimeOutputParser | 日期解析器 |
| EnumOutputParser | 枚举解析器 |
2 解析器的使用步骤
- 实例化大模型
- 创建解析器
- 创建提示词模板
- 提示词模板中加入解析格式的指令(通过get_format_instructions获取)
- 大模型链式调用
3 实现示例与代码
代码实现一个让大模型输出一个笑话,然后大模型输出Json格式数据的示例。
import os
import dotenv
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
dotenv.load_dotenv()
os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL")
os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY")
# 获取对话模型
chat_model = ChatOpenAI(
model="qwen-plus"
)
# 输出解析器
parser = JsonOutputParser()
# Json结构
json_format_instructions = parser.get_format_instructions()
# 提示词模板
prompt_template = PromptTemplate(
template="回答用户问题:${question}。${format_instructions}",
input_variables=["question", "format_instructions"],
partial_variables={"format_instructions": json_format_instructions}
)
# 使用链式调用
chain = prompt_template | chat_model | parser
response = chain.invoke({"question": "告诉我一个关于兔子的笑话"})
print(response)
4 输出结果
大模型通过Json解析器输出Json格式回答。
更多推荐
所有评论(0)