Перейти к содержанию

Быстрый старт

Установка

Клонирование репозитория

git clone https://github.com/brian15274927-prog/kit.git
cd kit

Установка зависимостей

# Базовые зависимости
pip install -r requirements.txt

# Или конкретные модули
pip install openai anthropic  # для providers/llm
pip install edge-tts          # для providers/tts
pip install aiogram           # для providers/telegram
pip install imagehash Pillow  # для providers/image

Структура проекта

kit/
├── core/           # Базовые компоненты
│   ├── config/     # Управление конфигурацией
│   ├── realtime/   # WebSocket и SSE
│   ├── moderation/ # Фильтрация контента
│   └── repository/ # Абстракция хранилища
├── agent/          # Автономные агенты
│   ├── base.py     # Базовый агент и EventBus
│   ├── decision/   # Decision engine
│   └── watcher/    # Система мониторинга
├── pipeline/       # Pipeline компоненты
│   ├── jobs/       # Управление задачами
│   ├── cost/       # Трекинг расходов
│   └── checkpoint/ # Чекпоинты
├── providers/      # Внешние сервисы
│   ├── llm/        # OpenAI, Anthropic
│   ├── video/      # Kling, Fal
│   ├── tts/        # Edge-TTS
│   ├── telegram/   # Telegram боты
│   ├── kie/        # Kie.ai API
│   └── factory/    # Auto-fallback
├── saas/           # SaaS компоненты
│   ├── auth/       # JWT аутентификация
│   └── rate_limit/ # Rate limiting
├── services/       # Бизнес-логика
│   ├── prompt_transformer.py
│   └── draft_storage.py
└── utils/          # Утилиты
    ├── text_preprocessor.py
    ├── file_uploader.py
    └── audio_analyzer.py

Примеры использования

LLM Provider

from kit.providers.llm import OpenAIProvider, AnthropicProvider

# OpenAI
openai = OpenAIProvider(api_key="sk-...")
response = await openai.generate(
    prompt="Напиши короткую историю",
    model="gpt-4o-mini",
    max_tokens=500
)
print(response.content)

# Anthropic
anthropic = AnthropicProvider(api_key="sk-ant-...")
response = await anthropic.generate(
    prompt="Объясни квантовую физику простыми словами",
    model="claude-3-5-sonnet-20241022"
)

Video Provider

from kit.providers.video import KlingProvider

kling = KlingProvider(
    access_key="...",
    secret_key="..."
)

# Генерация видео из текста
task = await kling.text_to_video(
    prompt="Закат над океаном, волны",
    duration=5
)

# Ожидание результата
result = await kling.wait_for_completion(task.task_id)
print(result.video_url)

TTS с таймингами слов

from kit.providers.tts import EdgeTTSProvider

tts = EdgeTTSProvider(voice="ru-RU-DmitryNeural")

result = await tts.synthesize(
    text="Привет! Как дела?",
    output_path="output.mp3"
)

# Тайминги каждого слова
for timing in result.word_timings:
    print(f"{timing.word}: {timing.start_ms}-{timing.end_ms}ms")

JWT Аутентификация

from kit.saas.auth import JWTManager, AuthMiddleware
from fastapi import FastAPI

app = FastAPI()
jwt = JWTManager(secret_key="your-secret")

# Middleware для проверки токенов
app.add_middleware(AuthMiddleware, jwt_manager=jwt)

# Создание токена
token = jwt.create_token(user_id="123", role="user")

# Гостевой доступ
guest_token = jwt.create_guest_token()

Rate Limiting

from kit.saas.rate_limit import RateLimiter, DualLayerLimiter

# Простой лимитер
limiter = RateLimiter(max_requests=100, window_seconds=60)

if await limiter.is_allowed(client_ip):
    # Обработка запроса
    pass
else:
    # 429 Too Many Requests
    pass

# Двухуровневый (IP + User)
dual = DualLayerLimiter(
    ip_limit=100,
    user_limit=1000,
    window_seconds=3600
)

Pipeline с чекпоинтами

from kit.pipeline.checkpoint import CheckpointManager

checkpoint = CheckpointManager(storage_path="./checkpoints")

# Сохранение прогресса
await checkpoint.save("video_task_123", {
    "step": "rendering",
    "progress": 45,
    "frames_done": 120
})

# Восстановление после перезапуска
state = await checkpoint.load("video_task_123")
if state:
    print(f"Продолжаем с шага: {state['step']}")

Модерация контента

from kit.core.moderation import ContentFilter

filter = ContentFilter(languages=["ru", "kz"])

result = filter.check("Какой-то текст для проверки")
if result.is_clean:
    # Контент безопасен
    pass
else:
    print(f"Найдены нарушения: {result.violations}")

Конфигурация

Через переменные окружения

# .env
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
TELEGRAM_BOT_TOKEN=123456:ABC...
JWT_SECRET=your-secret-key

Через Settings

from kit.core.config import Settings

settings = Settings()
print(settings.openai_api_key)  # Автоматически из .env

Следующие шаги

  • Core модули — базовые компоненты
  • Providers — интеграции с внешними сервисами
  • Agent — автономные агенты
  • SaaS — компоненты для SaaS приложений