langchain开发问题,求关于.with_structured_output结构化输出的问题

如题,具体问题如下
运行如下代码,这个是langchain的结构化输出,但是在执行的过程中大部分可以完成的是输出要求的5个关键词,但是其中有些执行只输出了一个关键词,怎么来解决这个问题,使其错误率最低?用代码来写一个检查生成的列表数量吗?然后重新执行吗?还是说怎么来控制输出的准确性?

from langchain_core.pydantic_v1 import BaseModel, Field
# 定义一个类
class Alist(BaseModel):
    key_words: list=Field(description="has five keywords list")

from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o-2024-08-06")
llm_out_struct = model.with_structured_output(Alist)
llm_out_struct.invoke("generate five key words about animals")
for i in range(50):
    print(llm_out_struct.invoke("generate five key words about animals"))

在prompt里限制一下就好了吧,或者检测器,不对就重新输出

之前碰到过类似的需求,官方有个这玩意儿,感觉贼难用(v0.2 的文档结构真烂)。

直接 raise retry 吧。
话说有什么其他小而美的框架吗,不是很看好 langchain。

感谢,确实是langchain太不稳定了,现在0.2又被langgraph分出去一部分,之前选择是因为star数多,我也想问问有没有什么其他框架

v0.1 那会儿,要在 LCEL 里实现一个基于 redis 的自裁剪记忆都特别麻烦,我还去 monkey patch 他的源码。(v0.2 好像还没解决)

那个异步 chain 搞得也很恶心,非要设计几个概念。长时间不写,不顺着文档过一遍根本写不出来。

然后就是在推什么 LangSmith,一个 debug 工具非要卡名额。

反正 langchain 粉转黑了。

想问一下,你现在用的什么框架呢?langchain现在确实是太臃肿了

我也遇到过类似的问题,返回的非法json,用了retry。

最近摆烂,不写代码了哈哈哈 :rofl:

1 Like