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

LangChain-Community的Ollama客户端调用phi3:mini模型时触发OllamaEndpointNotFoundError问题咨询

LangChain-Community的Ollama客户端调用phi3:mini模型时触发OllamaEndpointNotFoundError问题咨询

问题原因分析

你遇到的问题并非LangChain-Community的Ollama客户端仅支持特定模型,而是由以下几个核心原因导致:

  1. LangChain客户端版本兼容性bug
    旧版本的langchain-community的Ollama类对较新的模型(如Phi-3)存在模型名称解析或端点请求构造的问题,尤其是处理带标签的模型名(如phi3:mini)时。错误提示中硬编码建议拉取llama2只是通用兜底提示,和你实际使用的模型无关。

  2. Ollama原生API与OpenAI兼容API的差异
    你用curl测试的是Ollama的OpenAI兼容端点(/v1/completions),而LangChain的Ollama类默认调用的是Ollama的原生API端点(/api/generate)。这两个端点的请求/响应格式完全不同,若Ollama的原生API对phi3:mini的元数据加载存在异常,就会返回404错误。

  3. 容器环境下的缓存或网络临时异常
    你提到安装llama2后问题消失,这大概率是巧合:Ollama在拉取llama2时刷新了模型元数据缓存,或者容器网络的DNS解析临时恢复,并非llama2本身在起作用。


解决步骤

1. 升级依赖到最新版本

旧版本的客户端存在已知的模型兼容性问题,升级后通常能直接解决:

pip install --upgrade langchain-community ollama

2. 手动验证Ollama原生API的可用性

先确认Ollama的原生/api/generate端点能正常处理phi3:mini请求(在Python容器内执行):

curl -X POST http://ollama:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "phi3:mini",
    "prompt": "Test query",
    "stream": true
  }'
  • 若返回404:说明Ollama本身对phi3:mini的原生API支持有问题,尝试重新拉取模型并重启容器:
    ollama pull phi3:mini
    # 重启Ollama容器
    docker restart <your-ollama-container-name>
    
  • 若正常返回流式数据:问题确实在LangChain客户端,继续下一步。

3. 改用ChatOllama类替代Ollama类

ChatOllama是LangChain针对聊天模型优化的客户端,对新模型的支持更完善,且默认使用Ollama原生API:

from langchain_community.chat_models import ChatOllama
from langchain.schema import HumanMessage

# 初始化ChatOllama客户端
model = ChatOllama(model=model_version, base_url=LLAMA_BASE_URL)
accumulated_text = ""

# 流式调用模型
for chunk in model.stream(HumanMessage(content=input_text)):
    accumulated_text += chunk.content

4. 备选方案:强制使用OpenAI兼容端点

如果原生API始终存在问题,可以让LangChain使用你已经验证可用的OpenAI兼容端点:

from langchain_community.llms import OpenAI

# 使用OpenAI兼容API调用Ollama
model = OpenAI(
    model_name=model_version,
    base_url=f"{LLAMA_BASE_URL}/v1",
    api_key="dummy"  # Ollama兼容API不需要真实密钥,填任意值即可
)
accumulated_text = ""
for chunk in model.stream(input_text):
    accumulated_text += chunk

额外验证建议

  1. 检查容器网络连通性:在Python容器内执行ping ollama,确认能正确解析到Ollama容器的IP。
  2. 查看Ollama debug日志:启动Ollama容器时添加--debug参数,查看处理phi3:mini请求时的具体错误细节。

备注:内容来源于stack exchange,提问作者KZiovas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:24:29