Во многих туториалах по LLM всё начинается с API-ключей, платных токенов и облачных сервисов. Это рабочий путь, но для первого знакомства он не самый удобный: нВо многих туториалах по LLM всё начинается с API-ключей, платных токенов и облачных сервисов. Это рабочий путь, но для первого знакомства он не самый удобный: н

Маленький LLM-чат на Python с Ollama и LiteLLM. Часть 1: ставим окружение и пишем первый запрос

2026/03/19 14:29
7м. чтение
Для обратной связи или замечаний по поводу данного контента, свяжитесь с нами по адресу [email protected]

Во многих туториалах по LLM всё начинается с API-ключей, платных токенов и облачных сервисов. Это рабочий путь, но для первого знакомства он не самый удобный: нужно регистрироваться, разбираться с биллингом и постоянно помнить, что каждый эксперимент что-то стоит.

Здесь пойдём проще. В этой серии мы соберём маленький LLM-чат на Python, который сначала будет работать локально: модель запускается через Ollama, а Python-код общается с ней через LiteLLM.

Это хороший стартовый маршрут по трём причинам:

  • не нужны API-ключи;

  • не нужен интернет для каждого запроса;

  • вы сразу видите, как LLM становится частью обычной Python-программы.

В первой части мы не будем строить полноценный чат. Наша задача скромнее и важнее: поднять локальную модель, подключить её к Python и получить первый осмысленный ответ из своего кода.


Серия статей

  • Часть 1. Ставим окружение и пишем первый запрос ← вы здесь

  • Часть 2. Делаем маленький консольный чат

  • Часть 3. Добавляем историю сообщений и контекст

  • Часть 4. Разбираем структуру ответа и метаданные

  • Часть 5. Ошибки и таймауты: делаем код устойчивее

  • Часть 6. Что дальше: локальные и облачные модели, развитие проекта


Что сделаем в этой части

В этой статье мы:

  • установим Ollama;

  • скачаем локальную модель;

  • проверим, что она отвечает прямо в терминале;

  • создадим чистое Python-окружение;

  • установим LiteLLM;

  • напишем первый main.py, который отправляет запрос локальной модели.


Почему для старта удобно идти локально

Когда модель работает у вас на компьютере, путь данных становится очень прозрачным:

ваш Python-код → LiteLLM → Ollama → локальная модель → ответ

Это не "магия AI", а обычный программный поток.
Ваш скрипт формирует запрос, LiteLLM отправляет его в Ollama, Ollama передаёт его модели, а потом ответ возвращается обратно в код.

Для обучения это почти идеальный вариант. Вы не отвлекаетесь на инфраструктуру и сразу видите базовую механику интеграции.


Где здесь Ollama, а где LiteLLM

На старте эти инструменты легко перепутать, поэтому сразу разделим роли.

Ollama — это инструмент, который запускает локальные модели и даёт к ним удобный доступ.

LiteLLM — это Python-библиотека, которая позволяет вызывать модель через единый интерфейс. Сегодня мы идём в локальную модель через Ollama, а позже ту же общую логику можно будет перенести и на облачные провайдеры с минимальными изменениями.

То есть роли такие:

  • Ollama поднимает локальную модель;

  • LiteLLM помогает обратиться к ней из Python;

  • наш код собирает вокруг этого приложение.


Шаг 1. Устанавливаем Ollama

Перейдите на сайт Ollama и скачайте установщик под свою систему.

  • Windows — установщик .exe

  • macOS.dmg

  • Linux — команда установки с сайта

После установки проверьте, что всё прошло нормально:

ollama --version

Если в ответ вы видите номер версии, значит Ollama установлена.

На Windows после запуска Ollama обычно появляется значок 🦙 в системном трее. Это хороший признак: программа работает в фоне и готова принимать запросы.


Шаг 2. Скачиваем первую модель

Сама Ollama — это ещё не модель, а оболочка для работы с моделями. Теперь нужно скачать конкретную LLM.

Для этой серии возьмём:

ollama run qwen2.5:3b

Почему именно qwen2.5:3b:

  • это сравнительно компактная модель;

  • она обычно неплохо работает на обычных ноутбуках;

  • у неё хороший компромисс между качеством, размером и удобством старта;

  • она нормально справляется с русским языком.

При первом запуске начнётся загрузка модели. Это разовая операция: модель скачается на диск и потом будет запускаться локально.

Когда загрузка завершится, у вас откроется простой интерфейс прямо в терминале. Напишите что-нибудь по-русски, например:

Привет! Расскажи в двух предложениях, что такое Python.

Если модель отвечает — отлично. Значит, самый важный технический барьер уже пройден: локальная LLM у вас работает.

Чтобы выйти из режима чата Ollama, используйте:

/bye

Если компьютер слабый

Если у вас немного оперативной памяти или модель работает слишком тяжело, попробуйте более лёгкий вариант:

ollama run qwen2.5:1.5b

Логика Python-кода дальше останется такой же. Поменяется только имя модели.


Шаг 3. Готовим Python-окружение

Теперь подключим Python к уже работающей локальной модели.

Создайте папку проекта и перейдите в неё:

mkdir llm-chat cd llm-chat

Создайте виртуальное окружение:

python -m venv venv

Активируйте его.

Windows:

venv\Scripts\activate

macOS / Linux:

source venv/bin/activate

Если всё прошло нормально, в начале строки терминала появится префикс (venv).

Теперь установим LiteLLM:

pip install litellm

На этом этапе у нас уже есть всё необходимое:

  • локальная модель через Ollama;

  • Python-проект;

  • отдельное окружение;

  • библиотека для вызова модели из кода.


Шаг 4. Пишем первый main.py

Создайте файл main.py и вставьте в него код:

from litellm import completion MODEL = "ollama_chat/qwen2.5:3b" API_BASE = "http://localhost:11434" def ask(question: str) -> str: response = completion( model=MODEL, messages=[ {"role": "user", "content": question} ], api_base=API_BASE, request_timeout=120, ) return response.choices[0].message.content answer = ask("Привет! Напиши одно короткое предложение о Python.") print(answer)

Теперь запустите:

python main.py

Если в консоли появился осмысленный ответ на русском языке — всё работает как надо.

И это уже важный момент: теперь модель живёт не отдельно в терминале Ollama, а встроена в ваш Python-код.


Разберём код

Здесь нет ничего лишнего — только минимальное ядро будущего приложения.

from litellm import completion

Импортируем функцию, которая делает вызов модели.

MODEL = "ollama_chat/qwen2.5:3b"

Здесь мы указываем, какую модель хотим использовать.
Префикс ollama_chat/ подсказывает LiteLLM, что запрос нужно отправить именно в Ollama.

Если вы скачали другую модель, строка может выглядеть, например, так:

MODEL = "ollama_chat/qwen2.5:1.5b"

API_BASE = "http://localhost:11434"

Это локальный адрес, по которому Ollama принимает запросы.
По умолчанию Ollama работает именно на этом порту.

messages=[{"role": "user", "content": question}]

Это уже очень важная часть.

Большинство современных LLM API работают не с одной строкой текста, а со списком сообщений. Даже если у нас пока только один вопрос, он всё равно передаётся в виде структуры с ролями.

Сейчас в этом списке всего одно сообщение:

  • role="user" — это вопрос пользователя;

  • content=question — сам текст вопроса.

Позже именно этот список превратится в историю диалога.
То есть уже в первой статье мы закладываем фундамент будущего чата.

response.choices[0].message.content

Из полного объекта ответа мы достаём только текст, который сгенерировала модель.

Пока нам этого достаточно. В следующих частях мы разберём, что ещё приходит в ответе, кроме самого текста.


Что у нас получилось

На этом этапе у нас уже есть:

  • установленная Ollama;

  • скачанная локальная модель;

  • рабочее Python-окружение;

  • установленный LiteLLM;

  • первый скрипт, который отправляет запрос локальной модели и получает ответ.

То есть теперь локальная LLM — это не абстрактная технология "где-то там", а компонент вашей программы, к которому можно обращаться из Python.

Это и есть главное достижение первой части.


Частые проблемы на этом этапе

Проблема 1. Connection refused или Failed to connect

Почему возникает: Ollama не запущена.

Что проверить: убедитесь, что Ollama действительно работает. На Windows проверьте значок 🦙 в трее. Также можно выполнить:

ollama list

Если команда отвечает, значит сервис доступен.


Проблема 2. Model not found

Почему возникает: модель не скачана или её имя в коде не совпадает с установленной.

Что сделать: посмотрите список моделей:

ollama list

И затем убедитесь, что в коде указано точное имя модели.


Проблема 3. Ответ генерируется слишком долго

Почему возникает: первый запуск часто самый медленный, потому что модель загружается в память. Либо модель тяжеловата для вашего компьютера.

Что сделать: сначала просто подождите дольше, закройте тяжёлые программы, попробуйте модель полегче — например qwen2.5:1.5b.


Проблема 4. ModuleNotFoundError: No module named 'litellm'

Почему возникает: вы запускаете скрипт не из того окружения, где установлен пакет.

Что проверить: перед запуском убедитесь, что окружение активировано и в терминале есть (venv).


Проблема 5. В PowerShell отображаются "кракозябры"

Иногда это связано с кодировкой терминала. Попробуйте выполнить:

$OutputEncoding = [System.Text.Encoding]::UTF8

А затем снова запустить скрипт.


Вывод

В этой части мы сделали самый важный первый шаг: связали локальную модель и Python-код.

Пока это ещё не чат. Наш скрипт просто отправляет один вопрос и получает один ответ. Но это уже не игрушка и не теория: у нас есть рабочее ядро будущего приложения.

Именно с этого момента LLM перестаёт быть "чем-то из чужих демо" и становится частью вашей программы.


Что дальше

Сейчас у нас есть один запрос и один ответ. Это хороший старт, но полноценного общения ещё нет.

В следующей части превратим этот минимальный пример в маленький консольный чат:

  • добавим цикл общения;

  • будем принимать вопросы от пользователя в реальном времени;

  • введём команду выхода;

  • подготовим основу для дальнейшего добавления памяти и контекста.


Продолжение

Это первая часть практического цикла по созданию небольшого LLM-приложения на Python.
Ждем часть 2

Источник

Возможности рынка
Логотип Ucan fix life in1day
Ucan fix life in1day Курс (1)
$0.0003064
$0.0003064$0.0003064
+2.61%
USD
График цены Ucan fix life in1day (1) в реальном времени
Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

В Galaxy Digital назвали преувеличенной угрозу взлома биткоина квантовыми компьютерами

В Galaxy Digital назвали преувеличенной угрозу взлома биткоина квантовыми компьютерами

Опасения касательно взлома сети первой криптовалюты квантовыми компьютерами сильно преувеличены. Об этом в интервью CoinDesk заявил руководитель исследовательс
Поделиться
Forklog2026/03/19 20:06
В РФ начнут готовить управленцев в сфере криптотехнологий

В РФ начнут готовить управленцев в сфере криптотехнологий

В эпоху цифровой трансформации выпускники Московского государственного института международных отношений будут создавать и внедрять прогрессивные решения. Учебн
Поделиться
Altcoinlog2026/03/19 20:04
Нэнси Мейс запускает независимую миссию на Ближнем Востоке — и Белый дом в ярости

Нэнси Мейс запускает независимую миссию на Ближнем Востоке — и Белый дом в ярости

Конгрессмен Нэнси Мэйс (республиканец, Южная Каролина) в очередной раз бросает вызов администрации Трампа, на этот раз организуя собственную независимую спасательную операцию для застрявших американцев
Поделиться
Rawstory2026/03/19 20:30