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

Я — Денис Шохирев, архитект AI-решений в Freiburg. За последние полгода я внедрил 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.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev