langchain

Verified·Scanned 2/18/2026

This skill documents LangChain best practices for LCEL, memory persistence, RAG chunking, output parsers, retrieval, and agents. No security-relevant behaviors detected.

from clawhub.ai·vb294b9f·2.8 KB·0 installs
Scanned from 1.0.0 at b294b9f · Transparency log ↗
$ vett add clawhub.ai/ivangdavila/langchain

LCEL Basics

  • | pipes output to next — prompt | llm | parser
  • RunnablePassthrough() forwards input unchanged — use in parallel branches
  • RunnableParallel runs branches concurrently — {"a": chain1, "b": chain2}
  • .invoke() for single, .batch() for multiple, .stream() for tokens
  • Input must match expected keys — {"question": x} not just x if prompt expects {question}

Memory Gotchas

  • Memory doesn't auto-persist between sessions — save/load explicitly
  • ConversationBufferMemory grows unbounded — use ConversationSummaryMemory for long chats
  • Memory key must match prompt variable — memory_key="chat_history" needs {chat_history} in prompt
  • return_messages=True for chat models — False returns string for completion models

RAG Chunking

  • Chunk size affects retrieval quality — too small loses context, too large dilutes relevance
  • Chunk overlap prevents cutting mid-sentence — 10-20% overlap typical
  • RecursiveCharacterTextSplitter preserves structure — splits on paragraphs, then sentences
  • Embedding dimension must match vector store — mixing models causes silent failures

Output Parsers

  • PydanticOutputParser needs format instructions in prompt — call .get_format_instructions()
  • Parser failures aren't always loud — malformed JSON may partially parse
  • OutputFixingParser retries with LLM — wraps another parser, fixes errors
  • with_structured_output() on chat models — cleaner than manual parsing for supported models

Retrieval

  • similarity_search returns documents — .page_content for text
  • k parameter controls results count — more isn't always better, noise increases
  • Metadata filtering before similarity — filter={"source": "docs"} in most vector stores
  • max_marginal_relevance_search for diversity — avoids redundant similar chunks

Agents

  • Agents decide tool order dynamically — chains are fixed sequence
  • Tool descriptions matter — agent uses them to decide when to call
  • handle_parsing_errors=True — prevents crash on malformed agent output
  • Max iterations prevents infinite loops — max_iterations=10 default may be too low

Common Mistakes

  • Prompt template variables case-sensitive — {Question}{question}
  • Chat models need message format — ChatPromptTemplate, not PromptTemplate
  • Callbacks not propagating — pass config={"callbacks": [...]} through chain
  • Rate limits crash silently sometimes — wrap in retry logic
  • Token count exceeds context — use trim_messages or summarization for long histories