@interview-sdk/adapter-openai
v0.1.2
Published
OpenAI provider adapter for @interview-sdk/core.
Maintainers
Readme
@interview-sdk/adapter-openai
OpenAI provider adapter for @interview-sdk/core, built on the official
openai SDK's Responses API (client.responses.create) — OpenAI's
current recommended interface, though the older Chat Completions API remains
fully supported indefinitely if you need it instead.
Install
npm install @interview-sdk/core @interview-sdk/adapter-openaiUsage
import { OpenAIAdapter } from '@interview-sdk/adapter-openai';
const adapter = new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY });
// <InterviewWidget adapter={adapter} mode="client" ... />
// or: new ServerAnswerProcessor({ questions, rubric, adapter })(AdapterRegistry from @interview-sdk/core is a separate, optional utility
for looking an adapter up by string id at runtime — most apps just pass the
adapter directly like above.)
OpenAIAdapter accepts an optional model (defaults to gpt-5.4-mini — a
cost-effective choice for structured scoring tasks; pass gpt-5.5 for the
frontier model) and an optional pre-configured client for testing or custom
base URLs.
Behavior
- Maps
AIMessage[]directly onto the Responses API'sinputarray —system/user/assistantroles all map 1:1. - Requests
text: { format: { type: 'json_object' } }whenresponseFormat: 'json'is set. Deliberately notjson_schema(OpenAI's stricter, preferred structured-output mode): core's evaluation/follow-up response shapes carry dynamic keys (developer-defined rubric dimension ids), which a fixed JSON Schema can't express. - Normalizes every OpenAI SDK exception onto the shared
Provider*Errortaxonomy exported by@interview-sdk/core, the same as every other adapter, sowithRetryandFailoverAdapterwork without any OpenAI-specific knowledge. - Context-length overflow and a deprecated/retired model id both surface as
plain 4xx errors from OpenAI with no distinct error type — context-length
is detected heuristically from the message text; a missing/retired model
normalizes to
ProviderInvalidRequestError.
Verified against
[email protected], current as of 2026-07-04 — model names, the Responses vs.
Chat Completions guidance, and the error taxonomy shift quickly; re-check
before assuming this stays accurate for long.
