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

70 lines
3.2 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 6a1484a292f7bbc573321443 "сырой текст задания → плоская карточка"
## Что делает проект
Этот репозиторий содержит решение задачи «Преобразовать свободный текст описания задания в структурированную карточку». В качестве примера используется **LangChain** и **Pydantic** для генерации JSON‑объекта, который можно дальше использовать в пайплайне.
## Структура репозитория
| Файл | Назначение |
|------|------------|
| `main.py` | Точка входа. Содержит модель данных, цепочку LangChain и примеры использования. |
| `requirements.txt` | Зависимости проекта (без точных версий). |
| `README.md` | Текущий файл – описание проекта, инструкции по установке и запуску. |
## Установка
```bash
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
```
## Как запустить
```bash
python main.py
```
Скрипт выполнит три примера преобразования текста в карточку и выведет результат.
## Архитектура решения
1. **Pydantic‑модель** `TaskCard` описывает структуру выходных данных: название, предмет, подсказка по сроку, тип сдачи и список критериев оценки.
2. **PromptTemplate + PydanticOutputParser** – шаблон запроса к LLM с инструкцией вернуть JSON в соответствии с моделью.
3. **ChatOpenAI** – подключение к модели BroJS (см. `model`, `base_url` и переменную окружения `JOURNAL_MCP_PAT`).
4. Асинхронная функция `parse_task()` объединяет цепочку: шаблон → LLM → парсер.
5. В блоке `__main__` три примера текста, которые проходят через `parse_task()` и печатаются в читаемом виде.
## Пример вывода
```
Example 1:
Raw text:
Сдайте к пятнице мини‑отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода.
Parsed card:
{
"title": "Мини‑отчёт по LangChain",
"subject": null,
"deadline_hint": "к пятнице",
"deliverable_type": "отчёт",
"grading_hints": [
"полнота",
"пример кода"
]
}
```
## Зависимости
- `langchain-core>=0.3.0`
- `langchain-openai>=0.3.0`
- `pydantic>=2.0`
- `python-dotenv>=1.0.0`
Все версии указаны с оператором `>=`, как требуется в задании.