Files

85 lines
3.6 KiB
Markdown
Raw Permalink 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.
# Планирующий агент – экзаменационный проект
## Описание проекта
В этом репозитории реализован **планировщик задач** на основе 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