# Планирующий агент – экзаменационный проект ## Описание проекта В этом репозитории реализован **планировщик задач** на основе LLM (Large Language Model). Агент принимает целевое задание и генерирует список шагов, которые необходимо выполнить для достижения цели. Ключевые технологии: - `langgraph` – библиотека для построения графов состояний с использованием LLM. - `langchain-openai` – обёртка над OpenAI API (можно заменить на `langchain-ollama`, если хотите использовать локальный LLM). ## Структура проекта ``` ├── solution.py # Основной скрипт, реализующий планировщик └── README.md # Текущий файл ``` ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости из requirements.txt (если есть) или вручную: pip install langgraph langchain-openai openai # для OpenAI API ``` > **Важно** > Для работы с `ChatOpenAI` необходимо иметь переменную окружения `OPENAI_API_KEY`. > ```bash > export OPENAI_API_KEY="sk-..." > ``` Если вы хотите использовать Ollama вместо OpenAI, замените импорт и вызов LLM: ```python from langchain_ollama import ChatOllama # ... llm = ChatOllama(model="llama3.1", temperature=0.2) ``` ## Запуск скрипта `solution.py` – это самодостаточный скрипт, который можно запустить напрямую: ```bash python solution.py ``` При запуске будет предложено ввести цель (goal). После ввода агент сгенерирует список шагов и выведет их на экран. ### Пример запуска ```bash $ python solution.py Введите цель: Создать веб‑страницу для портфолио разработчика. Генерация плана... Шаги: 1. Составить структуру HTML (header, main, footer). 2. Подобрать цветовую схему и шрифты. 3. Реализовать адаптивный дизайн с CSS Grid/Flexbox. 4. Добавить интерактивные элементы на JavaScript. 5. Оптимизировать загрузку ресурсов и проверить SEO. ``` ## Как использовать в другом коде ```python from solution import plan_steps, PlannerState state = {"goal": "Написать научную статью по машинному обучению"} new_state = plan_steps(state) print(new_state["steps"]) ``` ## Возможные улучшения - Добавить сохранение истории планов в файл. - Интегрировать с `langgraph` для более сложных цепочек действий (например, проверка корректности шагов). - Подключить к UI (Streamlit/Gradio) для интерактивного взаимодействия. ## Лицензия MIT © 2026