Chat completions
client.chat.complete() sends a single request and resolves with the full response.
Basic usage
const response = await client.chat.complete({
model: 'auto',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Explain quantum computing in one sentence.' },
],
});
console.log(response.choices[0].message.content);
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | auto for automatic selection, or a specific model identifier, e.g. gpt-4o, claude-sonnet-4-6 |
messages | ChatMessage[] | Yes | Conversation history |
temperature | number | No | Sampling temperature 0–2 |
maxTokens | number | No | Maximum tokens in the response |
provider | string | No | Force a specific provider, e.g. openai, anthropic |
Targeting a specific provider
By default AICP selects the provider according to your routing configuration. You can pin a request to a provider:
const response = await client.chat.complete({
model: 'claude-haiku-4-5-20251001',
messages: [{ role: 'user', content: 'Hello!' }],
provider: 'anthropic',
});
Multi-turn conversations
const messages: ChatMessage[] = [
{ role: 'system', content: 'You are a helpful assistant.' },
];
async function chat(userMessage: string) {
messages.push({ role: 'user', content: userMessage });
const response = await client.chat.complete({ model: 'auto', messages });
const reply = response.choices[0].message;
messages.push(reply);
return reply.content;
}
console.log(await chat('What is 2 + 2?'));
console.log(await chat('And multiply that by 10?'));
Response shape
{
id: 'chatcmpl-…',
object: 'chat.completion',
model: 'gpt-4o-mini',
choices: [
{
index: 0,
message: { role: 'assistant', content: '…' },
finish_reason: 'stop',
},
],
usage: {
prompt_tokens: 10,
completion_tokens: 42,
total_tokens: 52,
},
}