diff --git a/answer.md b/answer.md deleted file mode 100644 index f78e115..0000000 --- a/answer.md +++ /dev/null @@ -1,26 +0,0 @@ -{ - "task": { - "_id": "69dd4221f309a98be0006b2e", - "title": "сырой текст задания → плоская карточка", - "description": "## Контекст проекта\n\nВ рамках курса вы собираете **своего ассистента по учёбе**: программа должна принимать неформальное описание задачи (как в переписке или на сайте курса) и превращать его в **данные, с которыми дальше можно работать в коде** (фильтровать, сохранять, передавать следующему шагу пайплайна). Здесь вы делаете **модуль разбора одной формулировки** в компактную сводку.\n\n## Цель\n\nНаучиться из **одного** пользовательского текста получить **проверяемый** набор полей без диалога и без «ручного» разбора строки в Python.\n\n## Стек и установка\n\n- Python 3.10+\n- Пакеты: `langchain-core`, `langchain-openai`, `pydantic` (версии — как рекомендует преподаватель).\n- Подключение к модели через переменные окружения или настройки клиента (конкретную модель в задании не фиксируем).\n\nУстановка (пример):\n\n```bash\npip install langchain-core langchain-openai pydantic python-dotenv\n```\n\n## Условия сценария (важно для выбора способа)\n\n- Вход: **одна** строка или короткий абзац — формулировка задания от «преподавателя» (выдуманная).\n- Нужно **сразу** получить объект с полями, например: `title`, `subject`, `deadline_hint` (строка в свободной форме), `deliverable_type` (что сдать: отчёт, код, презентация…), `grading_hints` (список строк — что упомянуто про оценку).\n- **Нет** уточняющих вопросов: модель не ведёт переписку, только один ответ на один запрос.\n- Вложенность минимальная: один уровень списка, без деревьев и без ссылок «узел → дети».\n\n## Что нужно сделать\n\n1. Описать Pydantic-модель карточки задания с полями выше (имена можно слегка изменить, смысл сохранить).\n2. Собрать цепочку: шаблон промпта → вызов языковой модели → парсер, который гарантирует тип результата `BaseModel` (или эквивалент по соглашению курса).\n3. В промпте явно попросить модель вернуть данные в формате, который ожидает ваш парсер.\n4. Вывести в консоль и **валидированный объект** (например `model_dump()`), и краткую человекочитаемую сводку.\n\n## Подсказки\n\n```python\nfrom pydantic import BaseModel, Field\nfrom langchain_core.prompts import PromptTemplate\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.output_parsers import PydanticOutputParser\n\n# карточка задания — ваши поля и описания Field(...)\n```\n\n```python\nparser = PydanticOutputParser(pydantic_object=ВашаМодель)\nprompt = PromptTemplate(\n template=\"...\\n{format_instructions}\",\n input_variables=[...],\n partial_variables={\"format_instructions\": parser.get_format_instructions()},\n)\nchain = prompt | llm | parser\n```\n\n## Ожидаемый результат\n\nПример входа:\n\n> Сдайте к пятнице мини-отчёт по LangChain: 2 страницы, упор на агентов. Оценка: за полноту и за пример кода.\n\nПример вывода (фрагмент):\n\n```text\ntitle: ...\nsubject: ...\ndeadline_hint: к пятнице\ndeliverable_type: отчёт\ngrading_hints: ['полнота', 'пример кода']\n```\n\n## Критерии оценки\n\n| Критерий | Баллы |\n|----------|-------|\n| Модель данных отражает сценарий (поля + типы) | 2 |\n| Один запрос — один проход по цепочке, без лишнего диалога | 2 |\n| Используется парсер структуры, а не «разбор руками» | 2 |\n| Промпт согласован с инструкциями формата | 2 |\n| Вывод: и структура, и краткая сводка | 2 |\n| **Итого** | **10** |\n\n## Документация\n\n- [Structured output (LangChain)](https://docs.langchain.com/oss/python/langchain/structured-output)", - "course": "698b49da77cb6d4d2e43ce78", - "lesson": { - "_id": "69bc15e1b8fb4038bdc7b5c4", - "name": "Generating Structured Outputs with AI Models Union + Enums + StructuredOutput", - "date": "2026-03-19T15:30:00.000Z", - "id": "69bc15e1b8fb4038bdc7b5c4" - }, - "gradeType": "passfail", - "maxScore": 100, - "assignmentType": "individual", - "allowSubmissions": true, - "allowRevisions": false, - "creator": { - "sub": "8ae348ab-f32e-46c7-9960-8b7fdf0e4c0e", - "name": "Александр Примаков" - }, - "teamGrades": [], - "created": "2026-04-13T19:21:05.241Z", - "id": "69dd4221f309a98be0006b2e" - } -} \ No newline at end of file