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

如何检测ConversationalRetrievalChain是否调用OpenAI LLM?流程是否正确?

关于ConversationalRetrievalChain的工作流程及调用检测问题

工作流程理解是否正确?

你的理解不正确。ConversationalRetrievalChain的实际工作流程是:

  • 首先结合对话历史(若存在)对用户问题进行重写,生成更适合检索的查询语句
  • 用重写后的查询去FAISS向量数据库检索相关文档片段
  • 将检索到的文档片段作为上下文,和用户原始问题一起传给OpenAI的大语言模型(LLM),由LLM基于上下文生成最终回答

也就是说,无论向量库能否匹配到相关内容,只要链正常运行,都会调用OpenAI的LLM。哪怕检索不到相关文档,LLM也会基于自身知识生成回答,并非只有检索失败时才调用LLM。

如何检测链是否调用了OpenAI?

可以通过以下几种方法检测:

  • 查看OpenAI API后台记录:登录OpenAI后台的「Usage」页面,能看到所有API请求的时间、模型、调用次数等信息,若有对应请求则说明链调用了OpenAI
  • 添加回调日志打印:借助LangChain的回调函数跟踪API调用情况,示例代码如下:
from langchain.callbacks import get_openai_callback

chat_history = []
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(chunks, embeddings)
qa = ConversationalRetrievalChain.from_llm(OpenAI(temperature=0.1), db.as_retriever())

with get_openai_callback() as cb:
    result = qa({"question": "What is stack overflow", "chat_history": chat_history})
    print(f"总耗时: {cb.total_time}s")
    print(f"消耗Token数: {cb.total_tokens}")
    print(f"调用成本: ${cb.total_cost}")

运行后若输出了Token消耗、调用成本等数据,说明确实调用了OpenAI API;若这些数值为0,则未调用(这种情况在ConversationalRetrievalChain中极少出现)

  • 调整LLM参数做对比测试:比如将temperature参数改为1.0,生成的回答会更随机。如果回答风格和之前有明显差异,说明是调用OpenAI生成的;若回答和向量库内容完全匹配,也可辅助判断,但准确性不如前两种方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:10:17