diff --git a/src/README.md b/src/README.md deleted file mode 100644 index 1cae35c..0000000 --- a/src/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# 🤖 Агент решения домашних заданий - -Берёт задания из журнала через **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 # ← создай сам, не коммить! -``` - -## Установка - -```bash -# 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 - -```bash -cp .env.example .env -# открой .env и заполни значения -``` - -### Токен журнала — `JOURNAL_MCP_PAT` (самое важное!) - -Без него агент не видит задания. Спроси у преподавателя или найди сам: - -1. Зайди на `https://platform.brojs.ru` (авторизуйся) -2. Открой DevTools (`F12`) → вкладка **Network** -3. Обнови страницу, кликни на любой запрос к `/jrnl-bh/api/...` -4. В заголовках найди `Authorization: Bearer <токен>` — это и есть `JOURNAL_MCP_PAT` - -### Токен Gitea — `GITEA_TOKEN` - -1. Зайди на https://git.brojs.ru (авторизуйся) -2. Аватарка → **Settings** → **Applications** → **Generate New Token** -3. Поставь права: `repository: read & write` -4. Скопируй в `.env` как `GITEA_TOKEN` -5. Туда же `GITEA_USERNAME` — твой логин на git.brojs.ru - -### Переключение LLM - -**На парах (gpt-oss-20b):** -```env -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, бесплатно):** -```env -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) - -```bash -langgraph dev -``` - -Открой в браузере `http://localhost:8123` — появится чат. Можно писать: -- *«покажи мои задания»* -- *«реши задание с id=abc123»* -- *«какие задания есть в курсе xyz?»* - -## Запуск из консоли (без чата) - -```bash -# Показать список заданий -python agent.py --list - -# Решить конкретное задание -python agent.py --task-id - -# Решить задания курса -python agent.py --course-id - -# Посмотреть решение без отправки -python agent.py --task-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]` | diff --git a/src/agent_ui.html b/src/agent_ui.html deleted file mode 100644 index 3f15416..0000000 --- a/src/agent_ui.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - -HW Agent - - - - - - - - -
- -
-
-
- connecting... -
- -
-
- -
- - -
-
-
-
-

homework agent

-

langgraph @ localhost:2024

-
-
список заданий
-
решить задание
-
переделать по комменту
-
-
-
-
-
- - -
-
enter — отправить · shift+enter — перенос строки
-
-
-
- - - - diff --git a/src/langgraph.json b/src/langgraph.json deleted file mode 100644 index 952ad60..0000000 --- a/src/langgraph.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "dependencies": ["."], - "graphs": { - "homework_agent": "src.agent:agent_graph" - } -} diff --git a/src/requirements.txt b/src/requirements.txt deleted file mode 100644 index ee5a8f1..0000000 --- a/src/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -langchain==1.2.15 -langchain-core==1.3.0 -langchain-openai==1.1.9 -langchain-community>=0.3.0 -langchain-mcp-adapters==0.2.1 -langgraph==1.1.8 -langgraph-cli[inmem]==0.4.23 -fastmcp==3.1.0 -gigachat==0.2.0 -requests>=2.31.0 -beautifulsoup4>=4.12.0 -python-dotenv>=1.0.0 -pydantic>=2.0.0 -rich==14.3.3 -markdownify==1.2.2 -httpx>=0.27.0 diff --git a/src/store.pckl b/src/store.pckl deleted file mode 100644 index 0a47446..0000000 Binary files a/src/store.pckl and /dev/null differ