Экзамен: Планирующий агент: README.md

This commit is contained in:
2026-05-28 16:33:31 +00:00
parent c7d71d0325
commit 6f259b80d8
+43 -93
View File
@@ -1,23 +1,19 @@
# Планирующий агент – экзаменационный проект # Планирующий агент – экзаменационный проект
## Описание проекта ## Описание проекта
Проект реализует **планировочный агент** на основе LLM (Large Language Model) из библиотеки `langchain`. В этом репозитории реализован **планировщик задач** на основе LLM (Large Language Model).
Агент принимает список целей и генерирует последовательность действий, которые необходимо выполнить для их достижения. Агент принимает целевое задание и генерирует список шагов, которые необходимо выполнить для достижения цели.
> ⚠️ Весь код находится в одном файле `solution.py`. Ключевые технологии:
> Для работы требуется ключ OpenAI – переменная окружения `OPENAI_API_KEY`. - `langgraph` – библиотека для построения графов состояний с использованием LLM.
- `langchain-openai` – обёртка над OpenAI API (можно заменить на `langchain-ollama`, если хотите использовать локальный LLM).
---
## Структура проекта ## Структура проекта
``` ```
. ├── solution.py # Основной скрипт, реализующий планировщик
── solution.py # Основной скрипт с реализацией агента ── README.md # Текущий файл
└── README.md # Это файл
``` ```
---
## Установка зависимостей ## Установка зависимостей
```bash ```bash
@@ -25,111 +21,65 @@
python -m venv .venv python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости из requirements.txt (или вручную) # Установите зависимости из requirements.txt (если есть) или вручную:
pip install langchain fastapi pydantic rich openai pip install langgraph langchain-openai openai # для OpenAI API
``` ```
> **Важно** > **Важно**
> `langchain` автоматически установит `openai`, но иногда требуется явно установить пакет `openai`. > Для работы с `ChatOpenAI` необходимо иметь переменную окружения `OPENAI_API_KEY`.
> ```bash
> export OPENAI_API_KEY="sk-..."
> ```
--- Если вы хотите использовать Ollama вместо OpenAI, замените импорт и вызов LLM:
## Настройка переменной окружения ```python
from langchain_ollama import ChatOllama
```bash # ...
export OPENAI_API_KEY="sk-XXXXXXXXXXXXXXXXXXXX" llm = ChatOllama(model="llama3.1", temperature=0.2)
# Windows:
set OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX
``` ```
Если ключ не задан, скрипт завершится с ошибкой. ## Запуск скрипта
--- `solution.py` – это самодостаточный скрипт, который можно запустить напрямую:
## Запуск
### 1. Простой запуск из командной строки
```bash ```bash
python solution.py python solution.py
``` ```
Скрипт запустит интерактивный режим: При запуске будет предложено ввести цель (goal). После ввода агент сгенерирует список шагов и выведет их на экран.
пользователь вводит список целей (через запятую), после чего агент выводит план действий.
> **Пример** ### Пример запуска
> ```
> Введите цели, разделённые запятыми:
> Купить хлеб, купить молоко
> План действий:
> 1. Посетить ближайший супермаркет.
> 2. Составить список необходимых продуктов: хлеб, молоко.
> 3. Проверить наличие скидок на продукты.
> ...
> ```
### 2. Использование как модуля
```python
from solution import PlanningAgent
agent = PlanningAgent()
goals = ["построить дом", "обучиться Python"]
plan = agent.generate_plan(goals)
print(plan)
```
---
## Пример использования в коде
```python
# example.py
from solution import PlanningAgent
if __name__ == "__main__":
agent = PlanningAgent()
goals = ["построить дом", "обучиться Python"]
plan_text = agent.generate_plan(goals)
print("Сгенерированный план:")
print(plan_text)
```
Запуск:
```bash ```bash
python example.py $ python solution.py
Введите цель: Создать веб‑страницу для портфолио разработчика.
Генерация плана...
Шаги:
1. Составить структуру HTML (header, main, footer).
2. Подобрать цветовую схему и шрифты.
3. Реализовать адаптивный дизайн с CSS Grid/Flexbox.
4. Добавить интерактивные элементы на JavaScript.
5. Оптимизировать загрузку ресурсов и проверить SEO.
``` ```
--- ## Как использовать в другом коде
## Что делает класс `PlanningAgent`
| Метод | Описание |
|-------|----------|
| `__init__(self, model_name="gpt-3.5-turbo")` | Инициализация LLM и шаблона Prompt. |
| `generate_plan(self, goals: List[str]) -> str` | Принимает список целей, формирует запрос к модели и возвращает текст плана действий. |
---
## Тесты
> В проекте нет автоматических тестов – это учебный скрипт.
> Для проверки можно написать простые unit‑тесты, например:
```python ```python
def test_generate_plan(): from solution import plan_steps, PlannerState
agent = PlanningAgent()
plan = agent.generate_plan(["построить дом"]) state = {"goal": "Написать научную статью по машинному обучению"}
assert isinstance(plan, str) new_state = plan_steps(state)
assert "дом" in plan.lower() print(new_state["steps"])
``` ```
--- ## Возможные улучшения
- Добавить сохранение истории планов в файл.
- Интегрировать с `langgraph` для более сложных цепочек действий (например, проверка корректности шагов).
- Подключить к UI (Streamlit/Gradio) для интерактивного взаимодействия.
## Лицензия ## Лицензия
MIT © 2026. MIT © 2026
(Добавьте свой собственный текст лицензии при необходимости.)
---