CommaSeparatedListOutputParser列表输出解析器示例

from langchain_openai import ChatOpenAI
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
#构造列表解析器
output_parser = CommaSeparatedListOutputParser()
#返回解析器的解析格式
output_parser.get_format_instructions()
#构造输入模版,这里的区别是:在输入的Prompt Template中,加入了OutPut Parse的内容
template = """用户发起的提问:

{question}

{format_instructions}"""

#实例化输出解析器(用于解析以逗号分隔的列表类型的输出)
output_parser = CommaSeparatedListOutputParser()

#创建提示词模版,将输出解析器的解析格式作为提示词模版的部分内容
prompt = PromptTemplate.from_template(
    template,
    partial_variables={"format_instructions":
                       output_parser.get_format_instructions()},
)


#最后,使用LangChain中的`chain`的抽象,合并最终的提示、大模型实例及OutPut Parse共同执行。
API_KEY = "xxxxxxx"

model = ChatOpenAI(model="deepseek-chat",
                   openai_api_key=API_KEY,
                   openai_api_base="https://api.deepseek.com")

chain = prompt | model | output_parser
output = chain.invoke({"question": "列出北京的三个景点"})
output

一、代码解释

1、导入核心依赖

from langchain_openai import ChatOpenAI
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate

2、定义解析器

#构造列表解析器
output_parser = CommaSeparatedListOutputParser()

#返回解析器的解析格式
output_parser.get_format_instructions()

3、定义提示词模板(含输出解析格式)

# 基础模板:包含用户问题占位符和输出格式说明占位符 
template = """用户发起的提问: 
 
{{question}} 
 
{{format_instructions}}""" 

# 创建提示词模板,注入输出解析器的格式说明 
prompt = PromptTemplate.from_template(  
    template, 
    partial_variables={ 
        "format_instructions": output_parser.get_format_instructions()   # 自动生成格式要求 
    }, 
) 

 

posted @ 2025-11-05 21:44  星火撩原  阅读(4)  评论(0)    收藏  举报