diff --git a/src/fetch-api.ts b/src/fetch-api.ts index 5b14abb..fe099bd 100644 --- a/src/fetch-api.ts +++ b/src/fetch-api.ts @@ -1,8 +1,13 @@ import ky from 'ky'; +import type { Options } from 'ky'; import { OpenAIApiError } from './errors'; const DEFAULT_BASE_URL = 'https://api.openai.com/v1'; +export interface FetchOptions extends Options { + credentials?: string; +} + /** * Create an instance of Ky with options shared by all requests. */ @@ -10,6 +15,7 @@ export function createApiInstance(opts: { apiKey: string; baseUrl?: string; organizationId?: string; + fetchOptions?: FetchOptions; }) { return ky.extend({ prefixUrl: opts.baseUrl || DEFAULT_BASE_URL, @@ -21,6 +27,7 @@ export function createApiInstance(opts: { 'OpenAI-Organization': opts.organizationId, }), }, + ...opts.fetchOptions, hooks: { beforeError: [ // @ts-ignore diff --git a/src/openai-client.ts b/src/openai-client.ts index bf65f7d..3172970 100644 --- a/src/openai-client.ts +++ b/src/openai-client.ts @@ -8,6 +8,7 @@ import type { } from './schemas/completion'; import type { EditParams, EditResponse } from './schemas/edit'; import type { EmbeddingParams, EmbeddingResponse } from './schemas/embedding'; +import type { FetchOptions } from './fetch-api'; export type ConfigOpts = { /** @@ -25,6 +26,8 @@ export type ConfigOpts = { * @see https://beta.openai.com/docs/api-reference/requesting-organization */ organizationId?: string; + + fetchOptions?: FetchOptions; }; export class OpenAIClient { @@ -39,6 +42,7 @@ export class OpenAIClient { this.api = createApiInstance({ apiKey, organizationId: opts.organizationId, + fetchOptions: opts.fetchOptions, }); }