🐛 Частые ошибки

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

⚡ Топ-3 ошибки

  • Путаница пакетов langchain_* (не тот импорт)
  • Не передан / не подхвачен API-ключ
  • Длинный документ без разбиения на чанки → плохой поиск/переполнение контекста

1. Путаница пакетов и импортов

LangChain разбит на пакеты: ядро — langchain/langchain-core, интеграции — langchain-google-genai, загрузчики сообщества — langchain-community. Частая ошибка — импортировать загрузчик из ядра.

Симптом: ImportError / ModuleNotFoundError. Решение: ставьте нужные пакеты и берите WebBaseLoader/PyPDFLoader из langchain_community.document_loaders.

2. Забытый или не подхваченный ключ

Без ключа модель и эмбеддинги не работают. Часть библиотек Google ждёт ключ именно в GOOGLE_API_KEY, а не в GEMINI_API_KEY.

if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = os.getenv("GEMINI_API_KEY")

3. Длинный документ без разбиения на чанки

Если эмбеддить весь документ целиком, поиск становится грубым, а в промпт LLM можно не уместить контекст. Разбивайте на фрагменты сплиттером (RecursiveCharacterTextSplitter) — поиск точнее.

4. Использование устаревшего LLMChain

Код из старых статей на LLMChain выдаёт предупреждения об устаревании. Используйте LCEL: chain = prompt | llm | StrOutputParser(). См. Старый vs Новый.

5. Несоответствие переменных шаблона и входа

Имя переменной в from_template("... {context} ...") должно совпадать с ключом в invoke({"context": ...}). Иначе — ошибка о недостающей/лишней переменной.

6. Доверять ответу как «факту из документа»

LLM может «додумать» ответ, даже если в найденных фрагментах его нет (галлюцинация). В промпте явно просите отвечать только по контексту и предусмотрите ответ «в документе нет информации».

⚠️ Тексты ошибок и поведение зависят от версий LangChain и SDK Google.