Files
task-6a1d75db-povtornyy-ekz…/README.md
T

139 lines
5.2 KiB
Markdown

# Повторный экзамен: Исследовательский бриф (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!**