openrouter-upgrade-migration
jeremylongshore/claude-code-plugins-plus-skills
Migrez et mettez à niveau les versions du SDK OpenRouter en toute sécurité. À utiliser lors de la mise à jour des dépendances ou de la migration des configurations. Déclenchez cette action avec des expressions telles que « openrouter upgrade », « openrouter migration », « update openrouter » ou « openrouter breaking changes ».
...Développer toutÀ propos openrouter-upgrade-migration
La compétence «openrouter-upgrade-migration » est conçue pour rationaliser le processus de mise à niveau et de migration des versions du SDK OpenRouter. Elle répond aux défis courants rencontrés lors de la mise à jour des dépendances, en garantissant aux développeurs de pouvoir mettre en œuvre en toute sécurité les mises à jour de version et gérer les migrations de configuration sans introduire de changements incompatibles. Cette compétence s’avère particulièrement utile lors de la réalisation de mises à jour de routine ou pour faire face aux changements de compatibilité dans les nouvelles versions du SDK, en proposant une approche systématique pour maintenir la compatibilité tout au long de la mise à niveau.
Cette compétence fournit un ensemble complet d’outils pour gérer les mises à niveau de version du SDK, de la vérification des prérequis à la garantie d’une intégration réussie. Parmi ses principales fonctionnalités figurent la migration aisée des configurations, la gestion des changements de compatibilité et la vérification de la connectivité de l’API après la migration. Elle s’intègre parfaitement aux systèmes de contrôle de version, offrant des capacités de retour en arrière en cas de problèmes. Grâce à des étapes claires de test et de surveillance, cette compétence garantit que l’intégration OpenRouter mise à jour continue de fonctionner comme prévu dans un environnement de production.
Destinée principalement aux développeurs et aux équipes travaillant avec OpenRouter, cette compétence est idéale pour ceux qui gèrent les mises à jour du SDK ou sont confrontés à des changements de compatibilité avec les nouvelles versions. Elle est également utile aux ingénieurs DevOps chargés de la maintenance des systèmes de production, car elle leur permet de mettre à niveau en toute sécurité les dépendances et les configurations tout en assurant le suivi des modifications. Cet outil peut contribuer à garantir la stabilité et à minimiser les temps d’arrêt lors de la mise à jour ou de la migration des versions du SDK OpenRouter.
FAQ
Comment déclencher la compétence « openrouter-upgrade-migration » ?
Vous pouvez déclencher cette compétence à l’aide d’expressions telles que « openrouter upgrade », « openrouter migration », « update openrouter » ou « openrouter breaking changes ».
Quelles sont les conditions préalables à l’utilisation de cette compétence ?
Les conditions préalables incluent la mise en place d’une intégration OpenRouter existante et d’un système de contrôle de version afin de garantir la possibilité de revenir en arrière.
Cette compétence est-elle compatible avec toutes les versions du SDK OpenRouter ?
Cette compétence est conçue pour la mise à niveau et la migration des versions du SDK OpenRouter, mais il est important de vérifier la compatibilité avec votre version spécifique du SDK avant de continuer.
Que dois-je faire si la migration échoue ?
Si la migration échoue, consultez la documentation relative à la gestion des erreurs disponible dans « {baseDir}/references/errors.md » pour diagnostiquer et résoudre le problème.
OpenRouter Upgrade & Migration
Current State
!npm list openai 2>/dev/null | head -5!pip show openai 2>/dev/null | head -5
Overview
Migrating to OpenRouter from a direct provider API (OpenAI, Anthropic) is minimal: change base_url and api_key, add two headers. The OpenAI SDK works natively with OpenRouter. This skill covers migrating from direct APIs, switching between models, upgrading SDK versions, and running comparison tests.
Migration from Direct OpenAI
# BEFORE: Direct OpenAIfrom openai import OpenAIclient = OpenAI(api_key=os.environ["OPENAI_API_KEY"])response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hello"}], max_tokens=200,)# AFTER: Via OpenRouter (3 lines changed)from openai import OpenAIclient = OpenAI( base_url="https://openrouter.ai/api/v1", # ← Changed api_key=os.environ["OPENROUTER_API_KEY"], # ← Changed default_headers={ # ← Added "HTTP-Referer": "https://my-app.com", "X-Title": "my-app", },)response = client.chat.completions.create( model="openai/gpt-4o", # ← Add provider prefix messages=[{"role": "user", "content": "Hello"}], max_tokens=200,)
Migration from Direct Anthropic
# BEFORE: Direct Anthropic SDKimport anthropicclient = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])response = client.messages.create( model="claude-3-5-sonnet-20241022", max_tokens=200, messages=[{"role": "user", "content": "Hello"}],)content = response.content[0].text# AFTER: Via OpenRouter (using OpenAI SDK instead of Anthropic SDK)from openai import OpenAIclient = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"], default_headers={ "HTTP-Referer": "https://my-app.com", "X-Title": "my-app", },)response = client.chat.completions.create( model="anthropic/claude-3.5-sonnet", # OpenRouter model ID messages=[{"role": "user", "content": "Hello"}], max_tokens=200,)content = response.choices[0].message.content # OpenAI response format
TypeScript Migration
// BEFORE: Direct OpenAIimport OpenAI from "openai";const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });// AFTER: Via OpenRouterconst client = new OpenAI({ baseURL: "https://openrouter.ai/api/v1", apiKey: process.env.OPENROUTER_API_KEY, defaultHeaders: { "HTTP-Referer": "https://my-app.com", "X-Title": "my-app", },});// Change model from "gpt-4o" to "openai/gpt-4o"
Migration Checklist
MIGRATION_CHECKLIST = { "config": [ "base_url changed to https://openrouter.ai/api/v1", "API key changed to OPENROUTER_API_KEY (sk-or-v1-...)", "HTTP-Referer and X-Title headers added", "Model IDs prefixed with provider/ (e.g., openai/gpt-4o)", ], "code": [ "All client initialization updated", "Model IDs updated in all routes/configs", "Error handling covers OpenRouter-specific codes (402, 408)", "Streaming still works with new endpoint", "Tool/function calling still works", ], "testing": [ "Same prompts produce comparable quality output", "Latency within acceptable range (expect +50-100ms)", "Token counts match expectations", "Cost tracking updated for OpenRouter pricing", "Fallback chain tested", ], "operations": [ "Credit balance sufficient for expected usage", "Per-key credit limits configured", "Monitoring updated to track OpenRouter metrics", "Alerting on new error codes (402, 408)", "Rollback plan documented", ],}
Model ID Migration Map
| Direct Provider | OpenRouter ID |
|---|---|
gpt-4o | openai/gpt-4o |
gpt-4o-mini | openai/gpt-4o-mini |
o1 | openai/o1 |
claude-3-5-sonnet-20241022 | anthropic/claude-3.5-sonnet |
claude-3-haiku-20240307 | anthropic/claude-3-haiku |
gemini-2.0-flash | google/gemini-2.0-flash-001 |
llama-3.1-8b-instruct | meta-llama/llama-3.1-8b-instruct |
Comparison Test Script
def compare_migration(prompt: str, old_model: str, new_model: str): """Run same prompt through old and new configurations to compare.""" import time # New: OpenRouter or_client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"], default_headers={"HTTP-Referer": "https://my-app.com", "X-Title": "migration-test"}, ) start = time.monotonic() or_response = or_client.chat.completions.create( model=new_model, messages=[{"role": "user", "content": prompt}], max_tokens=200, temperature=0, ) or_latency = (time.monotonic() - start) * 1000 return { "openrouter": { "model": or_response.model, "content": or_response.choices[0].message.content[:100], "tokens": or_response.usage.prompt_tokens + or_response.usage.completion_tokens, "latency_ms": round(or_latency), }, }# Testresult = compare_migration( "What is 2+2?", old_model="gpt-4o", new_model="openai/gpt-4o",)print(json.dumps(result, indent=2))
Feature Flag Migration
import osUSE_OPENROUTER = os.environ.get("USE_OPENROUTER", "false").lower() == "true"def get_llm_client(): """Feature flag for gradual migration.""" if USE_OPENROUTER: return OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"], default_headers={"HTTP-Referer": "https://my-app.com", "X-Title": "my-app"}, ) else: return OpenAI(api_key=os.environ["OPENAI_API_KEY"])def get_model_id(model: str) -> str: """Map model IDs based on current backend.""" if USE_OPENROUTER and "/" not in model: MODEL_MAP = {"gpt-4o": "openai/gpt-4o", "gpt-4o-mini": "openai/gpt-4o-mini"} return MODEL_MAP.get(model, f"openai/{model}") return model
Error Handling
| Error | Cause | Fix |
|---|---|---|
| 401 after migration | Using old API key with new base_url | Update to OpenRouter API key (sk-or-v1-...) |
model_not_found | Missing provider prefix | Add openai/ or anthropic/ prefix to model ID |
| Different response format | Switched from Anthropic SDK to OpenAI SDK | Update response parsing: .choices[0].message.content |
| Higher latency | OpenRouter proxy overhead | Expected: +50-100ms; use streaming to mask it |
Enterprise Considerations
- Migration from direct provider to OpenRouter requires only 3 lines of code change
- Use feature flags for gradual migration (10% -> 50% -> 100%)
- Run comparison tests on critical prompts before full migration
- OpenRouter adds ~50-100ms overhead; use streaming to mask perceived latency
- Keep direct provider keys active during migration for quick rollback
- Update monitoring dashboards for OpenRouter-specific metrics (generation_id, provider used)
References
- Examples | Errors
- Quickstart | OpenAI Compatibility
Installer openrouter-upgrade-migration
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/openrouter-pack/skills/openrouter-upgrade-migration/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
