Files
task-6a1484a292f7bbc573321443/README.md
T
2026-05-27 13:36:49 +00:00

67 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Task: "сырой текст задания → плоская карточка"
## Что делает проект
Программа принимает **неформальное описание** задачи (как в переписке или на сайте курса) и превращает его в **структурированный объект** `TaskCard`. Это позволяет дальше работать с данными автоматически – фильтровать, сохранять, передавать в пайплайн.
## Структура репозитория
| Файл | Назначение |
|------|------------|
| `models.py` | Pydantic‑модель `TaskCard`. |
| `main.py` | Точка входа: демонстрация цепочки LangChain, вывод примеров. |
| `requirements.txt` | Зависимости проекта. |
## Установка и запуск
```bash
# 1. Клонируйте репозиторий
git clone https://git.brojs.ru/KirillKutlakhmetov/task-6a1484a292f7bbc573321443.git
cd task-6a1484a292f7bbc573321443
# 2. Создайте виртуальное окружение (необязательно, но рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# 3. Установите зависимости
pip install -r requirements.txt
# 4. Настройте переменную окружения с токеном BroJS
export JOURNAL_MCP_PAT=YOUR_TOKEN_HERE # Linux/macOS
set JOURNAL_MCP_PAT=YOUR_TOKEN_HERE # Windows CMD
$env:JOURNAL_MCP_PAT="YOUR_TOKEN_HERE" # PowerShell
# 5. Запустите пример
python main.py
```
## Пример вывода
```text
Example 1:
Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода.
Parsed object (model_dump): {'title': 'мини‑отчёт', 'subject': 'LangChain', 'deadline_hint': 'к пятнице', 'deliverable_type': 'отчёт', 'grading_hints': ['полнота', 'пример кода']}
Human-readable summary:
Title: мини‑отчёт
Subject: LangChain
Deadline hint: к пятнице
Deliverable type: отчёт
Grading hints: полнота, пример кода
```
## Как это работает
1. **PromptTemplate** формирует запрос к LLM с инструкцией вернуть данные в формате, описанном `PydanticOutputParser`.
2. **ChatOpenAI** (BroJS) генерирует ответ.
3. Парсер преобразует JSON‑ответ в экземпляр `TaskCard`, гарантируя типизацию.
4. В `main.py` выводятся как сериализованный словарь, так и человекочитаемый резюме.
## Тесты
Тестов нет – проект рассчитан на демонстрацию работы цепочки. Для проверки можно запустить `python main.py` и убедиться в корректности вывода.
---
> **Важно**: токен BroJS (`JOURNAL_MCP_PAT`) должен быть действительным, иначе запрос к LLM завершится ошибкой.