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

Docker部署Ollama后,Python导入llama_index的Ollama报错求助

无法从llama_index.llms导入Ollama类的问题解决

问题背景

已通过以下Docker Compose文件成功部署Ollama服务:

services:
  ollama:
    image: ollama/ollama:latest
    ports:
      - 11434:11434
    volumes:
      - ollama_data:/root/.ollama
    healthcheck:
      test: ollama list || exit 1
      interval: 10s
      timeout: 30s
      retries: 5
      start_period: 10s
  ollama-models-pull:
    image: curlimages/curl:8.6.0
    command: >-
      http://ollama:11434/api/pull -d '{"name": "mistral"}'
    depends_on:
      ollama:
        condition: service_healthy
volumes:
  ollama_data:

编写了调用Ollama的Python代码:

from llama_index.llms import Ollama, ChatMessage

llm = Ollama(model="mistral", base_url="http://127.0.0.1:11434")

messages = [
    ChatMessage(
        role="system", content="you are a multi lingual assistant used for translation and your job is to translate nothing more than that."
    ),
    ChatMessage(
        role="user", content="please translate message in triple tick to french ``` What is standard deviation?```"
    )
]
resp = llm.chat(messages=messages)
print(resp)

安装的依赖:

python3 -m venv venv
source venv/bin/activate
pip install llama-index  
pip install llama-index-llms-ollama
pip install ollama-python

运行代码时出现报错:

Traceback (most recent call last):
  File "/home/user/test.py", line 1, in <module>
    from llama_index.llms import Ollama, ChatMessage
ImportError: cannot import name 'Ollama' from 'llama_index.llms' (unknown location)

问题原因

llama-index在v0.10版本之后进行了架构拆分,将第三方LLM的集成从核心包中剥离为独立的插件包。Ollama类不再属于核心的llama_index.llms模块,而是迁移到了独立的llama-index-llms-ollama包中,因此直接从llama_index.llms导入会导致找不到类的错误。

解决方法

  1. 修改导入语句
    将代码中的导入路径替换为llama_index.llms.ollama:
from llama_index.llms.ollama import Ollama, ChatMessage

llm = Ollama(model="mistral", base_url="http://127.0.0.1:11434")

messages = [
    ChatMessage(
        role="system", content="you are a multi lingual assistant used for translation and your job is to translate nothing more than that."
    ),
    ChatMessage(
        role="user", content="please translate message in triple tick to french ``` What is standard deviation?```"
    )
]
resp = llm.chat(messages=messages)
print(resp)
  1. 确认依赖安装正确
    确保已经安装了llama-index-llms-ollama包,若不确定可以重新安装:
pip install --upgrade llama-index llama-index-llms-ollama
  1. 可选:使用Ollama官方Python库直接调用
    如果不需要llama-index的封装,也可以直接使用ollama官方库调用,简化代码:
import ollama

response = ollama.chat(
    model="mistral",
    messages=[
        {"role": "system", "content": "you are a multi lingual assistant used for translation and your job is to translate nothing more than that."},
        {"role": "user", "content": "please translate message in triple tick to french ``` What is standard deviation?```"}
    ]
)
print(response['message']['content'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:12:15