Ollama and LiteLLM: how to turn a Python script into a complete console-based LLM chat
In the second part of the Ollama and LiteLLM guide, a simple Python script is turned into a console-based LLM chat. A conversation loop, a system prompt, and ba

Во второй части гайда по Python, Ollama и LiteLLM автор переходит от разового вызова модели к полноценному консольному чату. Из простого скрипта получается заготовка для локального AI-приложения: с постоянным диалогом, системной ролью и защитой от типичных сбоев.
От скрипта к чату Первый шаг здесь не в смене модели, а в смене сценария работы.
Одноразовый запрос хорош для проверки, что связка Python, Ollama и LiteLLM вообще отвечает. Но как только хочется задать уточнение, поменять формулировку или продолжить мысль, такой скрипт быстро упирается в потолок. Консольный чат решает эту проблему самым прямым способом: программа не завершается после одного ответа, а остаётся в диалоге и позволяет общаться с моделью как с обычным собеседником в терминале.
Для разработчика это важный переломный момент. Вместо «вызвал API — получил текст» появляется минимальный интерфейс приложения: вход пользователя, история сообщений, ответ модели и управляющая логика вокруг них. LiteLLM здесь удобен как единый слой обращения к моделям, а Ollama закрывает локальный запуск.
В результате даже маленький учебный проект начинает напоминать реальный продукт, который уже можно запускать, тестировать и постепенно усложнять без полной переделки основы.
Что появляется в коде
Следующий слой — это детали, которые делают чат не просто циклом input/output, а управляемой программой. В таких примерах особенно ценны не «магические» фичи, а базовые инженерные элементы: кто задаёт роль модели, где хранится контекст и что происходит, если запрос ломается. Именно из них складывается ощущение, что перед тобой не демо на пять минут, а рабочая заготовка под локального ассистента.
- Цикл общения, который принимает новые сообщения до команды выхода System prompt, задающий роль, тон и границы поведения модели Список сообщений, чтобы модель видела предыдущие реплики и держала контекст Базовая валидация ввода, чтобы не отправлять пустые запросы Обработка исключений, чтобы программа не падала после первого сбоя Каждый из этих пунктов выглядит простым, но вместе они меняют качество взаимодействия. System prompt нужен не только для «характера» бота: через него удобно закреплять правила ответа, формат, язык и ограничения. История сообщений позволяет вести связный разговор, а не повторно объяснять задачу на каждом ходе. Обработка ошибок экономит время при отладке: если локальная модель зависла, Ollama не запущен или LiteLLM вернул исключение, сессия не теряется целиком.
Первые шаги к приложению Отдельно важна мысль про первые шаги к «живому»
AI-приложению. Консольный интерфейс кажется скромным, но именно на нём проще всего проверить, как бот ведёт себя в реальном диалоге, где пользователь формулирует мысли неидеально, задаёт уточнения и постоянно меняет контекст. Здесь быстро становятся видны слабые места: слишком общий системный промпт, неудобный формат вывода, отсутствие команд для выхода или перезапуска, неочевидные ошибки при загрузке модели.
Такой каркас легко расширять дальше без лишней архитектуры. Поверх него можно добавить стриминг токенов, отдельные команды вроде /clear для сброса истории, переключение моделей, логирование диалогов или подключение инструментов. Но ценность текущего шага в другом: автор показывает, что полезный интерфейс начинается не с GUI и не с веб-приложения, а с надёжного цикла общения в терминале.
Если этот слой сделан аккуратно, дальше проще расти и в сторону продукта, и в сторону экспериментов.
Что это значит Для тех, кто собирает локальные AI-инструменты на Python, этот этап обязателен.
Связка Ollama и LiteLLM становится интересной не в момент первого успешного ответа, а тогда, когда вокруг модели появляется нормальный контур общения. Консольный чат — это минимальная форма такого контура: достаточно простая для старта и достаточно полезная, чтобы на ней строить следующий слой функциональности.