init
This commit is contained in:
6
.env
Normal file
6
.env
Normal file
@@ -0,0 +1,6 @@
|
||||
GIGACHAT_CLIENT_ID=your-client-id
|
||||
GIGACHAT_CLIENT_SECRET=your-client-secret
|
||||
GIGACHAT_AUTH_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth
|
||||
GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1
|
||||
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
BIN
.env.example
Normal file
BIN
.env.example
Normal file
Binary file not shown.
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
7
.idea/misc.xml
generated
Normal file
7
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.12 (new-planet-ai-agents)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (new-planet-ai-agents)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/new-planet-ai-agents.iml" filepath="$PROJECT_DIR$/.idea/new-planet-ai-agents.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
10
.idea/new-planet-ai-agents.iml
generated
Normal file
10
.idea/new-planet-ai-agents.iml
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.12 (new-planet-ai-agents)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
67
CLAUDE.md
Normal file
67
CLAUDE.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Инструкции для Claude AI
|
||||
|
||||
## Контекст проекта
|
||||
|
||||
Это репозиторий **AI-агентов** для проекта "Новая Планета" — визуальное расписание для детей с расстройством аутистического спектра (РАС).
|
||||
|
||||
## Архитектура
|
||||
|
||||
Проект разделен на три репозитория:
|
||||
1. **new-planet-backend** — FastAPI backend
|
||||
2. **new-planet-android** — Android приложение
|
||||
3. **new-planet-ai-agents** (текущий) — Python агенты и скрипты
|
||||
|
||||
## Структура
|
||||
|
||||
- `agents/` — ИИ-агенты (GigaChat клиент, генератор расписаний, чат-агент)
|
||||
- `prompts/` — промпты для LLM (персона "Земля", генерация расписаний)
|
||||
- `services/` — сервисы (управление токенами, Redis кэш, обработка изображений)
|
||||
- `models/` — Pydantic модели данных
|
||||
- `scripts/` — утилиты (генерация данных, анализ использования)
|
||||
|
||||
## Основные компоненты
|
||||
|
||||
### GigaChatClient
|
||||
Асинхронный клиент для работы с GigaChat API. Использует TokenManager для получения токенов.
|
||||
|
||||
### ScheduleGenerator
|
||||
Генерирует расписания для детей с РАС на основе возраста, предпочтений и даты.
|
||||
|
||||
### ChatAgent
|
||||
ИИ-агент "Планета Земля" для общения с детьми и родителями. Использует Redis для хранения контекста.
|
||||
|
||||
### RecommendationEngine
|
||||
Простая рекомендательная система на основе TF-IDF (MVP-1).
|
||||
|
||||
## Интеграция с Backend
|
||||
|
||||
Backend использует эти агенты через импорты:
|
||||
```python
|
||||
from agents.schedule_generator import ScheduleGenerator
|
||||
from agents.chat_agent import ChatAgent
|
||||
```
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
- `GIGACHAT_CLIENT_ID` — ID клиента GigaChat
|
||||
- `GIGACHAT_CLIENT_SECRET` — секрет клиента
|
||||
- `REDIS_URL` — URL Redis для кэширования
|
||||
|
||||
## Стиль кода
|
||||
|
||||
- Python 3.11+
|
||||
- Async/await для всех I/O операций
|
||||
- Pydantic для валидации
|
||||
- Type hints везде
|
||||
- Docstrings для всех публичных методов
|
||||
|
||||
## Тестирование
|
||||
|
||||
Используется pytest с asyncio. Моки для внешних API (GigaChat, Redis).
|
||||
|
||||
## Важные замечания
|
||||
|
||||
- GigaChat токены обновляются автоматически
|
||||
- Контекст разговоров хранится в Redis с TTL 24 часа
|
||||
- Промпты оптимизированы для детей с РАС (простой язык, короткие предложения)
|
||||
|
||||
107
README.md
Normal file
107
README.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# Новая Планета - AI Agents (Python)
|
||||
|
||||
ИИ-агенты и скрипты для проекта "Новая Планета" - визуальное расписание для детей с РАС.
|
||||
|
||||
## Возможности
|
||||
|
||||
- 🤖 **GigaChat интеграция** — работа с API для генерации расписаний
|
||||
- 📊 **Обработка данных** — анализ прогресса детей
|
||||
- 🧠 **ML модели** — рекомендательная система
|
||||
- 🔧 **Скрипты автоматизации** — генерация контента, обработка изображений
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- Python 3.11+
|
||||
- LangChain, OpenAI SDK (адаптер для GigaChat)
|
||||
- Pydantic для валидации
|
||||
- sentence-transformers, scikit-learn для ML
|
||||
- aiohttp, redis-py для инфраструктуры
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
# или
|
||||
poetry install
|
||||
```
|
||||
|
||||
## Настройка
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Заполните GIGACHAT_CLIENT_ID и GIGACHAT_CLIENT_SECRET
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
### Генерация расписания
|
||||
|
||||
```python
|
||||
from agents.gigachat_client import GigaChatClient
|
||||
from agents.schedule_generator import ScheduleGenerator
|
||||
from services.token_manager import TokenManager
|
||||
|
||||
token_manager = TokenManager()
|
||||
gigachat = GigaChatClient(token_manager)
|
||||
generator = ScheduleGenerator(gigachat)
|
||||
|
||||
schedule = await generator.generate(
|
||||
child_age=7,
|
||||
preferences=["рисование", "прогулка"],
|
||||
date="2025-12-16"
|
||||
)
|
||||
```
|
||||
|
||||
### Чат с агентом
|
||||
|
||||
```python
|
||||
from agents.chat_agent import ChatAgent
|
||||
from services.cache_service import CacheService
|
||||
|
||||
cache = CacheService()
|
||||
agent = ChatAgent(gigachat, cache)
|
||||
|
||||
response, tokens = await agent.chat(
|
||||
user_id=user_id,
|
||||
message="Помоги составить расписание",
|
||||
conversation_id="conv_123"
|
||||
)
|
||||
```
|
||||
|
||||
## Скрипты
|
||||
|
||||
```bash
|
||||
# Генерация тестовых данных
|
||||
python scripts/generate_test_data.py --users 100 --schedules 500
|
||||
|
||||
# Анализ использования токенов
|
||||
python scripts/analyze_usage.py --month 2025-12
|
||||
|
||||
# Экспорт промптов
|
||||
python scripts/migrate_prompts.py export --file prompts.json
|
||||
```
|
||||
|
||||
## Тестирование
|
||||
|
||||
```bash
|
||||
pytest tests/ -v
|
||||
pytest --cov=agents --cov-report=html
|
||||
```
|
||||
|
||||
## Структура
|
||||
|
||||
- `agents/` — ИИ-агенты (GigaChat, генератор расписаний, чат)
|
||||
- `prompts/` — промпты для LLM
|
||||
- `services/` — сервисы (токены, кэш, обработка изображений)
|
||||
- `models/` — Pydantic модели
|
||||
- `scripts/` — скрипты автоматизации
|
||||
|
||||
## Связанные репозитории
|
||||
|
||||
- [Backend (Python/FastAPI)](https://github.com/your-org/new-planet-backend)
|
||||
- [Frontend (Android)](https://github.com/your-org/new-planet-android)
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT License
|
||||
|
||||
62
pyproject.toml
Normal file
62
pyproject.toml
Normal file
@@ -0,0 +1,62 @@
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "new-planet-ai-agents"
|
||||
version = "0.1.0"
|
||||
description = "ИИ-агенты и скрипты для проекта Новая Планета"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
license = {text = "MIT"}
|
||||
authors = [
|
||||
{name = "Новая Планета", email = "team@novayaplaneta.ru"}
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
"langchain>=0.1.0",
|
||||
"openai>=1.0.0",
|
||||
"pydantic>=2.0.0",
|
||||
"python-dotenv>=1.0.0",
|
||||
"sentence-transformers>=2.2.0",
|
||||
"scikit-learn>=1.3.0",
|
||||
"pandas>=2.0.0",
|
||||
"numpy>=1.24.0",
|
||||
"aiohttp>=3.9.0",
|
||||
"redis>=5.0.0",
|
||||
"Pillow>=10.0.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest>=7.4.0",
|
||||
"pytest-cov>=4.1.0",
|
||||
"pytest-asyncio>=0.21.0",
|
||||
"jupyter>=1.0.0",
|
||||
"black>=23.0.0",
|
||||
"isort>=5.12.0",
|
||||
"flake8>=6.0.0",
|
||||
"mypy>=1.5.0",
|
||||
]
|
||||
|
||||
[tool.black]
|
||||
line-length = 100
|
||||
target-version = ['py311']
|
||||
|
||||
[tool.isort]
|
||||
profile = "black"
|
||||
line_length = 100
|
||||
|
||||
[tool.mypy]
|
||||
python_version = "3.11"
|
||||
warn_return_any = true
|
||||
warn_unused_configs = true
|
||||
disallow_untyped_defs = false
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
python_files = ["test_*.py"]
|
||||
python_classes = ["Test*"]
|
||||
python_functions = ["test_*"]
|
||||
asyncio_mode = "auto"
|
||||
|
||||
22
requirements.txt
Normal file
22
requirements.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
# Core
|
||||
langchain
|
||||
openai
|
||||
pydantic>=2.0
|
||||
python-dotenv
|
||||
|
||||
# AI/ML
|
||||
sentence-transformers
|
||||
scikit-learn
|
||||
pandas
|
||||
numpy
|
||||
|
||||
# Utils
|
||||
aiohttp
|
||||
redis
|
||||
Pillow
|
||||
|
||||
# Dev
|
||||
pytest
|
||||
pytest-cov
|
||||
pytest-asyncio
|
||||
jupyter
|
||||
Reference in New Issue
Block a user