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