Ошибка ImportError: невозможно импортировать имя «Ollama» из «llama_index.llms» (неизвестное местоположение) — установка зависимостей не решает проблему

Я хочу изучать LLM. Я запускаю Ollama со следующим файлом Docker Compose — он работает:

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:

Я хотел бы написать приложение на Python, которое будет использовать ollama, и нашел этот фрагмент кода:

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)

где может быть проблема?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
111
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы пропали после месячных. Должно быть:

from llama_index.legacy.llms.ollama import Ollama

Вместо

from llama_index.llms import Ollama, ChatMessage

Это действительно сработало, спасибо! Но значит ли это, что я использую старую библиотеку? Как изменить его, чтобы использовать новейшие классы?

mazix 26.06.2024 07:41
Ответ принят как подходящий

Правильный способ импорта Ollama должен быть следующим:

from llama_index.llms.ollama import Ollama

См. пример здесь

Для ChatMessage это должно быть:

from llama_index.core.llms import ChatMessage

См. пример здесь

Другие вопросы по теме