Skip to main content
cohere-migration-deep-dive Migrate from OpenAI/Anthropic/other LLM providers to Cohere, or vice versa.
Use when switching LLM providers, migrating embeddings between models,
or re-platforming existing AI integrations to Cohere API v2.
Trigger with phrases like "migrate to cohere", "switch from openai to cohere",
"cohere migration", "replace openai with cohere", "cohere replatform".
Zur Installation springen Skills Marktplatz Entdecken und erkunden Sie KI-Skills, die von der Community erstellt wurden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Prompt kopierenPrompt-Details anzeigen Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
npx skills add https://github.com/jeremylongshore/claude-code-plugins-plus-skills --skill cohere-migration-deep-diveDer Befehl bleibt in einer Zeile. Scrollen Sie horizontal, um ihn vor dem Kopieren vollständig zu prüfen.
Sie bevorzugen eine lokale Kopie? Laden Sie die Dateien herunter, die SkillsMP derzeit vorliegen.
ZIP herunterladen Herunterladen... Verwandte Berufe SOC
Basierend auf der SOC-Berufsklassifikation
name cohere-migration-deep-dive description Migrate from OpenAI/Anthropic/other LLM providers to Cohere, or vice versa.
Use when switching LLM providers, migrating embeddings between models,
or re-platforming existing AI integrations to Cohere API v2.
Trigger with phrases like "migrate to cohere", "switch from openai to cohere",
"cohere migration", "replace openai with cohere", "cohere replatform".
allowed-tools Read, Write, Edit, Bash(npm:*), Bash(node:*), Bash(kubectl:*) version 1.5.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","ai","nlp","cohere"] compatibility Designed for Claude Code
Cohere Migration Deep Dive
Overview
Comprehensive guide for migrating to Cohere from OpenAI, Anthropic, or other LLM providers, including embedding re-vectorization, prompt adaptation, and gradual traffic shifting.
Prerequisites
Current LLM integration documented
Cohere API key and SDK installed
Feature flag infrastructure
Rollback strategy
Migration Types
From Complexity Duration Key Challenge OpenAI → Cohere Medium 1-2 weeks Prompt adaptation, embedding migration Anthropic → Cohere Medium 1-2 weeks Message format, tool definitions Custom/OSS → Cohere Low Days SDK integration Embedding migration High 2-4 weeks Re-vectorize entire corpus
Instructions
Step 1: OpenAI to Cohere Chat Migration
import OpenAI from 'openai' ;
const openai = new OpenAI ();
const response = await openai.chat .completions .create ({
model : 'gpt-4o' ,
messages : [
{ role : 'system' , content : 'You are helpful.' },
{ role : 'user' , content : 'Hello' },
],
max_tokens : 500 ,
temperature : 0.7 ,
});
text = response. [ ]. . ;
{ } ;
cohere = ();
response = cohere. ({
: ,
: [
{ : , : },
{ : , : },
],
: ,
: ,
});
text = response. ?. ?.[ ]?. ;
const
choices
0
message
content
import
CohereClientV2
from
'cohere-ai'
const
new
CohereClientV2
const
await
chat
model
'command-a-03-2025'
messages
role
'system'
content
'You are helpful.'
role
'user'
content
'Hello'
maxTokens
500
temperature
0.7
const
message
content
0
text
Step 2: Embedding Migration
async function migrateEmbeddings (
documents : Array <{ id: string ; text: string }>,
batchSize = 96
) {
const cohere = new CohereClientV2 ();
let processed = 0 ;
for (let i = 0 ; i < documents.length ; i += batchSize) {
const batch = documents.slice (i, i + batchSize);
const response = await cohere.embed ({
model : 'embed-v4.0' ,
texts : batch.map (d => d.text ),
inputType : 'search_document' ,
embeddingTypes : ['float' ],
});
for (let j = 0 ; j < batch.length ; j++) {
await vectorDB.upsert ({
collection : 'docs-cohere' ,
id : batch[j].id ,
vector : response.embeddings .float [j],
metadata : { text : batch[j].text },
});
}
processed += batch.length ;
console .log (`Migrated ${processed} /${documents.length} embeddings` );
}
}
Step 3: Tool Use Migration
const openaiTools = [{
type : 'function' ,
function : {
name : 'get_weather' ,
description : 'Get weather' ,
parameters : {
type : 'object' ,
properties : { city : { type : 'string' } },
required : ['city' ],
},
},
}];
const cohereTools = [{
type : 'function' ,
function : {
name : 'get_weather' ,
description : 'Get weather' ,
parameters : {
type : 'object' ,
properties : { city : { type : 'string' } },
required : ['city' ],
},
},
}];
Step 4: Streaming Migration
const openaiStream = await openai.chat .completions .create ({
model : 'gpt-4o' ,
messages : [...],
stream : true ,
});
for await (const chunk of openaiStream) {
process.stdout .write (chunk.choices [0 ]?.delta ?.content ?? '' );
}
const cohereStream = await cohere.chatStream ({
model : 'command-a-03-2025' ,
messages : [...],
});
for await (const event of cohereStream) {
if (event.type === 'content-delta' ) {
process.stdout .write (event.delta ?.message ?.content ?.text ?? '' );
}
}
Step 5: Adapter Pattern for Gradual Migration interface LLMAdapter {
chat (message : string , options ?: { system ?: string ; maxTokens ?: number }): Promise <string >;
embed (texts : string []): Promise <number [][]>;
rerank (query : string , docs : string [], topN ?: number ): Promise <Array <{ index : number ; score : number }>>;
}
class CohereAdapter implements LLMAdapter {
private client = new CohereClientV2 ();
async chat (message : string , options ?: { system ?: string ; maxTokens ?: number }): Promise <string > {
const messages : any [] = [];
if (options?.system ) messages.push ({ role : 'system' , content : options.system });
messages.push ({ role : 'user' , content : message });
const response = await this .client .chat ({
model : 'command-a-03-2025' ,
messages,
maxTokens : options?.maxTokens ,
});
return response.message ?.content ?.[0 ]?.text ?? '' ;
}
async embed (texts : string []): Promise <number [][]> {
const response = await this .client .embed ({
model : 'embed-v4.0' ,
texts,
inputType : 'search_document' ,
embeddingTypes : ['float' ],
});
return response.embeddings .float ;
}
async rerank (query : string , docs : string [], topN = 5 ): Promise <Array <{ index : number ; score : number }>> {
const response = await this .client .rerank ({
model : 'rerank-v3.5' ,
query,
documents : docs,
topN,
});
return response.results .map (r => ({ index : r.index , score : r.relevanceScore }));
}
}
class OpenAIAdapter implements LLMAdapter {
}
function getLLMAdapter ( ): LLMAdapter {
const coherePercentage = getFeatureFlag ('cohere_migration_pct' );
if (Math .random () * 100 < coherePercentage) {
return new CohereAdapter ();
}
return new OpenAIAdapter ();
}
Step 6: Validation and Comparison async function compareOutputs (message : string ): Promise <{
openai : string ;
cohere : string ;
latencyMs : { openai : number ; cohere : number };
}> {
const startOpenAI = Date .now ();
const openaiResult = await openaiAdapter.chat (message);
const openaiLatency = Date .now () - startOpenAI;
const startCohere = Date .now ();
const cohereResult = await cohereAdapter.chat (message);
const cohereLatency = Date .now () - startCohere;
return {
openai : openaiResult,
cohere : cohereResult,
latencyMs : { openai : openaiLatency, cohere : cohereLatency },
};
}
const testQueries = ['Summarize this text' , 'Translate to French' , 'Extract key points' ];
for (const q of testQueries) {
const result = await compareOutputs (q);
console .log (`Query: ${q} ` );
console .log (`OpenAI (${result.latencyMs.openai} ms): ${result.openai.slice(0 , 100 )} ` );
console .log (`Cohere (${result.latencyMs.cohere} ms): ${result.cohere.slice(0 , 100 )} ` );
}
Cohere-Unique Features (Not in OpenAI) Feature Cohere OpenAI Built-in Rerank cohere.rerank()Not available RAG with citations documents param + citationsManual implementation Connectors (data sources) connectors paramNot available Classify endpoint cohere.classify()Not available Safety modes safetyMode paramModeration API (separate)
Rollback Plan
curl -X POST https://flagservice/flags/cohere_migration_pct -d '{"value": 0}'
Output
Adapter layer abstracting LLM provider
Embedding migration with batch processing
A/B comparison for output quality validation
Feature-flag controlled traffic shifting
Rollback via feature flag (instant, no deploy)
Error Handling Issue Cause Solution Embedding dimension mismatch Mixed providers in same DB Separate collections per provider Response shape different Provider-specific format Use adapter pattern Higher latency on Cohere Different model size Try command-r7b for speed Quality difference Different model strengths Tune system prompts per provider
Resources
Next Steps For Cohere-specific architecture patterns, see cohere-reference-architecture.
Mehr aus diesem Repository