Generative AI & LLMs Quick Reference
Quick reference for Generative AI, LLMs, RAG, and AI agents.
Table of Contents
Prompt Engineering
Basic Prompt
from openai import OpenAI
client = OpenAI()
resp>
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain machine learning"}
],
temperature=0.7,
max_tokens=500
)
Few-Shot Prompting
prompt = """
Example 1:
Input: "I love this product"
Sentiment: Positive
Example 2:
Input: "This is terrible"
Sentiment: Negative
Input: "It's okay"
Sentiment:
"""
Chain-of-Thought
prompt = """
Solve this step by step:
Question: If a train travels 120 km in 2 hours, what's its speed?
Let me think step by step:
1. Distance = 120 km
2. Time = 2 hours
3. Speed = Distance / Time
4. Speed = 120 / 2 = 60 km/h
"""
Generative Configuration
resp>
model="gpt-4",
messages=[...],
temperature=0.7, # 0.0-2.0, controls randomness
top_p=0.9, # 0.0-1.0, nucleus sampling
top_k=50, # Integer, top-k sampling
frequency_penalty=0.5, # -2.0 to 2.0, reduce repetition
presence_penalty=0.3, # -2.0 to 2.0, encourage new topics
max_tokens=500
)
Vector Databases
ChromaDB
import chromadb
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
# Create client
client = chromadb.Client()
# Create collection
collection = client.create_collection("documents")
# Add documents
collection.add(
documents=["Document 1", "Document 2"],
ids=["id1", "id2"],
embeddings=[[0.1, 0.2], [0.3, 0.4]]
)
# Query
results = collection.query(
query_embeddings=[[0.15, 0.25]],
n_results=2
)
Pinecone
from langchain_community.vectorstores import Pinecone
# Create vector store (check current Pinecone client + LangChain docs for auth)
vectorstore = Pinecone.from_documents(
documents=chunks,
embedding=embeddings,
index_name="documents"
)
# Query
results = vectorstore.similarity_search("query", k=3)
FAISS
from langchain_community.vectorstores import FAISS
# Create vector store
vectorstore = FAISS.from_documents(
documents=chunks,
embedding=embeddings
)
# Save
vectorstore.save_local("faiss_index")
# Load
vectorstore = FAISS.load_local("faiss_index", embeddings)
# Query
results = vectorstore.similarity_search("query", k=3)
RAG Systems
Basic RAG
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
# Create retriever
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
# Create QA chain
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o-mini", temperature=0),
chain_type="stuff",
retriever=retriever
)
# Query
result = qa_chain({"query": "What is AI?"})
RAG with Sources
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o-mini", temperature=0),
chain_type="stuff",
retriever=retriever,
return_source_documents=True
)
result = qa_chain({"query": "What is AI?"})
print(result["result"])
print(result["source_documents"])
Conversational RAG
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
chain = ConversationalRetrievalChain.from_llm(
llm=OpenAI(),
retriever=retriever,
memory=memory
)
result = chain({"question": "What is AI?"})
LangChain
Basic LLM
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7)
resp>"Explain machine learning")
print(response.content)
Prompt Templates
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_template("Tell me about {topic}")
chain = prompt | llm
resp>"topic": "AI"})
print(response.content)
Chains
# LCEL style (prompt | model) is preferred over LLMChain
chain = prompt | llm
resp>"topic": "AI"})
Document Loaders
from langchain_community.document_loaders import PyPDFLoader, TextLoader
# PDF
loader = PyPDFLoader("document.pdf")
documents = loader.load()
# Text
loader = TextLoader("document.txt")
documents = loader.load()
Text Splitters
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
chunks = splitter.split_documents(documents)
AI Agents
Basic Agent
from langchain.agents import initialize_agent, Tool
from langchain_openai import ChatOpenAI
tools = [
Tool(
name="Search",
func=search_function,
description="Search the web"
)
]
agent = initialize_agent(
tools,
ChatOpenAI(model="gpt-4o-mini", temperature=0),
agent="zero-shot-react-description",
verbose=True
)
result = agent.run("What is the weather today?")
ReAct Agent
from langchain.agents import create_react_agent
from langchain.agents import AgentExecutor
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "What is AI?"})
LangGraph Agent
from langgraph.graph import StateGraph, END
# Define state
class AgentState(TypedDict):
messages: List[BaseMessage]
# Create graph
workflow = StateGraph(AgentState)
workflow.add_node("agent", agent_node)
workflow.add_node("tools", tool_node)
workflow.set_entry_point("agent")
workflow.add_edge("agent", "tools")
workflow.add_edge("tools", "agent")
workflow.add_edge("agent", END)
app = workflow.compile()
Common Patterns
Caching
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache
set_llm_cache(InMemoryCache())
Streaming
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
llm = OpenAI(
streaming=True,
callbacks=[StreamingStdOutCallbackHandler()]
)
Error Handling
from langchain.schema import OutputParserException
try:
result = chain.run(input)
except OutputParserException as e:
print(f"Error: {e}")
Best Practices
Prompt Engineering
- Be specific and clear
- Provide context
- Use examples (few-shot)
- Specify output format
- Iterate and refine
RAG Systems
- Chunk size: 500-1000 tokens
- Chunk overlap: 10-20%
- Retrieve 3-5 documents
- Rerank for better quality
- Add citations
Cost Optimization
- Use GPT-3.5-turbo when possible
- Cache common queries
- Optimize prompt length
- Batch requests
- Monitor usage
Security
- Validate inputs
- Filter outputs
- Rate limiting
- API key security
- Data privacy
See Also: