You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain+Flask项目中OpenAI替换为ChatOpenAI的报错解决求助

Markdown格式用法示例

1. 标题

一级标题

二级标题

三级标题

2. 列表项

  • 基础列表项1
  • 基础列表项2
    • 嵌套列表子项1
    • 嵌套列表子项2

3. 文本强调

这是斜体强调的内容,这是粗体强调的内容。

4. 代码/命令

安装依赖命令:pip install langchain openai flask
Python代码块示例:

from langchain.chat_models import ChatOpenAI
from flask import Flask, Response

5. 引用文本

控制台错误日志示例:TypeError: 'AsyncGenerator' object is not callable

6. 链接

项目本地说明文档

7. 图片

流式响应页面展示效果


LangChain替换OpenAI为ChatOpenAI失败问题排查

问题背景

基于LangChain和Flask实现的流式响应项目,原使用已弃用的OpenAI类可正常将OpenAI流式响应传输至前端页面,替换为ChatOpenAI类后出现报错。

原可运行弃用版本代码

from langchain.llms import OpenAI
from flask import Flask, Response

app = Flask(__name__)

def generate_stream():
    llm = OpenAI(streaming=True, temperature=0)
    for chunk in llm.stream("Hello, world!"):
        yield f"data: {chunk}\n\n"

@app.route('/stream')
def stream():
    return Response(generate_stream(), mimetype='text/event-stream')

报错的ChatOpenAI版本代码

from langchain.chat_models import ChatOpenAI
from flask import Flask, Response

app = Flask(__name__)

def generate_stream():
    chat = ChatOpenAI(streaming=True, temperature=0)
    for chunk in chat.stream("Hello, world!"):
        yield f"data: {chunk.content}\n\n"

@app.route('/stream')
def stream():
    return Response(generate_stream(), mimetype='text/event-stream')

控制台错误日志

TypeError: 'AsyncGenerator' object is not callable

问题原因及解决方案

核心原因

  1. 参数格式不兼容:ChatOpenAI的stream方法要求传入BaseMessage对象列表(而非纯字符串),与旧版OpenAI的参数格式不同。
  2. 同步/异步处理冲突:Flask默认是同步运行环境,若未正确处理ChatOpenAI的异步生成器逻辑会触发类型错误。

修正后的代码

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
from flask import Flask, Response

app = Flask(__name__)

def generate_stream():
    chat = ChatOpenAI(streaming=True, temperature=0)
    # 传入符合要求的消息格式
    stream_iter = chat.stream([HumanMessage(content="Hello, world!")])
    for chunk in stream_iter:
        yield f"data: {chunk.content}\n\n"

@app.route('/stream')
def stream():
    return Response(generate_stream(), mimetype='text/event-stream')

额外注意事项

  • 确保LangChain版本为最新兼容版,避免版本差异导致的API变更。
  • 前端JavaScript监听SSE时,需正确解析chunk.content字段(ChatOpenAI返回的是AIMessageChunk对象,而非纯文本)。

内容的提问来源于stack exchange,提问作者0daycode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:32:49