Планирующий агент – экзаменационный проект

Описание проекта

Проект реализует планировочный агент на основе LLM (Large Language Model) из библиотеки langchain.
Агент принимает список целей и генерирует последовательность действий, которые необходимо выполнить для их достижения.

⚠️ Весь код находится в одном файле solution.py.
Для работы требуется ключ OpenAI – переменная окружения OPENAI_API_KEY.


Структура проекта

.
├── solution.py          # Основной скрипт с реализацией агента
└── README.md            # Это файл

Установка зависимостей

# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Установите зависимости из requirements.txt (или вручную)
pip install langchain fastapi pydantic rich openai

Важно
langchain автоматически установит openai, но иногда требуется явно установить пакет openai.


Настройка переменной окружения

export OPENAI_API_KEY="sk-XXXXXXXXXXXXXXXXXXXX"
# Windows:
set OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX

Если ключ не задан, скрипт завершится с ошибкой.


Запуск

1. Простой запуск из командной строки

python solution.py

Скрипт запустит интерактивный режим:
пользователь вводит список целей (через запятую), после чего агент выводит план действий.

Пример

Введите цели, разделённые запятыми:
Купить хлеб, купить молоко
План действий:
1. Посетить ближайший супермаркет.
2. Составить список необходимых продуктов: хлеб, молоко.
3. Проверить наличие скидок на продукты.
...

2. Использование как модуля

from solution import PlanningAgent

agent = PlanningAgent()
goals = ["построить дом", "обучиться Python"]
plan = agent.generate_plan(goals)
print(plan)

Пример использования в коде

# example.py
from solution import PlanningAgent

if __name__ == "__main__":
    agent = PlanningAgent()
    goals = ["построить дом", "обучиться Python"]
    plan_text = agent.generate_plan(goals)
    print("Сгенерированный план:")
    print(plan_text)

Запуск:

python example.py

Что делает класс PlanningAgent

Метод Описание
__init__(self, model_name="gpt-3.5-turbo") Инициализация LLM и шаблона Prompt.
generate_plan(self, goals: List[str]) -> str Принимает список целей, формирует запрос к модели и возвращает текст плана действий.

Тесты

В проекте нет автоматических тестов – это учебный скрипт.
Для проверки можно написать простые unit‑тесты, например:

def test_generate_plan():
    agent = PlanningAgent()
    plan = agent.generate_plan(["построить дом"])
    assert isinstance(plan, str)
    assert "дом" in plan.lower()

Лицензия

MIT © 2026.
(Добавьте свой собственный текст лицензии при необходимости.)


S
Description
Решения домашних заданий
Readme 35 KiB
Languages
Python 100%