1414PAGANS (Prompts Aligned to Guidelines and Normalization System) is a prompt
1515optimization framework for LLM applications. It adapts prompts to the target
1616model family automatically so the same prompt can perform better across
17- OpenAI, Anthropic, Google, and xAI model series through OpenRouter .
17+ OpenAI, Anthropic, Google, and xAI model series.
1818
19- ## ✨ Features
19+ ## Features
2020
21- - 🚀 Fast prompt optimization for production workflows
22- - 🎯 Family-aware optimization for OpenAI, Anthropic, Google, and xAI models
23- - 🔍 Automatic model-family detection from short and provider-prefixed names
24- - ⚡ Async-first API for single, compare, and batch operations
25- - 🧠 Built-in caching to reduce repeated optimization cost
26- - 🛠️ CLI support for optimize, compare, and batch workflows
27- - 🔗 Unified OpenRouter integration path
21+ - Fast prompt optimization for production workflows
22+ - Family-aware optimization for OpenAI, Anthropic, Google, and xAI models
23+ - Automatic model-family detection from short and provider-prefixed names
24+ - Async-first API for single, compare, and batch operations
25+ - Built-in caching to reduce repeated optimization cost
26+ - CLI support for optimize, compare, and batch workflows
27+ - Optimizer provider support for OpenRouter, OpenAI, Google AI Studio, Anthropic, and Z.ai
2828
2929## Installation
3030
@@ -36,11 +36,12 @@ pip install pagans
3636
3737``` python
3838import asyncio
39- from pagans import PAGANSOptimizer
39+
40+ from pagans import PAGANSOptimizer, Provider
4041
4142
4243async def main () -> None :
43- async with PAGANSOptimizer() as optimizer:
44+ async with PAGANSOptimizer(provider = Provider. OPENROUTER ) as optimizer:
4445 result = await optimizer.optimize(
4546 prompt = " Write a robust retry policy for external API calls." ,
4647 target_model = " openai/gpt-4o" ,
@@ -51,38 +52,76 @@ async def main() -> None:
5152asyncio.run(main())
5253```
5354
54- Required environment variable:
55+ ## Provider Configuration
56+
57+ Set one provider key (or pass ` api_key ` and ` base_url ` explicitly).
5558
5659``` bash
60+ # OpenRouter
5761export OPENROUTER_API_KEY=" your-openrouter-api-key"
58- ```
62+ export OPENROUTER_BASE_URL= " https://openrouter.ai/api/v1 "
5963
60- Optional environment variables:
64+ # OpenAI
65+ export OPENAI_API_KEY=" your-openai-api-key"
66+ export OPENAI_BASE_URL=" https://api.openai.com/v1"
6167
62- ``` bash
63- export OPENROUTER_BASE_URL=" https://openrouter.ai/api/v1"
68+ # Google AI Studio (Gemini OpenAI-compatible endpoint)
69+ export GOOGLE_API_KEY=" your-gemini-api-key"
70+ export GOOGLE_BASE_URL=" https://generativelanguage.googleapis.com/v1beta/openai"
71+
72+ # Anthropic
73+ export ANTHROPIC_API_KEY=" your-anthropic-api-key"
74+ export ANTHROPIC_BASE_URL=" https://api.anthropic.com/v1"
75+
76+ # Z.ai
77+ export ZAI_API_KEY=" your-zai-api-key"
78+ export ZAI_BASE_URL=" https://api.z.ai/api/paas/v4"
79+
80+ # Optional global override for optimizer model
6481export PAGANS_OPTIMIZER_MODEL=" openai/gpt-4o-mini"
6582```
6683
84+ ### Python Provider Examples
85+
86+ ``` python
87+ from pagans import PAGANSOptimizer, Provider
88+
89+ # OpenAI as optimizer provider
90+ optimizer = PAGANSOptimizer(provider = Provider.OPENAI )
91+
92+ # Google AI Studio as optimizer provider
93+ optimizer = PAGANSOptimizer(provider = Provider.GOOGLE )
94+
95+ # Anthropic as optimizer provider
96+ optimizer = PAGANSOptimizer(provider = Provider.ANTHROPIC )
97+
98+ # Z.ai as optimizer provider
99+ optimizer = PAGANSOptimizer(provider = Provider.ZAI )
100+ ```
101+
67102## CLI
68103
69104PAGANS installs a CLI as ` pagans ` .
70105
71106``` bash
72- pagans optimize --prompt " Explain quantum computing for beginners" --target-model gpt-4o
107+ pagans --provider openrouter optimize \
108+ --prompt " Explain quantum computing for beginners" \
109+ --target-model gpt-4o
73110```
74111
75112``` bash
76- pagans compare \
113+ pagans --provider openai compare \
77114 --prompt " Design an event-driven order system" \
78115 --models " gpt-4o,claude-sonnet-4,gemini-2.5-pro"
79116```
80117
81118``` bash
82- pagans batch --prompts-file ./prompts.txt --target-model gemini-2.5-pro
119+ pagans --provider anthropic batch \
120+ --prompts-file ./prompts.txt \
121+ --target-model gemini-2.5-pro
83122```
84123
85- ## 🎯 Model Family Series
124+ ## Model Family Series
86125
87126PAGANS optimizes prompts for these model families and series:
88127
@@ -93,6 +132,17 @@ PAGANS optimizes prompts for these model families and series:
93132
94133PAGANS detects the target model family and applies the matching optimization strategy automatically.
95134
135+ ## Notebooks
136+
137+ Provider notebook examples are available in [ ` notebooks/ ` ] ( ./notebooks ) :
138+
139+ - ` pagans_quickstart.ipynb `
140+ - ` pagans_openrouter_optimizer.ipynb `
141+ - ` pagans_openai_optimizer.ipynb `
142+ - ` pagans_google_optimizer.ipynb `
143+ - ` pagans_anthropic_optimizer.ipynb `
144+ - ` pagans_zai_optimizer.ipynb `
145+
96146## Links
97147
98148- Source: https://github.com/abubakarsiddik31/pagans
0 commit comments