Langchain RunnableEach 调用错误:响应不是有效的 JSON

问题描述 投票:0回答:1

我正在尝试使用 RunnableEach 向 OpenAI 发出并行请求。回答应该是“是/否”加上动机。我希望响应是 JSON 格式,我的代码如下:

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables.base import RunnableEach
from langchain_openai import ChatOpenAI

class Classification(BaseModel):
   flag: bool = Field(description="my descr",enum=[True, False])
   answer: str = Field(description="my descr")

llm = ChatOpenAI(temperature=0, model="gpt-4o-mini", api_key=model_key).with_structured_output(
            Classification)

prompt = my_prompt

tagging_chain = prompt | llm
runnable_each = RunnableEach(bound=tagging_chain)
input_list = [{"input": val} for val in mydata]
res = runnable_each.invoke(input_list)

我的输入列表中有大约 25k 个元素,也就是说必须处理 25k 个请求。直到今天为止,这一切都运行良好,但由于一个请求中的错误而失败了:

Function Classification arguments:

{"flag":false,"motivation":"The passage does not contain any information relevant to products

are not valid JSON. Received JSONDecodeError Unterminated string starting at: line 1 column 34 (char 33)

我知道对 llm 模型的调用返回了一个格式错误的字符串,当解析为 JSON 时(因为我限制了输出),会生成错误。我想知道是否可以以某种方式处理这种错误,使整个过程不会失败,而只会失败该请求。预先感谢您的帮助。

langchain large-language-model
1个回答
0
投票

我在文档中找到了以下内容

return_exceptions (bool) – Whether to return exceptions instead of raising them. Defaults to False.

所以基本上你只需将

return_exceptions
作为
True
传递给
RunnableEach
,它只会返回它,而不会破坏整个事情。

参考

© www.soinside.com 2019 - 2024. All rights reserved.