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() # 自动生成格式要求 }, )

浙公网安备 33010602011771号