5.2 KiB
Повторный экзамен: Исследовательский бриф (plan → steps → summary)
📖 Описание
solution.py реализует LangGraph‑агента, который по заданной теме генерирует короткий исследовательский бриф (½–1 страница).
Поток работы:
- Outline – LLM создаёт план из 4–5 пунктов по теме.
- Research step – по каждому пункту выполняется один запрос в веб‑поиск (Tavily) и формируется краткая заметка (5–8 предложений).
- 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!