JsonOutputParser
正常情况下我们应该有如下处理逻辑:

image.png
即:
上一个模型的输出结果,应该作为提示词模版的输入,构建下一个提示词,用来二次调用模型。
模型的输出为:AIMessage类对象
提示词模板要求输入如下代码:

image.png
所以,我们需要完成:
将模型输出的AIMessage ==> 转为字典 ==> 注入第二个提示词模板中,形成新的提示词(PromptValue对象)
StrOutputParser 不满足 (AIMessage ==> Str)
更换 JsonOutputParser (AIMessage ==> Dict(JSON))
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
JsonOutputParser 和多模型执行链示例
该脚本演示了如何使用 LangChain 的链式调用功能,结合 JsonOutputParser 和 StrOutputParser,
实现先生成名字(返回 JSON 格式),再解析名字含义的完整流程。
"""
# 导入必要的模块
from langchain_core.output_parsers import JsonOutputParser, StrOutputParser # 导入输出解析器
from langchain_core.prompts import PromptTemplate # 导入提示模板
from langchain_community.chat_models.tongyi import ChatTongyi # 导入通义千问模型
# 初始化输出解析器
str_parser = StrOutputParser() # 字符串输出解析器,用于解析最终的文本结果
json_parser = JsonOutputParser() # JSON输出解析器,用于解析中间的JSON格式结果
# 初始化模型
model = ChatTongyi(model="qwen3-max") # 使用通义千问的 qwen3-max 模型
# 第一个提示模板:生成名字并返回 JSON 格式
first_prompt = PromptTemplate.from_template(
"我的邻居姓{lastname},刚生了{gender},请起名,并封装到JSON格式返回给我"
"要求key是name, value就是起的名字,请严格遵守格式要求"
)
# 第二个提示模板:解析名字的含义
second_prompt = PromptTemplate.from_template(
"姓名{name},请帮我解析含义"
)
# 构建链式调用
# 流程:第一个提示模板 -> 模型生成 -> JSON解析 -> 第二个提示模板 -> 模型生成 -> 字符串解析
chain = first_prompt | model | json_parser | second_prompt | model | str_parser
# 执行链式调用,传入参数
res: str = chain.invoke({"lastname": "张", "gender": "女儿"})
# 打印结果
print(res) # 打印解析后的名字含义
print(type(res)) # 打印结果类型
“张若溪”是一个富有诗意和文化内涵的中文名字,我们可以从姓氏、名字的字义、音韵以及整体意境几个方面来解析其含义:
一、姓氏:张
“张”是中国常见大姓之一,源于姬姓,历史悠久。在古汉语中,“张”有“展开、张开、扩张”之意,象征着开放、进取、包容与发展的精 神。
二、名字解析:
1. 若(ruò)
- 字义:“若”在古汉语中常作“如同、好像”解,如“若水”“若兰”,具有柔美、婉约、含蓄的意味。
- 在人名中,“若”常用于表达温婉、文雅、清秀的气质,也带有谦逊、柔和的意象。
- 此外,“若”在道家哲学中也有“虚静”“自然”的意味,如《道德经》中“上善若水”。
2. 溪(xī)
- 字义:“溪”指山间的小河或水流,清澈、灵动、宁静,常出现在山水诗画中,象征纯净、自然、悠远。
- 在名字中,“溪”给人以清新脱俗、恬淡宁静之感,也寓意生命如溪水般绵延不绝、柔韧而有力量。
三、整体意境:
“若溪”合起来可理解为“如溪水一般”——形容一个人性情温润、心灵澄澈、举止优雅,如山间清溪般宁静致远、柔中带刚。整个名字营造 出一种古典诗意的美感,既有自然之趣,又具人文之雅。
四、音韵美感:
“张若溪”(Zhāng Ruò Xī)读音平仄相间(平-仄-平),声调起伏有致,朗朗上口,尾音轻柔,给人以温柔、清雅之感。
五、文化联想:
- 可联想到“上善若水,水善利万物而不争”(《道德经》),体现道家崇尚自然、柔德载物的思想。
- 亦让人想起“明月松间照,清泉石上流”(王维诗句)般的山水意境,充满文人雅士的审美情趣。
总结:
“张若溪”是一个兼具音韵美、意境美与文化深度的名字,寓意温婉如水、心性澄明、品行高洁,既有传统韵味,又不失现代清新之感, 非常适合追求内在修养与自然和谐的人格理想。
在构建链的时候要注意整体兼容性,注意前后组件的输入和输出要求。
- 模型输入:PromptValue或字符串或序列 (BaseMessage、list、tuple、str、dict)。
- 模型输出:AIMessage
- 提示词模板输入:要求是字典
- 提示词模板输出:PromptValue对象
- StrOutputParser:AIMessage输入、str输出
- JsonOutputParser:AIMessage输入、dict输出

image.png