Быстрый старт
Установка
Клонирование репозитория
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
Следующие шаги