Подготовка окружения
# Терминал (Windows PowerShell)
python -m venv venv
venv\Scripts\Activate.ps1
pip install langchain langchain-google-genai langchain-community ^
beautifulsoup4 pypdf python-dotenv
pip freeze > requirements.txt
Ключ Gemini — из Google AI Studio, в .env (как в уроке 03): GEMINI_API_KEY=....
Задание (по лекции)
- Часть А — суммаризация по URL. Соберите цепочку LangChain, которая загружает веб-страницу (
WebBaseLoader) и возвращает её краткое изложение черезChatGoogleGenerativeAI. - Часть Б — PromptHub. Зарегистрируйтесь на PromptHub (или аналоге), изучите интерфейс. Найдите 3 интересных промпта и кратко опишите каждый: задача, переменные, где применить.
- Часть В (дополнительно). Постройте цепочку «вопрос-ответ по документам» для небольшого
.txt-файла: загрузка → эмбеддинги → поиск → ответ по контексту. - Прикрепите скриншоты: вывод суммаризации и (если делали) ответ Q&A; для части Б — описание промптов.
Структура проекта
ai-lesson-05/
├── .env # GEMINI_API_KEY=... (в .gitignore!)
├── .gitignore # .env, venv/
├── summarize.py # часть А: цепочка суммаризации URL
├── qa_file.py # часть В: вопрос-ответ по файлу
├── prompthub.md # часть Б: описание 3 промптов
└── requirements.txt
Каркас решения (часть А)
# summarize.py
import os
from dotenv import load_dotenv
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_community.document_loaders import WebBaseLoader
load_dotenv()
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash",
google_api_key=os.getenv("GEMINI_API_KEY"))
docs = WebBaseLoader("ВАШ_URL").load()
prompt = ChatPromptTemplate.from_template(
"Сделай краткое изложение: {context}")
chain = create_stuff_documents_chain(llm, prompt)
print(chain.invoke({"context": docs}))
Проверка в VS Code
- Терминал:
python summarize.py— должен вывестись связный пересказ страницы. - Отладка (F5): точка останова после
loader.load()— посмотрите, что попало вdocs. - Если страница большая и упирается в лимит — возьмите статью покороче или добавьте разбиение на чанки.
launch.json: конфигурация «Python: Current File», запуск из активногоvenv.
Связь с разделами
- Цепочки и компоненты — 📖 Теория / 💻 Примеры
- LCEL и устаревший LLMChain — ⚖️ Старый vs Новый
- Q&A по документам и чанки — ✅ Решения / 🐛 Ошибки