在路上
2023-09-20
来自广东
从源码上看,OutputFixingParser和RetryWithErrorOutputParser的本质是相同的,都是当PydanticOutputParser.parse(input)解析失败,通过语言模型分析抛出的异常,修正input。 不同之处在于,OutputFixingParser利用input schema、input、exception来修正input,RetryWithErrorOutputParser除了利用input schema、input、exception,还利用一个额外的prompt来修正input,有了额外的prompt,自然就能够既修正input格式,又补全input内容。
作者回复: 总结的清晰透彻 🧑🎓
在路上
2023-09-20
来自广东
佳哥好,我发现在OutputFixingParser示例中,如果做如下修改: new_parser = OutputFixingParser.from_llm(parser=parser, llm=ChatOpenAI(temperature=0)) 或者 new_parser = OutputFixingParser.from_llm(parser=parser, llm=OpenAI(temperature=0)) 可以得到稳定的输出: name='康乃馨' colors=['粉红色', '白色', '红色', '紫色', '黄色'] 而不是: name='Rose' colors=['red', 'pink', 'white']
作者回复: 很好的尝试,谢谢分享!!