0 用途

语言模型返回的内容通常都是字符串的格式(文本格式),但在实际AI应用开发过程中,往往希望model可以返回更直观、更格式化的内容,以确保应用能够顺利进行后续的逻辑处理。此时便可以使用Output Parser(输出解析器)进行格式转换。

1 常用输出解析器分类

LangChain有许多不同类型的输出解析器:

解析器 用途
StrOutputParser 字符串解析器
StrOutputParser 字符串解析器
JsonOutputParser Json解析器
XMLOutputParser XML解析器
CommaSeparatedListOutputParser CSV解析器
DatetimeOutputParser 日期解析器
EnumOutputParser 枚举解析器

2 解析器的使用步骤

  1. 实例化大模型
  2. 创建解析器
  3. 创建提示词模板
  4. 提示词模板中加入解析格式的指令(通过get_format_instructions获取)
  5. 大模型链式调用

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格式回答。
请添加图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐