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
问题原因及解决方案
核心原因
- 参数格式不兼容:
ChatOpenAI的stream方法要求传入BaseMessage对象列表(而非纯字符串),与旧版OpenAI的参数格式不同。 - 同步/异步处理冲突: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
相关产品推荐
相关产品推荐

