# Повторный экзамен: Исследовательский бриф (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). ## 🛠️ Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости pip install langgraph langchain-openai langchain-tavily tavily-python python-dotenv ``` ## ⚙️ Конфигурация Создайте файл `.env` в корне проекта и добавьте: ```dotenv TAVILY_API_KEY=YOUR_TAVILY_KEY OPENAI_API_KEY=YOUR_OPENAI_KEY # если используете OpenAI # или OLLAMA_BASE_URL=http://localhost:11434 # если используете Ollama ``` > **Важно**: ключи не должны попадать в репозиторий. Добавьте `.env` в `.gitignore`. ## ▶️ Запуск ```bash python solution.py ``` После запуска скрипт запросит у вас тему исследования, затем последовательно выполнит все шаги и выведет финальный бриф. ### Запуск отдельных частей Если вы хотите протестировать отдельный узел вручную, можно импортировать его из `solution.py` и вызвать напрямую: ```python 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"]) ``` ## 📄 Пример использования ```bash $ 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`: ```bash pip install pytest pytest ``` > В проекте пока нет тестов, но вы можете добавить их, проверяя корректность выходных данных узлов. ## 📚 Полезные ссылки - [LangGraph documentation](https://langgraph.org/) - [LangChain Tavily integration](https://github.com/langchain-ai/langchain/tree/main/libs/langchain-tavily) - [Tavily API docs](https://tavily.com/docs) --- **Happy coding!**