About Portfolio Services Blog Contact
EN DE RU
Let's talk →
June 3, 2026 · 3 min read

Как быстро интегрировать любую ML-модель в LLM-агентов: фреймворк Predikit для вызова моделей через LLM

Я — Денис Шохирев, архитект AI-решений в Erlangen. За последние полгода я внедрил 14 production LLM-агентов для клиентов DACH на стеке Claude, Supabase, n8n, Doppler и локальный Postgres. Главная боль: интеграция своих ML-моделей в пайплайн LLM-агентов для живых B2B-кейсов, а не демо. Почему интеграция ML-моделей в LLM-агентов — это всегда боль В реальных проектах, где LLM-агенты работают с чувствительными данными (финтех, логистика, индустриальная автоматизация), часто требуется встроить сво

Denis Shokhirev
Denis Shokhirev
Enterprise AI Architect
Telegram LinkedIn

Я — Денис Шохирев, архитект AI-решений в Erlangen. За последние полгода я внедрил 14 production LLM-агентов для клиентов DACH на стеке Claude, Supabase, n8n, Doppler и локальный Postgres. Главная боль: интеграция своих ML-моделей в пайплайн LLM-агентов для живых B2B-кейсов, а не демо.

Почему интеграция ML-моделей в LLM-агентов — это всегда боль

В реальных проектах, где LLM-агенты работают с чувствительными данными (финтех, логистика, индустриальная автоматизация), часто требуется встроить свои ML-модели: скоринг, валидация, классификация событий, прогнозы. LLM сам по себе не может напрямую вызвать вашу модель: нужен внешний вызов, правильная оркестрация, валидация и логгирование. Без универсального подхода каждая интеграция — ручная сборка, хаос в API, разное качество логирования и сложная поддержка.

Паттерн: ML-модель как callable endpoint для LLM

Фреймворк Predikit: как работает

Я использую паттерн, который назвал Predikit: обертка вокруг ML-модели, которая превращает её в стандартный callable endpoint (HTTP/gRPC), с четкой схемой input/output и встроенным контролем доступа. LLM-агент вызывает этот endpoint через функцию или tool-call, получает результат в структурированном формате и использует дальше по цепочке.

Преимущества такого подхода

  • Любая ML-модель (Python, Torch, sklearn, CatBoost) превращается в сервис с единым протоколом вызова.
  • Вся логика контроля доступа, валидации, rate-limiting и аудита централизована.
  • Легко масштабировать и заменять backend без изменений в LLM-промптах и пайплайне.

Реализация Predikit: детали на Python

Базовая структура сервиса на FastAPI

Самый быстрый способ — FastAPI + pydantic схемы. Пример: у вас есть ML-модель для скоринга транзакций (fraud detection). Создается endpoint /predict, который принимает input (например, JSON с транзакцией), валидирует, вызывает модель, возвращает результат и логирует вызов.


from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import joblib

app = FastAPI()
model = joblib.load("fraud_model.pkl")

class Transaction(BaseModel):
    amount: float
    sender_id: str
    receiver_id: str

class Prediction(BaseModel):
    is_fraud: bool
    score: float

@app.post("/predict", response_model=Prediction)
def predict(tx: Transaction):
    # Схема input/output согласована с LLM prompt
    features = [tx.amount, hash(tx.sender_id), hash(tx.receiver_id)]
    score = float(model.predict_proba([features])[0][1])
    return {"is_fraud": score > 0.7, "score": score}

Интеграция с LLM через function calling (на примере Claude или OpenAI)

В prompt LLM добавляется описание функции, которую можно вызвать:


# Пример schema для function calling OpenAI
{
  "name": "predict_transaction",
  "description": "Классификация транзакции на мошенничество",
  "parameters": {
    "type": "object",
    "properties": {
      "amount": {"type": "number"},
      "sender_id": {"type": "string"},
      "receiver_id": {"type": "string"}
    },
    "required": ["amount", "sender_id", "receiver_id"]
  }
}

LLM-агент автоматически вызывает ваш Predikit endpoint при необходимости.

Безопасность: контроль доступа и аудит

В production нельзя просто публиковать endpoint без авторизации. Я добавляю JWT или API-key и обязательно логирую все вызовы через отдельную таблицу в Postgres (audit trail). Это позволяет отслеживать все запросы и связанных пользователей.

Сравнение подходов интеграции

ПодходВремя на интеграциюКонтроль доступаМасштабируемость
Прямой импорт ML-кода в LLM pipeline3-5 днейРучнаяПлохо
Predikit Endpoint1 деньЦентрализованныйОтлично
Внешний ML API (SageMaker, Vertex AI)2-4 дняУправляется провайдеромХорошо, но дорого

Ошибки и ловушки: что не делать

  • Не оставляйте endpoint открытым для всех — всегда проверяйте авторизацию.
  • Не пропускайте валидацию input: LLM может генерировать некорректные параметры.
  • Не используйте pickle для передачи модели между сервисами — используйте joblib или ONNX.
  • Не логируйте чувствительные данные в явном виде — только хэши/идентификаторы.

FAQ

Можно ли использовать этот паттерн для моделей на других языках (например, Java)?

Да, Predikit — это не привязка к Python. Важно обеспечить стандартный API (REST/gRPC) и четкую схему input/output.

Как тестировать интеграцию LLM ↔ ML endpoint?

Я использую unit-тесты на FastAPI endpoint (pytest), плюс end-to-end тесты с реальным LLM через n8n workflow.

Что делать, если модель требует GPU?

Поднимайте Predikit endpoint на отдельном сервере с доступом к GPU, используйте очередь через Celery или Redis, если вызовы долгие.

Как логировать и аудировать вызовы?

Создайте отдельную таблицу в Postgres (audit_logs), сохраняйте время, параметры (обфусцированные), user_id и результат.

Можно ли использовать Predikit с self-hosted LLM?

Да, LLM просто вызывает endpoint по стандарту (OpenAI function calling, Claude tool use, свой custom function) — неважно, где хостится LLM.

Ваша команда интегрирует ML-модели в LLM-агентов через прямой импорт кода или через отдельные сервисы? На каком этапе чаще всего возникают production-ошибки: валидация input, контроль доступа или логирование? Я провожу бесплатный разовый аудит стека для DACH-компаний, которые строят AI-системы в регулируемых отраслях. Пишите в LinkedIn или на @ger_dennis_ai.

Ready to build?

Turn your process into an AI system

Fixed price. Production quality. DACH B2B focus.

Start a project → ← All articles