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导入会导致找不到类的错误。
解决方法
- 修改导入语句
将代码中的导入路径替换为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)
- 确认依赖安装正确
确保已经安装了llama-index-llms-ollama包,若不确定可以重新安装:
pip install --upgrade llama-index llama-index-llms-ollama
- 可选:使用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
相关产品推荐
相关产品推荐

