continuedev/continue · error · Error
AskSage does not support legacy completions API
Error message
AskSage does not support legacy completions API
What it means
AskSage exposes a chat-style API only; the adapter's completionNonStream (legacy /v1/completions style) is a stub that throws immediately. Convert requests to chat completions.
Source
Thrown at packages/openai-adapters/src/apis/AskSage.ts:471
yield chatChunk({
content: null,
model: body.model,
finish_reason:
validToolCalls && validToolCalls.length > 0 ? "tool_calls" : "stop",
});
} catch (error) {
if (error instanceof Error) {
throw new Error(`AskSage client error: ${error.message}`);
}
throw error;
}
}
completionNonStream(
_body: CompletionCreateParamsNonStreaming,
_signal: AbortSignal,
): Promise<Completion> {
throw new Error("AskSage does not support legacy completions API");
}
completionStream(
_body: CompletionCreateParamsStreaming,
_signal: AbortSignal,
): AsyncGenerator<Completion> {
throw new Error("AskSage does not support legacy completions API");
}
fimStream(
_body: FimCreateParamsStreaming,
_signal: AbortSignal,
): AsyncGenerator<ChatCompletionChunk> {
throw new Error("AskSage does not support FIM");
}
async embed(_body: EmbeddingCreateParams): Promise<CreateEmbeddingResponse> {
throw new Error("AskSage does not support embeddings");View on GitHub (pinned to 5522c6f44c)
Solutions
- Use chatCompletionNonStream with a messages array
- In routing layers, translate prompt→messages for AskSage
- Remove legacy completion paths when targeting AskSage
Example fix
// before
const res = await api.completionNonStream({ model: 'gpt-4', prompt: 'Hi' }, signal);
// after
const res = await api.chatCompletionNonStream({ model: 'gpt-4', messages: [{ role: 'user', content: 'Hi' }] }, signal); Defensive patterns
Strategy: type-guard
Validate before calling
if (api instanceof AskSage) throw new Error('AskSage requires chat completions'); Type guard
function supportsLegacyCompletions(api: BaseApi): boolean { return !(api instanceof AskSage) && !(api instanceof Anthropic); } Try / catch
try { return await api.completionNonStream(body, signal); }
catch (e) { if (/legacy completions API/.test(String(e))) { return await api.chatCompletionNonStream(toChat(body), signal); } throw e; } Prevention
- Translate prompt→messages centrally for AskSage
- Prefer chat completions in all new code
When it happens
Trigger: Calling completionNonStream(body, signal) with CompletionCreateParamsNonStreaming on the AskSage adapter.
Common situations: Generic completion routing that defaults to legacy completions; migrating an OpenAI legacy-completions codebase to AskSage.
Related errors
- Method not implemented.
- AskSage does not support FIM
- AskSage does not support embeddings
- AskSage does not support reranking
- AI SDK provider does not support fill-in-the-middle (FIM) co
AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27).
Data as JSON: /api/errors/11a91db8e26eab46.
Report an issue: GitHub.