langchain ChatGoogle生成式AI不支持流式传输,

qaxu7uf2  于 6个月前  发布在  Go
关注(0)|答案(2)|浏览(57)

检查其他资源

  • 我为这个问题添加了一个非常描述性的标题。
  • 我在集成搜索中搜索了LangChain文档。
  • 我使用GitHub搜索找到了一个类似的问题,但没有找到。
  • 我确信这是LangChain中的一个bug,而不是我的代码。
  • 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。

示例代码

llm =  ChatGoogleGenerativeAI(model="gemini-1.5-pro", streaming=True,max_tokens=2524)

default_chain = LLMChain(
                            prompt = DEFAULT_PROMPT, 
                            llm=self.llm,
                            verbose=False
                            )

`default_chain.ainvoke({"input": rephrased_question['text']}, config={"callbacks":[callback]})`



  async def on_llm_new_token(self, token: str, **kwargs: Any) -> None:
        """Rewrite on_llm_new_token to send token to client."""
         await self.send(token)

错误信息和堆栈跟踪(如果适用)

  • 无响应*

描述

我像上面那样启动了一个langchain链,回调是一个带有on_llm_new_token的类。要调用这个链,我使用了invoke。如果我使用Anyscale llm类或VLLMOpenAI,响应会被正确地流式传输,但是在使用谷歌时并非如此。我的代码中有bug吗?也许我应该向ChatGoogleGenerativeAI传递一些其他参数,或者谷歌不支持流式传输?

系统信息

langchain 0.1.0
langchain-community 0.0.11
langchain-core 0.1.9
langchain-google-genai 1.0.1
langchainhub 0.1.15
langsmith 0.0.92

dgenwo3n

dgenwo3n1#

@dosu-bot answer this

ttisahbt

ttisahbt2#

ChatGoogleGenerativeAI 支持同步流,但不支持异步流。这意味着您可以同步流式传输响应,但尝试使用像 ainvoke 这样的异步方法进行流式传输将无法工作。
要启用同步流,您应该使用 _stream 方法而不是 ainvoke 。以下是如何设置同步流的示例:

llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro", streaming=True, max_tokens=2524)

default_chain = LLMChain(
    prompt=DEFAULT_PROMPT, 
    llm=llm,
    verbose=False
)

# Synchronous streaming example
for chunk in default_chain._stream({"input": rephrased_question['text']}, config={"callbacks": [callback]}):
    print(chunk)

如果您需要异步处理令牌,您可能需要使用支持异步流的不同的 LLM 类,例如 AnyscaleVLLMOpenAI
有关 ChatGoogleGenerativeAI 的限制的更多详细信息,您可以参考表示不支持异步流的相关代码片段:

async def _agenerate(
    self,
    messages: List[BaseMessage],
    stop: Optional[List[str]] = None,
    run_manager: Optional[AsyncCallbackManagerForLLMRun] = None,
    **kwargs: Any,
) -> ChatResult:
    if "stream" in kwargs:
        kwargs.pop("stream")
        logger.warning("ChatVertexAI does not currently support async streaming.")

此警告明确指出不支持异步流 1(https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/chat_models/vertexai.py)。

  • 要继续与 Dosu 交谈,请提及 @dosu。*

相关问题