EnumOutputParser枚举输出解析器示例

from langchain.output_parsers.enum import EnumOutputParser
from enum import Enum

#定义枚举类型
class Colors(Enum):
    RED = "红色"
    BROWN = "棕色"
    BLACK = "黑色"
    WHITE = "白色"
    YELLOW = "黄色"
    
#制定输出解析器
parse = EnumOutputParser(enum=Colors)

#制定提示词模版
promptTemplate = PromptTemplate.from_template(
    """{person}的皮肤主要是什么颜色?
    
    {instructions}"""
)
#解析器的解析格式:原本解析器的英文解析格式会报错
# instructions = parse.get_format_instructions() 
instructions = "响应结果请选择以下选项之一:红色、棕色、黑色、白色和黄色。"
#提示词部分补充
prompt = promptTemplate.partial(instructions=instructions)

chain = prompt | model | parse
chain.invoke({"person":"亚洲人"})

 **注意:**直接使用输出解析器原始的英文的解析格式作用到提示词中可能由于中英文掺杂和中英文语义的区别导致模型报错,因此,可以适当将输出解析器的解析格式手动翻译成英文后再用!

# 导入LangChain的枚举输出解析器和Python的枚举类
from langchain.output_parsers.enum import EnumOutputParser
from enum import Enum

这行代码导入了两个必要的模块:LangChain 的 EnumOutputParser(用于解析模型输出为枚举类型)和 Python 标准库的 Enum(用于创建枚举类)。

# 定义枚举类型Colors,包含五种颜色
class Colors(Enum):
    RED = "红色"
    BROWN = "棕色"
    BLACK = "黑色"
    WHITE = "白色"
    YELLOW = "黄色"

这里定义了一个名为 Colors 的枚举类,包含五个成员,每个成员代表一种颜色,值为对应的中文颜色名称。

# 创建枚举输出解析器,指定使用Colors枚举类
parse = EnumOutputParser(enum=Colors)

创建了一个 EnumOutputParser 实例,用于将模型的文本输出解析为 Colors 枚举类型。

# 创建提示词模板
promptTemplate = PromptTemplate.from_template(
    """{person}的皮肤主要是什么颜色?
    
    {instructions}"""
)
使用 PromptTemplate 创建了一个提示词模板,模板包含两个变量:{person}(询问的对象)和 {instructions}(给模型的指令)。
# 手动设置指令,因为原本的英文解析格式可能会报错
# instructions = parse.get_format_instructions() 
instructions = "响应结果请选择以下选项之一:红色、棕色、黑色、白色和黄色。"

这里手动设置了给模型的指令,要求模型从指定的颜色选项中选择一个。注释部分显示原本可以使用 parse.get_format_instructions () 自动生成指令,但可能因为中英文问题而选择手动设置。

# 补充提示词模板中的instructions部分
prompt = promptTemplate.partial(instructions=instructions)

使用 partial 方法为提示词模板填充了 instructions 变量的值,生成了一个新的提示词模板。

# 创建处理链条:提示词 -> 模型 -> 解析器
chain = prompt | model | parse

创建了一个 LangChain 的处理链条,将提示词模板、模型和输出解析器连接起来。

# 调用链条,询问"亚洲人"的肤色
chain.invoke({"person":"亚洲人"})

调用链条处理具体问题,传入参数 {"person":"亚洲人"},询问亚洲人的肤色主要是什么颜色。

from enum import Enum

# Colors类继承了Enum类
class Colors(Enum):
    RED = "红色"
    GREEN = "绿色"

# 可以使用Enum类提供的功能
print(Colors.RED.name)  # 输出: RED (来自Enum类)
print(Colors.RED.value)  # 输出: 红色 (来自Enum类)

# 遍历所有成员 (来自Enum类)
for color in Colors:
    print(color)
class Colors(Enum)类的一个解释
RED
红色
Colors.RED
Colors.GREEN
 
posted @ 2025-11-05 22:33  星火撩原  阅读(7)  评论(0)    收藏  举报