pythonintermediate

LangChain Few-Shot Prompt Examples

Improve LLM accuracy with dynamic few-shot examples selected by semantic similarity.

python
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.prompts import FewShotChatMessagePromptTemplate, ChatPromptTemplate
from langchain_community.vectorstores import FAISS
from langchain_core.example_selectors import SemanticSimilarityExampleSelector

examples = [
    {'input': 'SELECT * FROM users', 'output': 'Retrieves all columns from the users table.'},
    {'input': 'SELECT COUNT(*) FROM orders', 'output': 'Counts total rows in the orders table.'},
    {'input': 'DELETE FROM logs WHERE ts < NOW() - INTERVAL 30 DAY', 'output': 'Deletes log entries older than 30 days.'},
]

selector = SemanticSimilarityExampleSelector.from_examples(examples, OpenAIEmbeddings(), FAISS, k=2)

example_prompt = ChatPromptTemplate.from_messages([('human','{input}'), ('ai','{output}')])
few_shot_prompt = FewShotChatMessagePromptTemplate(example_selector=selector, example_prompt=example_prompt)

full_prompt = ChatPromptTemplate.from_messages([('system','Explain the SQL query.'), few_shot_prompt, ('human','{input}')])
chain = full_prompt | ChatOpenAI(model='gpt-4o-mini')
print(chain.invoke({'input': 'UPDATE users SET active=0 WHERE last_login < NOW() - INTERVAL 90 DAY'}))

Use Cases

  • few-shot learning
  • dynamic examples
  • prompt optimization

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.