LangChain Chain Builder
Prompt
Design a LangChain application for: Use case: {use_case}. Input: {input_type}. Output: {output_type}. Data sources: {data_sources}. Model preference: {model}. Provide: architecture diagram (text), chain type selection with rationale, prompt templates, retrieval strategy (if RAG), memory configuration, and Python code skeleton with key components.
Variables
use_case
input_type
output_type
data_sources
model
About This Prompt
Describe an AI application flow and get a LangChain implementation plan with specific chain types, prompts, and code structure.
Example Output
**LangChain App: Customer Support Q&A Bot with RAG**
**Architecture:**
User Question → Retriever (vector search) → Context + Question → LLM Chain → Answer + Sources
**Chain Type:** RetrievalQA with stuff method
**Rationale:** FAQ-style questions with short relevant passages. Stuff method works because context chunks will be small (<2K tokens per answer).
**Retrieval Strategy:**
- Embedding model: text-embedding-3-small (cost-effective)
- Vector store: Chroma (local dev) / Pinecone (production)
- Chunk size: 500 tokens, overlap: 50 tokens
- Top-k: 4 documents per query
**Code Skeleton:**
```python
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
# 1. Load and chunk documents
loader = DirectoryLoader('./knowledge_base', glob='**/*.md')
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# 2. Create vector store
embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory='./chroma_db')
# 3. Build chain
llm = ChatOpenAI(model='gpt-4o', temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type='stuff',
retriever=vectorstore.as_retriever(search_kwargs={'k': 4}),
)
```
Usage Tips
- Choose chain type based on context size
- Start with stuff method and scale to map_reduce
- Use temperature=0 for factual Q&A
- Add source attribution for trust