Повторный экзамен: Исследовательский бриф (план → шаги → сводка): README.md
This commit is contained in:
@@ -1,3 +1,139 @@
|
||||
# task-6a1d75db-povtornyy-ekzamen-issledo
|
||||
# Повторный экзамен: Исследовательский бриф (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!**
|
||||
Reference in New Issue
Block a user