๐ Using Snippets: Reusable Context Blocksยถ
Snippets are a powerful feature in CellMage that allow you to inject reusable content into your LLM conversations. This tutorial will show you how to create and use snippets effectively.
๐งฉ What are Snippets?ยถ
Snippets are text files containing code, documentation, instructions, or any other content that you want to provide as context to your LLM. Unlike personas (which define the LLMโs behavior), snippets provide information that the LLM can reference or analyze in its responses.
Common uses for snippets include:
Providing code examples for the LLM to analyze
Including documentation that the LLM should reference
Sharing project-specific context for consistent responses
Giving the LLM access to data structures or schemas
๐ Snippet Directory Structureยถ
By default, CellMage looks for snippets in a directory called llm_snippets under your base directory. You can control the base directory for all working files (including snippets) using the CELLMAGE_BASE_DIR environment variable:
# Set the base directory for all CellMage working files
export CELLMAGE_BASE_DIR=/path/to/your/project
Snippets will then be stored in $CELLMAGE_BASE_DIR/llm_snippets.
You can also specify additional snippet directories using the CELLMAGE_SNIPPETS_DIR and CELLMAGE_SNIPPETS_DIRS environment variables (these paths can be absolute or relative to the base directory).
# In your .env file
CELLMAGE_SNIPPETS_DIRS=~/global_snippets,./project_specific_snippets
โจ Creating Your First Snippetsยถ
Letโs create two simple snippets: a Python utility function and a project description.
# First, create the snippets directory if it doesn't exist
!mkdir -p $CELLMAGE_BASE_DIR/llm_snippets
Python Utility Function Snippetยถ
Create the file $CELLMAGE_BASE_DIR/llm_snippets/data_utils.py:
def calculate_metrics(data_series):
"""
Calculate common statistical metrics for a numeric data series.
Args:
data_series (list or array-like): Numeric data
Returns:
dict: Dictionary containing calculated metrics
"""
import numpy as np
from scipy import stats
return {
"count": len(data_series),
"mean": np.mean(data_series),
"median": np.median(data_series),
"std_dev": np.std(data_series),
"min": np.min(data_series),
"max": np.max(data_series),
"quartiles": np.percentile(data_series, [25, 50, 75]),
"skewness": stats.skew(data_series),
"kurtosis": stats.kurtosis(data_series)
}
def detect_outliers(data_series, method="iqr", threshold=1.5):
"""
Detect outliers in a data series using specified method.
Args:
data_series (list or array-like): Numeric data
method (str): Method to use ("iqr" or "zscore")
threshold (float): Threshold for outlier detection
Returns:
tuple: (outlier_indices, outlier_values)
"""
import numpy as np
if method == "iqr":
q1, q3 = np.percentile(data_series, [25, 75])
iqr = q3 - q1
lower_bound = q1 - (threshold * iqr)
upper_bound = q3 + (threshold * iqr)
outlier_indices = np.where((data_series < lower_bound) | (data_series > upper_bound))[0]
elif method == "zscore":
z_scores = (data_series - np.mean(data_series)) / np.std(data_series)
outlier_indices = np.where(np.abs(z_scores) > threshold)[0]
else:
raise ValueError(f"Unknown method: {method}")
outlier_values = [data_series[i] for i in outlier_indices]
return outlier_indices, outlier_values
Project Description Snippetยถ
Create the file $CELLMAGE_BASE_DIR/llm_snippets/project_description.md:
# Customer Analysis Project
## Project Goal
Analyze customer purchase patterns to identify opportunities for targeted marketing campaigns and product recommendations.
## Available Data
- customer_purchases.csv: 10,000 records of customer purchases with columns:
- customer_id: Unique identifier for each customer
- purchase_date: Date of purchase (YYYY-MM-DD)
- product_category: Category of the purchased product
- product_id: Unique identifier for each product
- purchase_amount: Amount spent in dollars
- customer_location: City or region
- customer_demographics.csv: Demographic information with columns:
- customer_id: Unique identifier matching purchase data
- age_group: Age range (18-24, 25-34, 35-44, 45-54, 55+)
- income_bracket: Income level (Low, Medium, High)
- joined_date: Date when the customer first signed up
## Analysis Requirements
1. Identify purchasing patterns by demographic groups
2. Detect seasonal trends in product categories
3. Find correlations between purchase amount and other factors
4. Generate recommendations for cross-selling opportunities
๐งช Using Snippets in Your Conversationsยถ
There are several ways to use snippets in your conversations:
1. Add a Snippet as a User Messageยถ
This adds the snippet content as if the user had typed it:
# Load the CellMage extension if you haven't already
%load_ext cellmage
# Add the data_utils.py file as context
%llm_config --snippet data_utils.py
# Now ask the LLM about it
%%llm
Review the utility functions I provided. What improvements or additional functions
would you suggest to make this more comprehensive for data analysis?
2. Documentation Snippetsยถ
For technical questions, provide documentation:
%%llm --snippet api_documentation.md
How would I implement a function to authenticate with this API and retrieve user data?
3. Use a Snippet Just for One Callยถ
You can use a snippet just for a single prompt without affecting the overall conversation:
%%llm --snippet data_utils.py
Explain how the detect_outliers function works and suggest an additional method
that could be implemented for outlier detection.
๐ Managing Snippets in a Sessionยถ
Viewing Active Snippetsยถ
To see what snippets are currently active:
# List current snippets
%llm_config --status
The status display will show any currently active snippets.
Listing Available Snippetsยถ
To see all available snippets:
# List all available snippets
%llm_config --list-snippets
Removing Snippetsยถ
To remove an active snippet:
# Remove a specific snippet
%llm_config --remove-snippet data_utils.py
# Remove all snippets
%llm_config --clear-snippets
๐ก Effective Snippet Strategiesยถ
1. Code Context Snippetsยถ
When asking LLMs to help with code, provide relevant files:
%%llm --snippet my_module.py --snippet test_module.py
I'm seeing a bug where the function fails when given empty input. How can I fix it?
2. Documentation Snippetsยถ
For technical questions, provide documentation:
%%llm --snippet api_documentation.md
How would I implement a function to authenticate with this API and retrieve user data?
3. Data Schema Snippetsยถ
When discussing databases, provide schema information:
%%llm --snippet database_schema.sql
Write a query to find customers who purchased more than 5 items in the last month,
including their contact information and total spend.
4. Project Context Snippetsยถ
Keep the LLM informed about your project:
%%llm --sys-snippet project_goals.md
Given our project goals, what metrics should we track to measure success?
๐ Snippet Best Practicesยถ
Keep snippets focused: Each snippet should serve a specific purpose
Use descriptive filenames: Make it easy to remember what each snippet contains
Update snippets regularly: Keep them in sync with your projectโs evolution
Use the right format: Choose the right file extension (.py, .md, .sql, etc.) for syntax highlighting
Combine with personas: Use snippets with appropriate personas for the best results
๐ง Snippets + Personas: Powerful Combinationsยถ
Combining snippets with personas creates powerful workflows:
# Load a code reviewer persona
%llm_config --persona code_reviewer
# Add your code as context
%llm_config --snippet my_algorithm.py
# Get a code review
%%llm
Please review this code for performance issues and security vulnerabilities.
๐ Next Stepsยถ
Now that youโve learned how to use snippets effectively, explore:
Code Review with CellMage: Learn how to integrate with GitHub/GitLab
Advanced Prompting: Combine snippets with advanced prompting techniques
Chain of Thought: Use snippets for complex reasoning tasks