SynfraCore
Synfracore
Start Learning
Navigation

Academies

Platform

RoadmapsLabsCertificationsInterviewPYQsAI AssistantCareer
Start Learning Free🗺️ Learning Roadmaps

LangChainFundamentals

Core concepts and commands — hands-on from the start

✍️
Written by senior engineers. Reviewed for technical accuracy.· Updated 2025 · SynfraCore LangChain Team
Expert Content

LangChain — Building LLM Applications

LangChain is a framework for building applications powered by language models. It provides abstractions for chains (sequences of LLM calls), tools, memory, and agents that work across any LLM provider.

Core Concepts

python
# pip install langchain langchain-anthropic langchain-openai

from langchain_anthropic import ChatAnthropic
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser

# 1. The LLM
llm = ChatAnthropic(model="claude-sonnet-4-6")

# 2. Prompt template
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a {role}. Be concise."),
    ("human", "{question}")
])

# 3. Chain (LCEL - LangChain Expression Language)
chain = prompt | llm | StrOutputParser()

# 4. Invoke
result = chain.invoke({"role": "DevOps expert", "question": "What is Kubernetes?"})
print(result)

# Streaming
for chunk in chain.stream({"role": "DevOps expert", "question": "Explain Docker"}):
    print(chunk, end="", flush=True)

# Batch
results = chain.batch([
    {"role": "expert", "question": "What is Terraform?"},
    {"role": "expert", "question": "What is Ansible?"},
])

RAG with LangChain

python
from langchain_anthropic import ChatAnthropic
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain.document_loaders import DirectoryLoader, TextLoader

# Load documents
loader = DirectoryLoader("./docs", glob="**/*.md", loader_cls=TextLoader)
documents = loader.load()

# Split into chunks
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)

# Create vector store
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")

# Build RAG chain
llm = ChatAnthropic(model="claude-sonnet-4-6")
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever(search_kwargs={"k": 5}),
    return_source_documents=True
)

result = qa_chain.invoke({"query": "How do I deploy to Kubernetes?"})
print(result["result"])
print("Sources:", [d.metadata["source"] for d in result["source_documents"]])

Memory and Conversation History

python
from langchain.memory import ConversationBufferWindowMemory
from langchain.chains import ConversationChain

memory = ConversationBufferWindowMemory(k=10)  # Keep last 10 turns

conversation = ConversationChain(
    llm=ChatAnthropic(model="claude-sonnet-4-6"),
    memory=memory,
    verbose=False
)

conversation.predict(input="What is Docker?")
conversation.predict(input="How is it different from Kubernetes?")
conversation.predict(input="Which should I learn first?")
# Model remembers the entire conversation context
Share:
Join our Community
Daily tips, job alerts, interview help — join engineers learning together
Up Next
LangChainIntermediate
Real-world patterns, best practices, and deeper topics
Also Worth Exploring
← Back to all LangChain modules
InstallationIntermediate