Overview
The swarms.prompts module provides tools for creating, managing, and versioning prompts with comprehensive history tracking, autosaving capabilities, and integration with agent systems.
Prompt Class
A powerful class for managing prompts with version control, edit history, and autosaving features.
from swarms.prompts import Prompt
prompt = Prompt(
name="analysis_prompt",
description="Financial analysis prompt",
content="Analyze the following financial data...",
autosave=True,
autosave_folder="prompts"
)
Constructor
id
str
default:"uuid.uuid4().hex"
Unique identifier for the prompt
description
str
default:"Simple Prompt"
Description of the prompt
The main content of the prompt (minimum 1 character)
created_at
str
default:"current_time"
Timestamp when the prompt was created
last_modified_at
str
default:"current_time"
Timestamp when the prompt was last modified
Number of times the prompt has been edited
History of all prompt versions
Enable automatic saving of the prompt
Folder path within WORKSPACE_DIR for autosaving
Enable auto-generation of prompts
parent_folder
str
default:"workspace_dir"
Parent folder for the autosave folder
Optional LLM instance for prompt generation
Methods
edit_prompt
Edit the prompt content and update version control.
prompt.edit_prompt("Updated prompt content here")
The updated content of the prompt
Raises:
ValueError: If the new content is identical to the current content
Thread-safe: This method is safe for concurrent access.
rollback
Roll back the prompt to a previous version.
# Rollback to the first version
prompt.rollback(version=0)
The version index to roll back to (0 is the first version)
Raises:
IndexError: If the version number is out of range
get_prompt
Return the current prompt content as a string.
content = prompt.get_prompt()
print(content)
The current prompt content
return_json
Return the prompt as a JSON string.
json_data = prompt.return_json()
print(json_data)
JSON representation of the prompt with all metadata
Add tool schemas to the prompt content.
from swarms.tools import BaseTool
def my_tool(x: int) -> int:
"""Double the input."""
return x * 2
prompt.add_tools([my_tool])
List of callable functions to add as tools
Pre-built Prompt Templates
The module includes numerous pre-built prompt templates for common agent roles:
Finance Prompts
FINANCE_AGENT_PROMPT
Comprehensive prompt for financial analysis agents.
from swarms.prompts import FINANCE_AGENT_PROMPT
agent = Agent(
agent_name="Financial-Analyst",
system_prompt=FINANCE_AGENT_PROMPT,
# ... other config
)
Legal Prompts
LEGAL_AGENT_PROMPT
Prompt template for legal analysis and research agents.
from swarms.prompts import LEGAL_AGENT_PROMPT
agent = Agent(
agent_name="Legal-Advisor",
system_prompt=LEGAL_AGENT_PROMPT,
# ... other config
)
Product & Operations
PRODUCT_AGENT_PROMPT
Prompt for product management agents.
from swarms.prompts import PRODUCT_AGENT_PROMPT
OPERATIONS_AGENT_PROMPT
Prompt for operations management agents.
from swarms.prompts import OPERATIONS_AGENT_PROMPT
GROWTH_AGENT_PROMPT
Prompt for growth and marketing agents.
from swarms.prompts import GROWTH_AGENT_PROMPT
Development Prompts
CODE_INTERPRETER
Prompt for code interpretation and execution agents.
from swarms.prompts import CODE_INTERPRETER
agent = Agent(
agent_name="Code-Interpreter",
system_prompt=CODE_INTERPRETER,
# ... other config
)
DOCUMENTATION_WRITER_SOP
Standard operating procedure for documentation writing agents.
from swarms.prompts import DOCUMENTATION_WRITER_SOP
Autonomous Agent Prompts
AUTONOMOUS_AGENT_SYSTEM_PROMPT
Base system prompt for autonomous agents.
from swarms.prompts import AUTONOMOUS_AGENT_SYSTEM_PROMPT
get_autonomous_agent_prompt
Generate an autonomous agent prompt.
from swarms.prompts import get_autonomous_agent_prompt
prompt = get_autonomous_agent_prompt()
get_autonomous_agent_prompt_with_context
Generate an autonomous agent prompt with additional context.
from swarms.prompts import get_autonomous_agent_prompt_with_context
prompt = get_autonomous_agent_prompt_with_context(
context="Analyze financial markets with focus on tech stocks"
)
Example: Complete Prompt Management
from swarms.prompts import Prompt
from swarms.tools import BaseTool
import os
# Set workspace directory
os.environ["WORKSPACE_DIR"] = "./workspace"
# Create a prompt with autosave
prompt = Prompt(
name="market_analysis",
description="Financial market analysis prompt",
content="""You are a financial analyst. Analyze the following:
1. Market trends
2. Risk factors
3. Investment opportunities
""",
autosave=True,
autosave_folder="financial_prompts"
)
# Edit the prompt
prompt.edit_prompt("""
You are an expert financial analyst specializing in equity markets.
Analyze the following aspects:
1. Current market trends and momentum
2. Key risk factors and hedging strategies
3. High-conviction investment opportunities
4. Portfolio allocation recommendations
Provide detailed analysis with supporting data.
""")
print(f"Edit count: {prompt.edit_count}") # 1
print(f"Total versions: {len(prompt.edit_history)}") # 2
# Add tools to the prompt
def calculate_sharpe_ratio(returns: float, risk_free_rate: float, std_dev: float) -> float:
"""Calculate Sharpe ratio for investment analysis."""
return (returns - risk_free_rate) / std_dev
prompt.add_tools([calculate_sharpe_ratio])
# Rollback if needed
prompt.rollback(version=0) # Back to original version
# Get the current prompt
current = prompt.get_prompt()
print(current)
# Export as JSON
json_export = prompt.return_json()
print(json_export)
Best Practices
- Enable autosave: Always enable autosave for important prompts to prevent data loss
- Use descriptive names: Give prompts clear, descriptive names for easy identification
- Version control: Leverage the built-in version control to track prompt evolution
- Add context: Include detailed descriptions to document the prompt’s purpose
- Organize by folder: Use the
autosave_folder parameter to organize prompts by category
- Regular rollbacks: Test different prompt versions using rollback functionality
- Tool integration: Use
add_tools() to seamlessly integrate function calling
Thread Safety
The Prompt class implements thread-safe operations for:
- Edit operations
- Rollback operations
- Autosaving
This makes it safe to use in concurrent environments and multi-agent systems.
Autosave Behavior
When autosave is enabled:
- Prompts are saved to
{WORKSPACE_DIR}/{autosave_folder}/prompt-id-{id}.json
- Each edit automatically triggers a save
- Rollback operations also trigger saves
- The entire prompt state (including history) is preserved
Integration with Agents
from swarms import Agent
from swarms.prompts import Prompt, FINANCE_AGENT_PROMPT
# Using pre-built prompts
agent1 = Agent(
agent_name="Financial-Analyst",
system_prompt=FINANCE_AGENT_PROMPT,
model_name="gpt-4"
)
# Using custom Prompt class
custom_prompt = Prompt(
name="custom_analyst",
content="You are a specialized quantitative analyst...",
autosave=True
)
agent2 = Agent(
agent_name="Quant-Analyst",
system_prompt=custom_prompt.get_prompt(),
model_name="gpt-4"
)