feat: initial solution for task 2 - structured output with Pydantic and LangChain
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Задание 2: Сырой текст задания → плоская карточка
|
||||
|
||||
## Описание
|
||||
|
||||
Модуль разбора одного формулировки задания в компактную структурированную сводку.
|
||||
Использует LLM-цепочку (LangChain) + PydanticOutputParser для извлечения полей из неструктурированного текста.
|
||||
|
||||
## Стек
|
||||
|
||||
- Python 3.10+
|
||||
- langchain-core, langchain-openai, pydantic, python-dotenv
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
cp .env.example .env
|
||||
# Заполнить OPENAI_API_KEY в .env
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
## Что делает
|
||||
|
||||
1. Описывает Pydantic-модель `TaskCard` с полями: `title`, `subject`, `deadline_hint`, `deliverable_type`, `grading_hints`
|
||||
2. Собирает цепочку: шаблон промпта → LLM → PydanticOutputParser
|
||||
3. В промпте явно просит модель вернуть данные в формате, ожидаемом парсером
|
||||
4. Выводит валидированный объект (`model_dump()`) и краткую человекочитаемую сводку
|
||||
5. Один запрос — один проход, без уточняющих вопросов
|
||||
|
||||
## Пример вывода
|
||||
|
||||
```
|
||||
📝 Входной текст:
|
||||
"Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода."
|
||||
|
||||
=== Карточка задания ===
|
||||
Название: Мини-отчёт по LangChain
|
||||
Предмет: LangChain
|
||||
Дедлайн: к пятнице
|
||||
Тип результата: отчёт
|
||||
Критерии: полнота, пример кода
|
||||
|
||||
=== JSON (model_dump) ===
|
||||
{'title': 'Мини-отчёт по LangChain', 'subject': 'LangChain', ...}
|
||||
```
|
||||
Reference in New Issue
Block a user