Локальный AI-агент с инструментами на Gemma 4 и Ollama: полный гайд | AiManual
AiManual Logo Ai / Manual.
26 Июн 2026 Гайд

Как превратить локальную LLM в агента с инструментами: пошаговое руководство с Gemma 4 и Ollama

Пошаговая инструкция по созданию локального агента с инструментами на базе Gemma 4, Ollama, OpenAI Agents SDK и Tavily MCP. Установка, конфигурация, код и реаль

Реклама
cliv2

Почему облачные агенты бесят, а локальные — нет

Вы платите $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 и работает в два раза быстрее на том же железе.

Подписаться на канал