使用本地LLM时,为何无OpenAI密钥无法切换LlamaIndex聊天引擎模式?
LlamaIndex切换chat_mode触发OpenAI API调用问题解决
问题根源
as_chat_engine()默认使用"simple"模式,这个模式直接复用你配置的本地LLM就能运行;但切换到"context"这类模式时,LlamaIndex默认会调用OpenAI模型处理对话上下文管理逻辑,哪怕你已经配置了本地LLM,也得明确指定让它用本地模型才行。
解决方法
1. 先确保本地LLM和嵌入模型全局配置正确
以LlamaCPP和本地嵌入模型为例,初始化代码如下(根据你的实际模型调整):
from llama_index.llms import LlamaCPP from llama_index.embeddings import LocalEmbedding from llama_index import set_global_llm, set_global_embed_model # 初始化本地LLM llm = LlamaCPP( model_path="./your-local-model.gguf", temperature=0.1, max_new_tokens=256, context_window=4096, ) # 初始化本地嵌入模型 embed_model = LocalEmbedding(model_name="BAAI/bge-small-en-v1.5") # 设置全局默认模型 set_global_llm(llm) set_global_embed_model(embed_model)
2. 创建chat_engine时显式传入本地LLM
切换chat_mode时,必须把本地LLM作为参数传入,避免触发默认的OpenAI调用:
query_engine = vector_index.as_chat_engine( chat_mode="context", llm=llm # 传入你初始化的本地LLM实例 ) response = query_engine.chat(prompt) print(response)
额外说明
像"context"、"condense_question"这类chat_mode涉及对话历史维护、问题重写等复杂逻辑,LlamaIndex默认用OpenAI模型处理这些环节,所以必须显式指定本地LLM才能完全脱离OpenAI API。
内容的提问来源于stack exchange,提问作者Seth J Steele
相关产品推荐
相关产品推荐

