completionsRunAdapter

The default run adapter. Rewrites every run into one or more /chat/completions calls. Works with every provider Supercompat supports.

Signature

completionsRunAdapter()
No options.

Responses API (any provider)

import OpenAI from 'openai' import { supercompat, openaiClientAdapter, completionsRunAdapter, memoryStorageAdapter, } from 'supercompat/openai' const client = supercompat({ clientAdapter: openaiClientAdapter({ openai: new OpenAI() }), storageAdapter: memoryStorageAdapter(), runAdapter: completionsRunAdapter(), }) const response = await client.responses.create({ model: 'gpt-4.1-mini', input: 'Hello.', })

Anthropic via Completions

import Anthropic from '@anthropic-ai/sdk' import { supercompat, anthropicClientAdapter, completionsRunAdapter, memoryStorageAdapter, } from 'supercompat/openai' const client = supercompat({ clientAdapter: anthropicClientAdapter({ anthropic: new Anthropic() }), storageAdapter: memoryStorageAdapter(), runAdapter: completionsRunAdapter(), }) await client.responses.create({ model: 'claude-sonnet-4-6', input: 'Why pick Claude?', })

Groq via Completions

import Groq from 'groq-sdk' import { supercompat, groqClientAdapter, completionsRunAdapter, memoryStorageAdapter, } from 'supercompat/openai' const client = supercompat({ clientAdapter: groqClientAdapter({ groq: new Groq() }), storageAdapter: memoryStorageAdapter(), runAdapter: completionsRunAdapter(), }) await client.responses.create({ model: 'llama-3.3-70b-versatile', input: 'Give me a one-sentence answer.', })

Tool use

await client.responses.create({ model: 'gpt-4.1-mini', input: 'What is the weather in Berlin?', tools: [ { type: 'function', name: 'get_weather', parameters: { type: 'object', properties: { city: { type: 'string' } }, required: ['city'], }, }, ], })
Function tools round-trip through /chat/completions for every backend.

Streaming

const stream = await client.responses.create({ model: 'llama-3.3-70b-versatile', input: 'Count to five.', stream: true, }) for await (const event of stream) { if (event.type === 'response.output_text.delta') process.stdout.write(event.delta) }

Compatible client adapters