• 在路上
    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']

    作者回复: 很好的尝试,谢谢分享!!

    
    