Игорь Градов
Игорь Градов
6 мин
ai

Что такое ИИ-агент на практике: мультиагентная система для валютной аналитики за 30 минут

Финансовый аналитик или стартапер в России, которому нужно быстро собрать мультиагентную систему для работы с валютными данными, теперь может сделать это в Google Colab за полчаса, без Node.js и сложной инфраструктуры.

Что такое ИИ-агент на практике: мультиагентная система для валютной аналитики за 30 минут
Почему это важно

Мультиагентный подход позволяет разделить задачу на части: один ИИ-агент (программа, которая сама решает, какие действия выполнить для достижения цели) получает данные, другой проверяет качество текста, а жёсткие лимиты не дают потратить лишнее на API.

Инструмент Omnigent позволяет описать нескольких ИИ-агентов в одном YAML-файле, раздать им инструменты в виде обычных Python-функций и запустить всё через Claude Agent SDK (среду исполнения от Anthropic). Ниже полный разбор: что понадобится, как настроить и где подвох.

Что понадобится?

  • Google Colab (бесплатный тариф подойдёт) или локальный Python 3.12
  • uv (менеджер виртуальных окружений, ставится одной командой)
  • Omnigent (опенсорс-фреймворк для мультиагентных систем)
  • Ключ Anthropic API (Claude). Получить можно на сайте Anthropic, тариф с оплатой за токены (минимальные единицы текста, которые обрабатывает модель)
  • Библиотека Requests для Python
  • Около 30 минут на первый запуск

Пошаговая инструкция

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

Откройте Colab-блокнот и выполните:

import os, sys, subprocess, pathlib

WORKDIR = pathlib.Path("/content/omnigent_tutorial")
WORKDIR.mkdir(parents=True, exist_ok=True)

subprocess.run([sys.executable, "-m", "pip", "install", "-q", "uv"], check=True)

VENV = WORKDIR / ".venv"
subprocess.run(["uv", "venv", "--python", "3.12", str(VENV)], check=True)

PY = str(VENV / "bin" / "python")
subprocess.run(["uv", "pip", "install", "--python", PY, "-q", "omnigent", "requests"], check=True)

Виртуальное окружение через uv обходит ограничение Colab с ensurepip и не засоряет системный Python.

2. Сохраните ключ Anthropic безопасно

import getpass

if not os.environ.get("ANTHROPIC_API_KEY"):
    os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Anthropic API key: ")

env = os.environ.copy()
env["OMNIGENT_NO_UPDATE_CHECK"] = "1"

Ключ остаётся в памяти процесса и не записывается ни в файл, ни в историю ячеек. Переменная OMNIGENT_NO_UPDATE_CHECK отключает автопроверку обновлений при каждом запуске.

3. Напишите инструменты агентов как обычные Python-функции

Создайте файл agent_tools.py в рабочей папке:

import requests

def get_exchange_rate(base_currency: str, target_currency: str) -> dict:
    """Получает актуальный курс валют через Frankfurter API."""
    r = requests.get(
        "https://api.frankfurter.app/latest",
        params={"from": base_currency.upper(), "to": target_currency.upper()},
        timeout=10,
    )
    r.raise_for_status()
    data = r.json()
    return {
        "base": base_currency.upper(),
        "target": target_currency.upper(),
        "rate": data["rates"][target_currency.upper()],
        "date": data["date"],
    }

def word_count(text: str) -> int:
    """Считает слова в тексте."""
    return len(text.split())

Первая функция обращается к открытому API Frankfurter за курсом валют. Вторая позволяет агенту-аудитору измерить длину черновика. Обе функции Omnigent подхватит автоматически по имени из YAML-конфига.

4. Опишите архитектуру агентов в YAML

Файл fx_research_lead.yaml:

name: fx_research_lead
prompt: |
  You are a financial research lead. Call get_exchange_rate
  to fetch the live rate, then hand your draft to text_auditor
  for a clarity and length check before giving a final answer.
executor:
  harness: claude-sdk
tools:
  get_exchange_rate:
    type: function
    callable: agent_tools.get_exchange_rate
  text_auditor:
    type: agent
    prompt: |
      You audit short financial texts. Call word_count,
      flag jargon, suggest one clarity improvement.
    tools:
      word_count:
        type: function
        callable: agent_tools.word_count
policies:
  cap_calls:
    type: function
    handler: omnigent.policies.builtins.safety.max_tool_calls_per_session
    factory_params:
      limit: 20
  budget:
    type: function
    handler: omnigent.policies.builtins.cost.cost_budget
    factory_params:
      max_cost_usd: 1.00

Здесь ведущий агент получает инструмент для валютных курсов и подчинённого агента-аудитора. Секция policies ограничивает сессию 20 вызовами инструментов и бюджетом в 1 доллар. Что такое ИИ-агент в этом контексте: программа, которая сама выбирает, какой инструмент вызвать и когда делегировать задачу другому агенту.

5. Запустите workflow

OMNI = str(VENV / "bin" / "omnigent")
env["PYTHONPATH"] = str(WORKDIR)

question = (
    "What is the current USD to EUR exchange rate? "
    "Give me a two-sentence summary for a client note."
)

result = subprocess.run(
    [OMNI, "run", str(WORKDIR / "fx_research_lead.yaml"),
     "-p", question, "--no-session"],
    cwd=WORKDIR, env=env, stdin=subprocess.DEVNULL,
    capture_output=True, text=True, timeout=300,
)
print(result.stdout.strip())

Флаг --no-session запускает workflow без интерактивного терминала, что критично для Colab.

Что получается на практике

На вход подаётся вопрос: «Какой сейчас курс USD к EUR? Дай двухпредложечную справку для клиентской записки». Ведущий агент вызывает get_exchange_rate("USD", "EUR"), получает актуальный курс и дату от Frankfurter API, формирует черновик и передаёт его агенту-аудитору. Аудитор вызывает word_count, проверяет длину, отмечает непонятный жаргон (если есть) и предлагает правку. Ведущий агент возвращает финальную двухпредложечную справку с курсом и датой. Весь цикл укладывается в лимит 20 вызовов и 1 доллар бюджета.

Как адаптировать для российского рынка?

Frankfurter API отдаёт курсы ЕЦБ, пара USD/RUB там отсутствует. Для рублёвых данных замените URL в функции get_exchange_rate на API Центробанка (https://www.cbr-xml-daily.ru/daily_json.js) и скорректируйте парсинг JSON. Формат ответа ЦБ другой, но логика агента не меняется: он по-прежнему вызывает функцию, получает словарь и пишет справку.

Вместо Claude API можно попробовать YandexGPT или GigaChat как бэкенд, но Omnigent на момент публикации использует Claude Agent SDK как среду исполнения (harness), поэтому замена потребует написания собственного harness-адаптера.

Кому это пригодится и что делать прямо сейчас?

  • Финансовому аналитику. Соберите прототип за полчаса в Colab, подключите API ЦБ РФ вместо Frankfurter, и получите систему, которая сама тянет курс, пишет справку и проверяет её перед отправкой клиенту.

  • Автору Дзена, пишущему про финансы. Используйте эту схему как основу для контента: покажите читателям, что такое ИИ-агент на конкретном примере с валютами, а не абстрактными определениями.

  • Предпринимателю или фин-стартапу в РФ. Архитектура с лимитами бюджета и вызовов подходит для MVP: вы контролируете расходы на API жёстко через YAML, без написания отдельного кода. Учтите, что Anthropic API требует оплату в валюте и доступ из РФ может потребовать VPN.

Частые ошибки

Новички часто забывают добавить PYTHONPATH в переменные окружения подпроцесса, и Omnigent не находит файл agent_tools.py. Без этой строки вы получите ошибку импорта без внятного объяснения. Вторая частая проблема: запуск без флага --no-session в Colab. Omnigent по умолчанию ожидает интерактивный терминал, в Colab его нет, процесс зависает. Третья ошибка: оставить max_cost_usd без значения или убрать секцию policies совсем. Без бюджетного лимита агент может зациклиться на вызовах и потратить больше, чем вы рассчитывали.

Мнение редакции dzen.guru

По моим наблюдениям, главная ценность такой архитектуры не в самих валютных курсах, их можно получить и без ИИ. Ценность в паттерне: ведущий агент плюс агент-проверщик плюс жёсткие лимиты. Эту связку можно перенести на любую аналитическую задачу: мониторинг цен, подготовку отчётов, проверку текстов перед публикацией. Честная оговорка: Omnigent молодой инструмент, документации пока немного, а harness заточен под Claude. Если ваша компания работает только с российскими LLM, придётся писать адаптер самостоятельно или ждать, пока сообщество его сделает.

Схема «ведущий агент плюс аудитор плюс бюджетный потолок» переносится на любой исследовательский процесс за полчаса: замените функцию данных, поправьте промпт (инструкцию агенту на естественном языке) и запускайте.

Научитесь работать с нейросетями на практике

В dzen.guru мы разбираем реальные сценарии применения ИИ-агентов для авторов и предпринимателей

Узнать больше
Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Google выложила код семейного приложения для составления расписания: работает без облака и подписок
ai

Google выложила код семейного приложения для составления расписания: работает без облака и подписок

Raph, инженер Google, собрал семейное приложение для составления расписания на основе локальной модели Gemini, и 11 июня 2025 года Google выложила исходный код…

4 мин
JetBrains выпустила KotlinLLM: лучшая нейросеть для генерации кода прямо в IntelliJ IDEA
ai

JetBrains выпустила KotlinLLM: лучшая нейросеть для генерации кода прямо в IntelliJ IDEA

JetBrains Research выпустила KotlinLLM, экспериментальный плагин для IntelliJ IDEA, который генерирует Kotlin-код прямо внутри проекта через так называемые…

5 мин
Косово впервые появилось в Google Street View online: 4 объекта ЮНЕСКО открыты для виртуальных прогулок
ai

Косово впервые появилось в Google Street View online: 4 объекта ЮНЕСКО открыты для виртуальных прогулок

Козово (территория Косово) впервые появилось на панорамах Google Street View online 12 июня 2025 года, и теперь любой, у кого есть браузер, может пройтись по…

4 мин