Transform short prompts into detailed, structured instructions using context-aware retrieval.
Prompt Amplifier is a library for Prompt Amplification — the process of transforming short, ambiguous user intents into comprehensive, well-structured prompts that LLMs can execute effectively.
from prompt_amplifier import PromptForge
forge = PromptForge()
forge.load_documents("./company_docs/")
# Short, vague input
short_prompt = "How's the deal going?"
# Detailed, structured output
detailed = forge.expand(short_prompt)Before (user input):
"How's the deal going?"
After (expanded prompt):
"Generate a Deal Health Assessment report with the following structure:
1. Executive Summary - Overall health status (Healthy/Warning/Critical)
2. Key Metrics Table
Metric Current Target Status Winscore ... ... ... POC Progress ... ... ... 3. Risk Factors - List blocking issues from Success Plan
4. Recommended Actions - Prioritized next steps
Use data from: Deal Profile, Success Plan, Activity Log..."
- 📄 Multi-format Document Loading — PDF, DOCX, Excel, CSV, TXT, Markdown, HTML
- 🔢 Pluggable Embedders — TF-IDF, BM25, Sentence Transformers, OpenAI, Cohere, Google
- 💾 Vector Store Support — In-memory, ChromaDB, FAISS, Pinecone, Qdrant, Weaviate
- 🔍 Smart Retrieval — Vector search, hybrid (BM25 + Vector), reranking
- 🤖 LLM Backends — OpenAI, Anthropic, Google Gemini, Ollama (local)
- 📋 Domain Schemas — Define field structures for your domain
- 🔌 Extensible — Easy to add custom loaders, embedders, and vector stores
# Core library
pip install prompt-amplifier
# With common extras
pip install prompt-amplifier[loaders,embeddings-local,vectorstore-chroma]
# Everything
pip install prompt-amplifier[all]
⚠️ Required forexpand(): The prompt expansion feature requires an LLM API key.
import os
# Option 1: Google Gemini (has free tier!)
os.environ["GOOGLE_API_KEY"] = "your-key-from-aistudio.google.com"
# Option 2: OpenAI
os.environ["OPENAI_API_KEY"] = "sk-your-key"
# Option 3: Anthropic
os.environ["ANTHROPIC_API_KEY"] = "sk-ant-your-key"import os
os.environ["GOOGLE_API_KEY"] = "your-key" # Required for expand()
from prompt_amplifier import PromptForge
from prompt_amplifier.generators import GoogleGenerator
# Initialize with Google Gemini (free tier available)
forge = PromptForge(generator=GoogleGenerator())
# Add your documents
forge.add_texts([
"POC Health: Healthy means all milestones on track.",
"Winscore ranges from 0-100, measuring deal probability.",
])
# Expand a short prompt
result = forge.expand("Give me a POC health check")
print(result.prompt) # The expanded prompt
print(result.expansion_ratio) # How much longer it gotfrom prompt_amplifier import PromptForge
# No API key needed for search!
forge = PromptForge()
forge.add_texts(["doc1", "doc2", "doc3"])
# Search works without LLM
results = forge.search("my query")
for r in results.results:
print(r.chunk.content)from prompt_amplifier import PromptForge
from prompt_amplifier.vectorstores import ChromaStore
from prompt_amplifier.embedders import SentenceTransformerEmbedder
forge = PromptForge(
embedder=SentenceTransformerEmbedder("all-MiniLM-L6-v2"),
vectorstore=ChromaStore(
collection_name="my_docs",
persist_directory="./chroma_db"
)
)
# First run: embeds and stores
forge.load_documents("./docs/")
# Subsequent runs: uses existing embeddings
result = forge.expand("Summarize the project status")from prompt_amplifier import PromptForge
from prompt_amplifier.vectorstores import PineconeStore
from prompt_amplifier.embedders import OpenAIEmbedder
forge = PromptForge(
embedder=OpenAIEmbedder(model="text-embedding-3-small"),
vectorstore=PineconeStore(
api_key="your-api-key",
index_name="prompt-amplifier-prod"
),
generator="gpt-4o"
)┌─────────────────────────────────────────────────────────────┐
│ Prompt Amplifier │
├─────────────────────────────────────────────────────────────┤
│ │
│ Documents → Chunker → Embedder → VectorStore │
│ (PDF, DOCX) (split) (encode) (persist) │
│ │
├─────────────────────────────────────────────────────────────┤
│ │
│ User Query → Embedder → Retriever → Generator │
│ "short" (encode) (search) (expand) │
│ │
└─────────────────────────────────────────────────────────────┘
| Format | Loader |
|---|---|
PDFLoader |
|
| Word | DocxLoader |
| Excel | ExcelLoader |
| CSV | CSVLoader |
| Text | TxtLoader |
| Markdown | MarkdownLoader |
| HTML | HTMLLoader |
| JSON | JSONLoader |
| Provider | Class | Type |
|---|---|---|
| TF-IDF | TFIDFEmbedder |
Free, Local |
| BM25 | BM25Embedder |
Free, Local |
| Sentence Transformers | SentenceTransformerEmbedder |
Free, Local |
| OpenAI | OpenAIEmbedder |
Paid API |
| Cohere | CohereEmbedder |
Paid API |
GoogleEmbedder |
Paid API | |
| Voyage AI | VoyageEmbedder |
Paid API |
| Store | Class | Type |
|---|---|---|
| In-Memory | MemoryStore |
Local |
| ChromaDB | ChromaStore |
Local |
| FAISS | FAISSStore |
Local |
| LanceDB | LanceDBStore |
Local |
| Pinecone | PineconeStore |
Cloud |
| Qdrant | QdrantStore |
Local/Cloud |
| Weaviate | WeaviateStore |
Cloud |
| pgvector | PGVectorStore |
Self-host |
| Provider | Class |
|---|---|
| OpenAI | OpenAIGenerator |
| Anthropic | AnthropicGenerator |
| Google Gemini | GoogleGenerator |
| Ollama | OllamaGenerator |
| HuggingFace | HuggingFaceGenerator |
Prompt Amplifier was developed as part of research into Prompt Amplification — systematically transforming short user intents into detailed, structured prompts.
Key contributions:
- Formalization of the prompt expansion problem
- Comparison of embedding strategies for prompt enhancement
- Evaluation metrics for prompt quality
- Benchmark datasets across multiple domains
📄 Paper: [Coming Soon]
We welcome contributions! See CONTRIBUTING.md for guidelines.
# Clone the repo
git clone https://github.com/DeccanX/Prompt-Amplifier.git
cd Prompt-Amplifier
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
ruff check src/
black src/Apache 2.0 — See LICENSE for details.
Built with inspiration from:
Made with ❤️ by Rajesh More for the AI community
