Files

5.2 KiB

Повторный экзамен: Исследовательский бриф (plan → steps → summary)

📖 Описание

solution.py реализует LangGraph‑агента, который по заданной теме генерирует короткий исследовательский бриф (½–1 страница).
Поток работы:

  1. Outline – LLM создаёт план из 4–5 пунктов по теме.
  2. Research step – по каждому пункту выполняется один запрос в веб‑поиск (Tavily) и формируется краткая заметка (5–8 предложений).
  3. Synthesize – все заметки объединяются в связный бриф с заголовками.

Итоговый бриф сохраняется в поле final_brief и выводится в консоль.

⚠️ Для работы требуется ключ Tavily и доступ к OpenAI (или Ollama).

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

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

# Установите зависимости
pip install langgraph langchain-openai langchain-tavily tavily-python python-dotenv

⚙️ Конфигурация

Создайте файл .env в корне проекта и добавьте:

TAVILY_API_KEY=YOUR_TAVILY_KEY
OPENAI_API_KEY=YOUR_OPENAI_KEY   # если используете OpenAI
# или
OLLAMA_BASE_URL=http://localhost:11434   # если используете Ollama

Важно: ключи не должны попадать в репозиторий. Добавьте .env в .gitignore.

▶️ Запуск

python solution.py

После запуска скрипт запросит у вас тему исследования, затем последовательно выполнит все шаги и выведет финальный бриф.

Запуск отдельных частей

Если вы хотите протестировать отдельный узел вручную, можно импортировать его из solution.py и вызвать напрямую:

from solution import outline_node, research_step, synthesize, BriefState

state = BriefState(
    topic="Artificial Intelligence in Healthcare",
    outline=None,
    step_index=0,
    notes=[],
    final_brief=None
)

# 1. Outline
state = outline_node(state)
print(state["outline"])

# 2. Research step (первый пункт)
state = research_step(state)
print(state["notes"][-1])

# 3. Synthesize
state = synthesize(state)
print(state["final_brief"])

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

$ python solution.py
Введите тему исследования: Искусственный интеллект в здравоохранении

=== План исследования ===
1. История и развитие ИИ в медицине
2. Текущие применения: диагностика, лечение, управление данными
3. Этические и юридические вопросы
4. Будущие перспективы и вызовы

=== Шаг 1/4: История и развитие ИИ в медицине ===
Заметка: ИИ в медицине появился в 1950‑х годах, когда...
...

=== Финальный бриф ===
# Искусственный интеллект в здравоохранении

## 1. История и развитие ИИ в медицине
ИИ в медицине появился в 1950‑х годах, когда...

## 2. Текущие применения
...

## 3. Этические и юридические вопросы
...

## 4. Будущие перспективы и вызовы
...

В реальном запуске каждая заметка будет содержать 5–8 предложений, а финальный бриф – около ½–1 страницы текста.

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

.
├── solution.py          # Основной скрипт с реализацией LangGraph
├── .env                 # Переменные окружения (не коммитить)
├── README.md            # Это файл
└── requirements.txt     # (опционально) список зависимостей

🧪 Тестирование

Для быстрой проверки можно использовать pytest:

pip install pytest
pytest

В проекте пока нет тестов, но вы можете добавить их, проверяя корректность выходных данных узлов.

📚 Полезные ссылки


Happy coding!