Ollama и Python: как собрать локального ИИ-агента без облака и API-ключей. Пошагово
Содержание
- Что получится в итоге
- Из чего состоит агент
- Что понадобится
- Если вы работаете из России
- Ограничения и риски перед стартом
- Шаг 1. Устанавливаем Ollama
- Шаг 2. Выбираем модель под свою память
- Шаг 3. Скачиваем модель и проверяем
- Шаг 4. Проверяем скорость модели
- Шаг 5. Создаём проект и ставим библиотеку Pydantic
- Шаг 6. Подключаем модель
- Шаг 7. Пишем инструменты
- Шаг 8. Собираем агента
- Шаг 9. Пишем главный цикл
- Шаг 10. Запускаем и проверяем
- Что делать дальше
Чтобы попробовать ИИ-агента, обычно нужны подписка, ключ доступа к облачной модели и готовность отправлять свои данные на чужой сервер. Для компании это сразу три вопроса: сколько стоит, кто увидит документы и что будет, если сервис станет недоступен.
Есть другой путь: агент, который целиком работает на вашем компьютере. Модель стоит рядом, ключи не нужны. Для этого хватает бесплатной программы Ollama и небольшого скрипта на Python. Это хороший способ понять, из чего вообще состоит агент, прежде чем покупать готовые платформы. Разбираем по шагам.
Что получится в итоге
Консольный помощник, с которым можно разговаривать в терминале. Он помнит ход беседы и умеет пользоваться инструментами: узнавать текущее время, считать выражения, сохранять заметки в файл и читать их обратно. Всё это работает на локальной модели, а ответы приходят за секунды.
Инструменты здесь самое важное. Обычная модель только отвечает текстом. Агент отличается тем, что может вызвать функцию и сделать что-то в реальном мире. В примере функции простые, но по тому же принципу можно подключить поиск по файлам, чтение таблиц или отправку писем.
Из чего состоит агент
- Модель. Языковая модель, которая понимает запрос и решает, что делать. Здесь она локальная.
- Инструменты. Обычные функции на Python. Модель может их вызывать.
- Инструкция. Короткий текст, который задаёт роль и манеру ответов.
- Цикл общения. Код, который принимает ваш запрос, передаёт его агенту вместе с историей беседы и печатает ответ.
Модель запускает Ollama. Агента из модели, инструментов и инструкции собирает библиотека Pydantic. Но подход не привязан к ней: по тому же плану можно собрать агента на другом фреймворке.
Что понадобится
- Компьютер с Python. В примере стоит Python 3.13, редактор VS Code, но подойдёт любой редактор.
- Ollama. Бесплатная программа, которая скачивает модели и запускает их на вашей машине.
- Свободная память. Модель должна поместиться в память видеокарты (VRAM). На Mac и других устройствах с общей памятью смотрите на объём оперативной памяти. В примере видеокарта с 24 ГБ VRAM, но маленькие модели пойдут и на обычных современных компьютерах.
- Библиотека Pydantic. Ставится одной командой, о ней ниже.
Если вы работаете из России
Здесь ограничений меньше, чем у облачных агентов. Ollama работает на вашем компьютере, модель запускается локально, а ключи не нужны. Облачные модели, которые недоступны из России напрямую, для этой схемы не требуются.
В примере используются открытые модели Qwen. Если каталог моделей Ollama у вас не открывается, смотрите в документации Ollama, как подключить модель из файла. Если нужна замена Qwen, ищите другие открытые модели или российские модели с открытыми весами в формате для Ollama. Главное условие: модель должна уметь вызывать инструменты. В каталоге Ollama у таких моделей есть пометка tools, как на странице Qwen 3.
Ограничения и риски перед стартом
- Модель должна влезть в память. Если взять слишком большую, ответы будут очень медленными или модель не запустится. Начните с маленькой.
- Маленькая модель слабее облачной. Она может путаться в сложных запросах и хуже следовать инструкциям. Для первого знакомства это нормально, для рабочих задач берите модель побольше.
- Агент действует на вашем компьютере. Он пишет в файл и вызывает функции, которые вы ему дали. В примере калькулятор считает выражение функцией
eval, но сначала проверяет, что в строке только цифры и знаки арифметики. Любой новый инструмент давайте агенту осознанно: подумайте, что случится, если модель вызовет его неудачно. - Первая загрузка требует времени и места. В примере модель на 3,4 ГБ скачивалась со скоростью около 11 МБ/с, программа обещала почти пять минут.
Шаг 1. Устанавливаем Ollama
Скачайте Ollama с официального сайта и установите. Затем откройте терминал или командную строку и введите:
ollama
Если программа вывела список команд, установка прошла успешно и можно ставить модель.
Шаг 2. Выбираем модель под свою память
Ollama это не модель, а инструмент, который скачивает и запускает разные модели. Какую брать, зависит от вашего железа. Правило простое: выбирайте модель, которая поместится в VRAM или в оперативную память. Можно взять самую сильную из подходящих, а можно маленькую и быструю, чтобы просто повторить пример.
Для примера подойдут малые модели семейства Qwen 3.5 или Qwen 3. На странице каталога у каждой указан размер, и его нужно сравнить со своей памятью. В каталоге Qwen 3.5 есть такие варианты:
- 0.8b. 1 ГБ.
- 2b. 2,7 ГБ.
- 4b. 3,4 ГБ.
- 9b. 6,6 ГБ.
У Qwen 3 малые размеры: 0.6b, 1.7b и 4b. Если нужна рекомендация для старта, это Qwen 3.5 на 4 миллиарда параметров. Позже модель можно поменять.

Шаг 3. Скачиваем модель и проверяем
Команда ollama pull скачивает модель. После неё пишется название из каталога:
ollama pull qwen3.5:4b
В терминале появится полоса загрузки с объёмом, скоростью и оценкой времени.

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

Шаг 4. Проверяем скорость модели
Прежде чем писать код, убедитесь, что модель отвечает достаточно быстро. Запустите её в терминале:
ollama run qwen3.5:2b
Загрузка в память занимает несколько секунд. Потом появится строка приглашения. Напишите приветствие, и ответ начнёт появляться прямо в терминале. У модели в примере включён режим размышления: сначала идёт блок с рассуждением, потом ответ.
Чем больше модель, тем лучше ответы, но тем медленнее они появляются. Если ждать приходится слишком долго, возьмите модель поменьше.
Шаг 5. Создаём проект и ставим библиотеку Pydantic
Откройте папку проекта в редакторе и создайте файл agent.py. Затем в терминале установите библиотеку командой pip install, как на скриншоте ниже. Точное название пакета смотрите в документации Pydantic.
Если вам привычнее менеджер пакетов uv, можно поставить через него.

Шаг 6. Подключаем модель
Первым делом в agent.py нужно связать код с Ollama. Для этого подключаются два класса из Pydantic: модель Ollama и провайдер Ollama. В примере они задают название модели и адрес.
Название берите из ollama list. Если у вас другая модель, поменяйте строку. Адрес провайдера: http://localhost:11434/v1. Он работает потому, что Ollama сама запускает на вашем компьютере локальный сервер. К нему можно обратиться из любого кода так же, как к облачному интерфейсу.

Шаг 7. Пишем инструменты
Инструмент это обычная функция Python. Модель сможет её вызвать, если передать функцию агенту. Pydantic сам определяет типы аргументов по аннотациям функции. В примере их четыре:
- Текущее время. Возвращает дату и время.
- Калькулятор. Считает простое арифметическое выражение, но сначала проверяет, что в нём нет ничего кроме цифр и знаков действий.
- Сохранить заметку. Дописывает строку в файл
notes.txt. - Прочитать заметки. Отдаёт содержимое этого файла или сообщает, что заметок пока нет.
Копировать именно эти функции не обязательно. Они нужны, чтобы показать принцип. В примере у каждой функции есть короткое описание в одну строку.

Шаг 8. Собираем агента
Агент это три составляющие в одном объекте: модель, список инструментов и инструкция. В списке инструментов просто перечисляются названия функций, которые вы написали выше.
Инструкция в примере короткая, по смыслу такая:
Ты полезный личный помощник, который работает полностью локально. Используй инструменты, когда они помогают ответить на вопрос. Отвечай коротко и дружелюбно.
Вы можете написать свою, например про роль сотрудника отдела или про формат ответа.
Шаг 9. Пишем главный цикл
Последняя часть кода это функция main. Она хранит историю всех сообщений и работает в цикле:
- Запрос. Спрашивает у пользователя ввод.
- Выход. Если введено
quitилиexit, цикл прерывается. - Вызов агента. Иначе отправляет агенту запрос вместе с историей.
- История. Обновляет историю по результату.
- Ответ. Печатает ответ агента.
История нужна, чтобы агент помнил, о чём вы говорили раньше. Без неё каждый запрос был бы для него первым.

Шаг 10. Запускаем и проверяем
Запустите файл. В терминале появится надпись о том, что локальный агент готов. Дальше проверьте по очереди:
Привет, как дела?
Агент отвечает обычным текстом, и ответ приходит почти сразу.

Теперь проверьте инструменты:
Сохрани заметку: «Привет, мир».
Агент вызывает функцию сохранения, и в папке проекта появляется файл notes.txt. Затем попросите:
Что сейчас в моём файле заметок?
Агент читает файл и отвечает, что заметка одна. Дальше:
Какие сегодня дата и время?
Агент вызывает инструмент времени и называет текущие дату и час. Для выхода введите quit. Скорость ответов хорошо заметна: всё считается на вашем компьютере, без пересылки по сети.

Что делать дальше
Этот агент намеренно простой. Чтобы сделать его полезным в работе, меняйте две вещи.
- Инструменты. Добавьте функции под свою задачу: поиск по папке с документами, разбор таблицы, черновик письма. Каждая функция расширяет то, что агент умеет делать сам.
- Модель. Если ответов не хватает, берите модель крупнее. Её можно поменять в одной строке кода, главное, чтобы она влезала в память.
Фреймворк тоже не обязателен: схема из модели, инструментов, инструкции и цикла работает и с другими библиотеками.
Мы в Агентехе учим сотрудников собирать агентов под задачи своего отдела, выбирать для них модели и инструменты и безопасно давать им доступ к данным. Как устроено обучение.