67 lines
3.3 KiB
Markdown
67 lines
3.3 KiB
Markdown
# 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 завершится ошибкой.
|