Почему облачные агенты бесят, а локальные — нет
Вы платите $20 за ChatGPT Pro, а он все равно врет, не может найти свежие данные и сливает код конкурентам. С OpenAI Agents SDK вроде бы можно сделать агента, но каждый запрос уходит в облако, и privacy — это миф.
Реальный сценарий: вам нужен ассистент, который ищет информацию в интернете, парсит сайты, отправляет email и не требует подписки. В 2026 году это решается локально: берем Gemma 4, поднимаем Ollama, оборачиваем все в OpenAI Agents SDK и подключаем инструменты через Tavily MCP. Никаких VPN, никаких лимитов.
⚠️ Важно: этот гайд не для ноутбуков 2015 года. Нужна видеокарта с 8+ ГБ VRAM (RTX 3070 или выше) и хотя бы 16 ГБ ОЗУ. Если у вас Mac — M2/M3 с 32 ГБ unified memory.
Стек, который мы будем ломать
Забудьте про LangChain (слишком много boilerplate) и AutoGen (платный бенчмаркинг). В 2026 году стандарт де-факто — OpenAI Agents SDK с поддержкой OpenAI API-совместимых бэкендов. Другими словами, мы используем клиентские библиотеки OpenAI, но стучимся к нашей локальной Ollama.
- Ollama — рантайм для LLM. Просто, быстро, open source. Версия 0.5.x на июнь 2026 уже поддерживает все современные модели.
- Gemma 4 — модель от Google с контекстом 256K токенов, поддержкой инструментов (tool calling) и агентивными способностями. Лучшая локальная модель на сегодня.
- OpenAI Agents SDK — библиотека для создания агентов (не путать с Assistants API). Версия 0.7 на июнь 2026 умеет работать с MCP-инструментами и локальными моделями.
- Tavily MCP — Model Context Protocol для поиска. Позволяет агенту гуглить, заходить на сайты и возвращать структурированные ответы. Бесплатно до 1000 запросов в месяц.
Пошаговая сборка агента
1 Разворачиваем Ollama и грузим Gemma 4
Если у вас еще нет Ollama — качайте с официального сайта. Установка в Linux/Windows/Mac тривиальна: один скрипт или brew install ollama (Mac).
После установки загружаем модель:
ollama pull gemma4:27b-instruct-fp16
Почему именно 27B fp16? Потому что на RTX 4090 (24 ГБ VRAM) она умещается целиком и выдает около 50 токенов/с. Если у вас 16 ГБ — берите gemma4:9b-q4_K_M (квантизованную, теряете немного качества, но скорость выше).
2 Настройка сервера Ollama для пайплайна
Ollama по умолчанию запускается на localhost:11434 и принимает запросы через REST API. Убедитесь, что сервер работает:
ollama serve
Проверить можно через curl:
curl http://localhost:11434/api/chat -d '{"model":"gemma4:27b-instruct-fp16","messages":[{"role":"user","content":"say hi"}]}'
3 Виртуальное окружение и зависимости
python3 -m venv agent_env
source agent_env/bin/activate
pip install openai-agents tavily-python langtrace-sdk
💡 Важный момент: OpenAI Agents SDK (версия 0.7.0) поставляется с биндингами к MCP. Вам не нужен отдельный MCP-клиент — SDK сам умеет запускать MCP-серверы как подпроцессы.
4 Пишем код агента
Классическая ошибка — считать, что агент сам догадается вызывать инструменты. Нужно дать ему четкий промпт и описание функций. Вот минимальный рабочий код:
import asyncio
from agents import Agent, Runner, function_tool, set_default_openai_key
from agents.mcp import MCPServer
from tavily import TavilyClient
# --- Глобальная конфигурация ---
# Подменяем адрес OpenAI на наш локальный Ollama
set_default_openai_key("not-needed")
import os
os.environ["OPENAI_BASE_URL"] = "http://localhost:11434/v1"
# --- Подключаем Tavily через MCP ---
TAVILY_API_KEY = "tvly-..." # получить на tavily.com
async def run_tavily_mcp():
"""Запускаем MCP-сервер Tavily как подпроцесс."""
server = MCPServer(
command="python",
args=[
"-m",
"tavily_mcp",
"--api-key",
TAVILY_API_KEY
]
)
await server.start()
return server
# --- Обычный инструмент без MCP (для примера) ---
@function_tool
def get_current_date():
"""Возвращает сегодняшнюю дату в формате YYYY-MM-DD."""
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d")
# --- Создаем агента ---
agent = Agent(
name="ResearchAssistant",
instructions="""Ты — исследовательский ассистент. Твоя задача:
1. Изучить вопрос с помощью интернет-поиска (используй tavily_search).
2. Если нужно, уточни дату через get_current_date.
3. Ответь структурированно: краткое введение, ключевые находки, вывод.
Игнорируй совпадения старше 1 года, если не указано иное.
""",
model="gemma4:27b-instruct-fp16",
tools=[get_current_date]
)
async def main():
# Запускаем MCP-сервер
mcp_server = await run_tavily_mcp()
agent.mcp_servers = [mcp_server]
result = await Runner.run(
agent,
input="Какие тренды в DevOps в 2026 году? Приведи конкретные цифры и ссылки."
)
print(result.final_output)
await mcp_server.stop()
if __name__ == "__main__":
asyncio.run(main())
5 Запуск и первая кровь
После запуска python main.py произойдет магия: агент стучится в Gemma 4, она решает, что нужно вызвать Tavily, MCP-сервер делает HTTP-запрос к Tavily API, возвращает результат модели, модель формирует ответ. Весь цикл — локальный, только поиск уходит в интернет.
⚠️ Частая проблема: Ollama возвращает ошибки формата, потому что ее API не полностью совместим с OpenAI. Решение — в настройках Ollama добавьте --keep-alive 0 и используйте model='gemma4:27b-instruct-fp16' без лишних параметров.
Разбор ошибок: как не надо делать
Ошибка 1: Промпт без контекста
Если написать просто «найди информацию» — Gemma 4 может начать галлюцинировать, потому что не знает, какой формат вывода ожидается. Всегда давайте пример желаемого ответа.
Ошибка 2: Забыть про MCP
Без MCP-сервера инструмент Tavily не подключится. Проверяйте, что сервер запущен и агент имеет mcp_servers.
Ошибка 3: Слишком длинный контекст
Gemma 4 поддерживает 256K токенов, но на 27B модели заполнение всего контекста тормозит вывод. Используйте суммаризацию или тримминг.
Когда локальный агент реально полезен
- Deep Research — поиск конкурентных данных, автоматический сбор технологических новостей.
- Кодинг-агент — как в нашей статье про OpenCode, но с доступом в интернет.
- Корпоративный RAG — объединить локальный агент с векторной базой (см. гайд по AnythingLLM).
- Автоматизация DevOps — агент мониторит логи, дергает API и отправляет уведомления (пример n8n + Ollama).
Частые вопросы
| Вопрос | Ответ |
|---|---|
| Нужен ли GPU? | Для Gemma 4 27B — обязательно. Для 9B квантизованной — хватит 8 ГБ VRAM или M2 Mac. |
| Можно ли использовать другие LLM? | Да, все модели из Ollama, поддерживающие tool calling (Mistral, Llama 4). |
| Сколько стоит Tavily? | Бесплатно 1000 запросов/мес. Платный план от $20 за 5000 запросов. |
| А что если Tavily заблокирован? | Используйте альтернативы: Serper.dev (Google Search API) или поднимите свой браузерный MCP-сервер. |
Что дальше?
Этот агент — база. Добавьте ему память через SQLite, научите отправлять email через MCP-сервер SMTP, прикрутите локальный векторный поиск. Стек Ollama + OpenAI Agents SDK открывает те же возможности, что у закрытых решений, но без ежемесячной платы. Единственный минус — скорость ответа 10-20 секунд вместо 2 секунд у GPT-4o, но privacy и кастомизация стоят того.
Кстати, если хотите еще сильнее ускорить агента, посмотрите LocalAgent v0.1.1 — он написан на Rust и работает в два раза быстрее на том же железе.