🏠 Домашнее задание

← К оглавлению урока

⚡ Что сдать (из лекции)

  • Цепочка LangChain: суммаризация текста по URL
  • PromptHub: описание 3 интересных промптов
  • (Доп.) Вопрос-ответ по небольшому текстовому файлу

Подготовка окружения

# Терминал (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=....

Задание (по лекции)

  1. Часть А — суммаризация по URL. Соберите цепочку LangChain, которая загружает веб-страницу (WebBaseLoader) и возвращает её краткое изложение через ChatGoogleGenerativeAI.
  2. Часть Б — PromptHub. Зарегистрируйтесь на PromptHub (или аналоге), изучите интерфейс. Найдите 3 интересных промпта и кратко опишите каждый: задача, переменные, где применить.
  3. Часть В (дополнительно). Постройте цепочку «вопрос-ответ по документам» для небольшого .txt-файла: загрузка → эмбеддинги → поиск → ответ по контексту.
  4. Прикрепите скриншоты: вывод суммаризации и (если делали) ответ 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.

Связь с разделами