File size: 1,266 Bytes
6dec997 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import type { ContractModel, ContractModelContext } from "./types.js";
export type OpenAIResponsesLikeClient = {
responses: {
create(input: {
model: string;
input: string;
temperature?: number;
signal?: AbortSignal;
}): Promise<{ output_text?: string }>;
};
};
export function openAIResponsesAdapter(
client: OpenAIResponsesLikeClient,
options: { model: string; temperature?: number }
): ContractModel {
return {
async generate(prompt: string, context: ContractModelContext) {
const response = await client.responses.create({
model: options.model,
input: prompt,
temperature: options.temperature,
signal: context.signal
});
if (typeof response.output_text !== "string") {
throw new Error("OpenAI response did not include output_text.");
}
return response.output_text;
}
};
}
export function staticModel(responses: string[]): ContractModel {
let index = 0;
return {
async generate() {
const response = responses[index];
index = Math.min(index + 1, responses.length - 1);
if (response === undefined) {
throw new Error("No static model responses configured.");
}
return response;
}
};
}
|