LangChain输出解析器Output Parser用法

大语言模型输出的一般是文本格式,但是很多时候,我们可能需要大模型按照我们要求的格式进行格式化输出,比如输出XML、JSON、逗号分隔符的列表等,OutputParser可以帮助我们获取结构化的信息。

逗号分隔符的列表输出解析器(CommaSeparatedListOutputParser)

from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain_core.prompts import PromptTemplate
from langchain_community.llms import Tongyi

output_parser = CommaSeparatedListOutputParser()
format_instructions = output_parser.get_format_instructions()

prompt = PromptTemplate(
    template = "请列除5个{subject}.\n{format_instructions}",
    input_variables = ["subject"],
    partial_variables={"format_instructions": format_instructions},
)

llm = Tongyi()
input = prompt.format(subject="世界名曲")
output = llm.invoke(input)
output_p = output_parser.parse(output)

print(output_p)

日期时间输出解析器

from langchain.output_parsers import DatetimeOutputParser
from langchain.chains import LLMChain
from langchain_core.prompts import PromptTemplate
from langchain_community.llms import Tongyi

# 创建一个日期时间输出解析器
output_parser = DatetimeOutputParser()
template = """
    Answer the users question:
    {question}
    {format_instructions}
"""
prompt = PromptTemplate.from_template(template,partial_variables={"format_instructions":output_parser.get_format_instructions()})

# 初始化大模型
llm = Tongyi()

# 创建一个LLMChain链
chain = LLMChain(prompt=prompt,llm =llm)
res = chain.invoke("辛亥革命是哪一年?")

# 最后还要调用parse方法对日期进行格式化输出
res_parser = output_parser.parse(res["text"])
print(res_parser)

结构化输出解析器

from langchain.output_parsers import StructuredOutputParser, ResponseSchema
from langchain_community.llms import Tongyi
from langchain_core.prompts import PromptTemplate
from langchain.chains import LLMChain

response_schemas = [
    ResponseSchema(name="name", description="学生的姓名"),
    ResponseSchema(name="age", description="学生的年龄")
]

output_parser = StructuredOutputParser.from_response_schemas(response_schemas)
format_instructions = output_parser.get_format_instructions()
prompt = PromptTemplate(
    template="回答下面问题,注意,请不要在回复中附带其他内容,只需要返回结构化的信息。\n{format_instructions}\n{question}",
    input_variables=["question"],
    partial_variables={"format_instructions": format_instructions},
)

# 创建大模型
llm = Tongyi()
chain = LLMChain(prompt=prompt,llm =llm)
output = chain.invoke({"question":"请给我一个非常大众的中国女孩的名字?"})

print(output_parser.parse(output["text"]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值