0423b09cf3fb72912a8cfa2a1d1861594183951d
🤖 Агент решения домашних заданий
Берёт задания из журнала через MCP, решает их с помощью LLM, заливает на git.brojs.ru и отправляет ссылку преподавателю.
Общаться с агентом можно через чат на localhost:8123 — так же, как у преподавателя.
Структура проекта
homework_agent/
├── agent.py # Граф агента + CLI (точка входа для langgraph dev)
├── llm.py # Фабрика LLM: openai (пары) ↔ gigachat (дома)
├── mcp_clients.py # Загрузка MCP-инструментов (journal + gitea)
├── gitea_rest.py # REST fallback для Gitea (если uvx недоступен)
├── langgraph.json # Конфиг для langgraph dev
├── requirements.txt
├── .env.example
└── .env # ← создай сам, не коммить!
Установка
# 1. Виртуальное окружение
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Mac/Linux
# 2. Зависимости
pip install -r requirements.txt
# 3. uv (нужен для Gitea MCP, если будешь использовать)
pip install uv
Настройка .env
cp .env.example .env
# открой .env и заполни значения
Токен журнала — JOURNAL_MCP_PAT (самое важное!)
Без него агент не видит задания. Спроси у преподавателя или найди сам:
- Зайди на
https://platform.brojs.ru(авторизуйся) - Открой DevTools (
F12) → вкладка Network - Обнови страницу, кликни на любой запрос к
/jrnl-bh/api/... - В заголовках найди
Authorization: Bearer <токен>— это и естьJOURNAL_MCP_PAT
Токен Gitea — GITEA_TOKEN
- Зайди на https://git.brojs.ru (авторизуйся)
- Аватарка → Settings → Applications → Generate New Token
- Поставь права:
repository: read & write - Скопируй в
.envкакGITEA_TOKEN - Туда же
GITEA_USERNAME— твой логин на git.brojs.ru
Переключение LLM
На парах (gpt-oss-20b):
LLM_PROVIDER=openai
OPENAI_BASE_URL=https://89fe241d-b6f4-4e49-b3d5-9ed3c91dbe2f.tunnel4.com/v1
OPENAI_MODEL=openi/gpt-oss-20b
OPENAI_API_KEY=fake
⚠️ URL туннеля меняется каждый день — спрашивай актуальный у преподавателя
Дома (GigaChat, бесплатно):
LLM_PROVIDER=gigachat
GIGACHAT_CREDENTIALS=твои_credentials
GIGACHAT_SCOPE=GIGACHAT_API_B2B
Получить credentials: https://developers.sber.ru/studio/workspaces/my-space/get-token/gigachat
🚀 Запуск чата (localhost:8123)
langgraph dev
Открой в браузере http://localhost:8123 — появится чат. Можно писать:
- «покажи мои задания»
- «реши задание с id=abc123»
- «какие задания есть в курсе xyz?»
Запуск из консоли (без чата)
# Показать список заданий
python agent.py --list
# Решить конкретное задание
python agent.py --task-id <id>
# Решить задания курса
python agent.py --course-id <id>
# Посмотреть решение без отправки
python agent.py --task-id <id> --dry-run
Как это работает
Ты пишешь в чат
↓
agent_graph (LangGraph ReAct)
↓ читает задания
mcp__journal-mcp__tasks_list / task_get
↓ пишет код (LLM)
gpt-oss-20b / GigaChat
↓ заливает на Gitea
upload_solution → git.brojs.ru/username/dz
↓ отправляет ссылку
mcp__journal-mcp__submission_teacher_set_status
Частые проблемы
| Ошибка | Решение |
|---|---|
JOURNAL_MCP_PAT не задан |
Добавь токен в .env |
FileNotFoundError: uvx |
pip install uv или работает REST fallback |
| LLM не отвечает | Проверь OPENAI_BASE_URL — URL туннеля мог смениться |
langgraph: command not found |
pip install langgraph-cli[inmem] |
Description
Languages
Python
67.5%
HTML
32.5%