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

LLM聊天机器人开发报错ValueError:无法在无callback_manager实例上使用llm_chat_callback

问题修复:解决Cannot use llm_chat_callback on an instance without a callback_manager attribute错误

错误根源

你的LLM实例(self.model)在创建时没有绑定callback_manager属性,但后续构建ServiceContext时传入了callback_manager,框架检查回调逻辑时发现LLM对象缺少必要属性,触发ValueError。

修复步骤

1. 初始化回调管理器并绑定到LLM实例

创建OpenAI LLM对象时,必须显式传入已初始化的callback_manager:

from llama_index.llms import OpenAI
from llama_index.core.callbacks import CallbackManager, LlamaDebugHandler

# 初始化回调管理器(示例用LlamaDebugHandler,可按需替换)
debug_handler = LlamaDebugHandler()
callback_manager = CallbackManager([debug_handler])

# 创建LLM实例时绑定回调管理器
self.model = OpenAI(
    model="gpt-3.5-turbo",  # 或gpt-4
    api_key=你的API_KEY,
    callback_manager=callback_manager
)

2. 统一回调管理器到嵌入模型(可选但推荐)

修改get_embeddingmodel方法,支持传入callback_manager,确保嵌入模型也能共享回调逻辑:

model_key = {"OpenAI": ["gpt-3.5-turbo","gpt-4"]}

def get_embeddingmodel(self, model_name, api_key, callback_manager=None):
    if model_name in model_key["OpenAI"]:
        return OpenAIEmbedding(api_key=api_key, callback_manager=callback_manager)

创建嵌入模型时传入同一个callback_manager:

self.embeding_model = self.get_embeddingmodel(model_name, api_key, callback_manager=callback_manager)

3. 构建ServiceContext

此时self.model已绑定callback_manager,构建ServiceContext时可保持原代码,或省略重复传入(框架会自动从LLM实例继承):

service_context = ServiceContext.from_defaults(
    llm=self.model,
    embed_model=self.embeding_model,
    callback_manager=callback_manager  # 可选,因LLM已绑定该属性
)
index = VectorStoreIndex.from_documents(doc, service_context=service_context)

核心要点

所有涉及回调的组件(LLM、嵌入模型、ServiceContext)必须共享同一个callback_manager实例,且LLM实例在创建时必须显式传入该属性,否则会触发回调检查失败的错误。

内容的提问来源于stack exchange,提问作者Megha Santhosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:13:26