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