diff --git a/README.md b/README.md index b186671..4cf7661 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,139 @@ -# task-6a1d75db-povtornyy-ekzamen-issledo +# Повторный экзамен: Исследовательский бриф (plan → steps → summary) -Решения домашних заданий \ No newline at end of file +## 📖 Описание + +`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!** \ No newline at end of file