| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- var _OpenAI_instances, _a, _OpenAI_encoder, _OpenAI_baseURLOverridden;
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "./internal/tslib.mjs";
- import { uuid4 } from "./internal/utils/uuid.mjs";
- import { validatePositiveInteger, isAbsoluteURL, safeJSON } from "./internal/utils/values.mjs";
- import { sleep } from "./internal/utils/sleep.mjs";
- import { castToError, isAbortError } from "./internal/errors.mjs";
- import { getPlatformHeaders } from "./internal/detect-platform.mjs";
- import * as Shims from "./internal/shims.mjs";
- import * as Opts from "./internal/request-options.mjs";
- import * as qs from "./internal/qs/index.mjs";
- import { VERSION } from "./version.mjs";
- import * as Errors from "./core/error.mjs";
- import * as Pagination from "./core/pagination.mjs";
- import * as Uploads from "./core/uploads.mjs";
- import * as API from "./resources/index.mjs";
- import { APIPromise } from "./core/api-promise.mjs";
- import { Batches, } from "./resources/batches.mjs";
- import { Completions, } from "./resources/completions.mjs";
- import { Embeddings, } from "./resources/embeddings.mjs";
- import { Files, } from "./resources/files.mjs";
- import { Images, } from "./resources/images.mjs";
- import { Models } from "./resources/models.mjs";
- import { Moderations, } from "./resources/moderations.mjs";
- import { Videos, } from "./resources/videos.mjs";
- import { Webhooks } from "./resources/webhooks.mjs";
- import { Audio } from "./resources/audio/audio.mjs";
- import { Beta } from "./resources/beta/beta.mjs";
- import { Chat } from "./resources/chat/chat.mjs";
- import { Containers, } from "./resources/containers/containers.mjs";
- import { Conversations } from "./resources/conversations/conversations.mjs";
- import { Evals, } from "./resources/evals/evals.mjs";
- import { FineTuning } from "./resources/fine-tuning/fine-tuning.mjs";
- import { Graders } from "./resources/graders/graders.mjs";
- import { Realtime } from "./resources/realtime/realtime.mjs";
- import { Responses } from "./resources/responses/responses.mjs";
- import { Uploads as UploadsAPIUploads, } from "./resources/uploads/uploads.mjs";
- import { VectorStores, } from "./resources/vector-stores/vector-stores.mjs";
- import { isRunningInBrowser } from "./internal/detect-platform.mjs";
- import { buildHeaders } from "./internal/headers.mjs";
- import { readEnv } from "./internal/utils/env.mjs";
- import { formatRequestDetails, loggerFor, parseLogLevel, } from "./internal/utils/log.mjs";
- import { isEmptyObj } from "./internal/utils/values.mjs";
- /**
- * API Client for interfacing with the OpenAI API.
- */
- export class OpenAI {
- /**
- * API Client for interfacing with the OpenAI API.
- *
- * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]
- * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]
- * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]
- * @param {string | null | undefined} [opts.webhookSecret=process.env['OPENAI_WEBHOOK_SECRET'] ?? null]
- * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.
- * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.
- * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.
- * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.
- * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.
- * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.
- * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.
- * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.
- */
- constructor({ baseURL = readEnv('OPENAI_BASE_URL'), apiKey = readEnv('OPENAI_API_KEY'), organization = readEnv('OPENAI_ORG_ID') ?? null, project = readEnv('OPENAI_PROJECT_ID') ?? null, webhookSecret = readEnv('OPENAI_WEBHOOK_SECRET') ?? null, ...opts } = {}) {
- _OpenAI_instances.add(this);
- _OpenAI_encoder.set(this, void 0);
- this.completions = new API.Completions(this);
- this.chat = new API.Chat(this);
- this.embeddings = new API.Embeddings(this);
- this.files = new API.Files(this);
- this.images = new API.Images(this);
- this.audio = new API.Audio(this);
- this.moderations = new API.Moderations(this);
- this.models = new API.Models(this);
- this.fineTuning = new API.FineTuning(this);
- this.graders = new API.Graders(this);
- this.vectorStores = new API.VectorStores(this);
- this.webhooks = new API.Webhooks(this);
- this.beta = new API.Beta(this);
- this.batches = new API.Batches(this);
- this.uploads = new API.Uploads(this);
- this.responses = new API.Responses(this);
- this.realtime = new API.Realtime(this);
- this.conversations = new API.Conversations(this);
- this.evals = new API.Evals(this);
- this.containers = new API.Containers(this);
- this.videos = new API.Videos(this);
- if (apiKey === undefined) {
- throw new Errors.OpenAIError('Missing credentials. Please pass an `apiKey`, or set the `OPENAI_API_KEY` environment variable.');
- }
- const options = {
- apiKey,
- organization,
- project,
- webhookSecret,
- ...opts,
- baseURL: baseURL || `https://api.openai.com/v1`,
- };
- if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {
- throw new Errors.OpenAIError("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\nIf you understand the risks and have appropriate mitigations in place,\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\n\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\n\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\n");
- }
- this.baseURL = options.baseURL;
- this.timeout = options.timeout ?? _a.DEFAULT_TIMEOUT /* 10 minutes */;
- this.logger = options.logger ?? console;
- const defaultLogLevel = 'warn';
- // Set default logLevel early so that we can log a warning in parseLogLevel.
- this.logLevel = defaultLogLevel;
- this.logLevel =
- parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??
- parseLogLevel(readEnv('OPENAI_LOG'), "process.env['OPENAI_LOG']", this) ??
- defaultLogLevel;
- this.fetchOptions = options.fetchOptions;
- this.maxRetries = options.maxRetries ?? 2;
- this.fetch = options.fetch ?? Shims.getDefaultFetch();
- __classPrivateFieldSet(this, _OpenAI_encoder, Opts.FallbackEncoder, "f");
- this._options = options;
- this.apiKey = typeof apiKey === 'string' ? apiKey : 'Missing Key';
- this.organization = organization;
- this.project = project;
- this.webhookSecret = webhookSecret;
- }
- /**
- * Create a new client instance re-using the same options given to the current client with optional overriding.
- */
- withOptions(options) {
- const client = new this.constructor({
- ...this._options,
- baseURL: this.baseURL,
- maxRetries: this.maxRetries,
- timeout: this.timeout,
- logger: this.logger,
- logLevel: this.logLevel,
- fetch: this.fetch,
- fetchOptions: this.fetchOptions,
- apiKey: this.apiKey,
- organization: this.organization,
- project: this.project,
- webhookSecret: this.webhookSecret,
- ...options,
- });
- return client;
- }
- defaultQuery() {
- return this._options.defaultQuery;
- }
- validateHeaders({ values, nulls }) {
- return;
- }
- async authHeaders(opts) {
- return buildHeaders([{ Authorization: `Bearer ${this.apiKey}` }]);
- }
- stringifyQuery(query) {
- return qs.stringify(query, { arrayFormat: 'brackets' });
- }
- getUserAgent() {
- return `${this.constructor.name}/JS ${VERSION}`;
- }
- defaultIdempotencyKey() {
- return `stainless-node-retry-${uuid4()}`;
- }
- makeStatusError(status, error, message, headers) {
- return Errors.APIError.generate(status, error, message, headers);
- }
- async _callApiKey() {
- const apiKey = this._options.apiKey;
- if (typeof apiKey !== 'function')
- return false;
- let token;
- try {
- token = await apiKey();
- }
- catch (err) {
- if (err instanceof Errors.OpenAIError)
- throw err;
- throw new Errors.OpenAIError(`Failed to get token from 'apiKey' function: ${err.message}`,
- // @ts-ignore
- { cause: err });
- }
- if (typeof token !== 'string' || !token) {
- throw new Errors.OpenAIError(`Expected 'apiKey' function argument to return a string but it returned ${token}`);
- }
- this.apiKey = token;
- return true;
- }
- buildURL(path, query, defaultBaseURL) {
- const baseURL = (!__classPrivateFieldGet(this, _OpenAI_instances, "m", _OpenAI_baseURLOverridden).call(this) && defaultBaseURL) || this.baseURL;
- const url = isAbsoluteURL(path) ?
- new URL(path)
- : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));
- const defaultQuery = this.defaultQuery();
- if (!isEmptyObj(defaultQuery)) {
- query = { ...defaultQuery, ...query };
- }
- if (typeof query === 'object' && query && !Array.isArray(query)) {
- url.search = this.stringifyQuery(query);
- }
- return url.toString();
- }
- /**
- * Used as a callback for mutating the given `FinalRequestOptions` object.
- */
- async prepareOptions(options) {
- await this._callApiKey();
- }
- /**
- * Used as a callback for mutating the given `RequestInit` object.
- *
- * This is useful for cases where you want to add certain headers based off of
- * the request properties, e.g. `method` or `url`.
- */
- async prepareRequest(request, { url, options }) { }
- get(path, opts) {
- return this.methodRequest('get', path, opts);
- }
- post(path, opts) {
- return this.methodRequest('post', path, opts);
- }
- patch(path, opts) {
- return this.methodRequest('patch', path, opts);
- }
- put(path, opts) {
- return this.methodRequest('put', path, opts);
- }
- delete(path, opts) {
- return this.methodRequest('delete', path, opts);
- }
- methodRequest(method, path, opts) {
- return this.request(Promise.resolve(opts).then((opts) => {
- return { method, path, ...opts };
- }));
- }
- request(options, remainingRetries = null) {
- return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));
- }
- async makeRequest(optionsInput, retriesRemaining, retryOfRequestLogID) {
- const options = await optionsInput;
- const maxRetries = options.maxRetries ?? this.maxRetries;
- if (retriesRemaining == null) {
- retriesRemaining = maxRetries;
- }
- await this.prepareOptions(options);
- const { req, url, timeout } = await this.buildRequest(options, {
- retryCount: maxRetries - retriesRemaining,
- });
- await this.prepareRequest(req, { url, options });
- /** Not an API request ID, just for correlating local log entries. */
- const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');
- const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;
- const startTime = Date.now();
- loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({
- retryOfRequestLogID,
- method: options.method,
- url,
- options,
- headers: req.headers,
- }));
- if (options.signal?.aborted) {
- throw new Errors.APIUserAbortError();
- }
- const controller = new AbortController();
- const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);
- const headersTime = Date.now();
- if (response instanceof globalThis.Error) {
- const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;
- if (options.signal?.aborted) {
- throw new Errors.APIUserAbortError();
- }
- // detect native connection timeout errors
- // deno throws "TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)"
- // undici throws "TypeError: fetch failed" with cause "ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)"
- // others do not provide enough information to distinguish timeouts from other connection errors
- const isTimeout = isAbortError(response) ||
- /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));
- if (retriesRemaining) {
- loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`);
- loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`, formatRequestDetails({
- retryOfRequestLogID,
- url,
- durationMs: headersTime - startTime,
- message: response.message,
- }));
- return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);
- }
- loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`);
- loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`, formatRequestDetails({
- retryOfRequestLogID,
- url,
- durationMs: headersTime - startTime,
- message: response.message,
- }));
- if (isTimeout) {
- throw new Errors.APIConnectionTimeoutError();
- }
- throw new Errors.APIConnectionError({ cause: response });
- }
- const specialHeaders = [...response.headers.entries()]
- .filter(([name]) => name === 'x-request-id')
- .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))
- .join('');
- const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${response.ok ? 'succeeded' : 'failed'} with status ${response.status} in ${headersTime - startTime}ms`;
- if (!response.ok) {
- const shouldRetry = await this.shouldRetry(response);
- if (retriesRemaining && shouldRetry) {
- const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;
- // We don't need the body of this response.
- await Shims.CancelReadableStream(response.body);
- loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
- loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({
- retryOfRequestLogID,
- url: response.url,
- status: response.status,
- headers: response.headers,
- durationMs: headersTime - startTime,
- }));
- return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID, response.headers);
- }
- const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;
- loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
- const errText = await response.text().catch((err) => castToError(err).message);
- const errJSON = safeJSON(errText);
- const errMessage = errJSON ? undefined : errText;
- loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({
- retryOfRequestLogID,
- url: response.url,
- status: response.status,
- headers: response.headers,
- message: errMessage,
- durationMs: Date.now() - startTime,
- }));
- const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);
- throw err;
- }
- loggerFor(this).info(responseInfo);
- loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({
- retryOfRequestLogID,
- url: response.url,
- status: response.status,
- headers: response.headers,
- durationMs: headersTime - startTime,
- }));
- return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };
- }
- getAPIList(path, Page, opts) {
- return this.requestAPIList(Page, { method: 'get', path, ...opts });
- }
- requestAPIList(Page, options) {
- const request = this.makeRequest(options, null, undefined);
- return new Pagination.PagePromise(this, request, Page);
- }
- async fetchWithTimeout(url, init, ms, controller) {
- const { signal, method, ...options } = init || {};
- if (signal)
- signal.addEventListener('abort', () => controller.abort());
- const timeout = setTimeout(() => controller.abort(), ms);
- const isReadableBody = (globalThis.ReadableStream && options.body instanceof globalThis.ReadableStream) ||
- (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);
- const fetchOptions = {
- signal: controller.signal,
- ...(isReadableBody ? { duplex: 'half' } : {}),
- method: 'GET',
- ...options,
- };
- if (method) {
- // Custom methods like 'patch' need to be uppercased
- // See https://github.com/nodejs/undici/issues/2294
- fetchOptions.method = method.toUpperCase();
- }
- try {
- // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
- return await this.fetch.call(undefined, url, fetchOptions);
- }
- finally {
- clearTimeout(timeout);
- }
- }
- async shouldRetry(response) {
- // Note this is not a standard header.
- const shouldRetryHeader = response.headers.get('x-should-retry');
- // If the server explicitly says whether or not to retry, obey.
- if (shouldRetryHeader === 'true')
- return true;
- if (shouldRetryHeader === 'false')
- return false;
- // Retry on request timeouts.
- if (response.status === 408)
- return true;
- // Retry on lock timeouts.
- if (response.status === 409)
- return true;
- // Retry on rate limits.
- if (response.status === 429)
- return true;
- // Retry internal errors.
- if (response.status >= 500)
- return true;
- return false;
- }
- async retryRequest(options, retriesRemaining, requestLogID, responseHeaders) {
- let timeoutMillis;
- // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.
- const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');
- if (retryAfterMillisHeader) {
- const timeoutMs = parseFloat(retryAfterMillisHeader);
- if (!Number.isNaN(timeoutMs)) {
- timeoutMillis = timeoutMs;
- }
- }
- // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After
- const retryAfterHeader = responseHeaders?.get('retry-after');
- if (retryAfterHeader && !timeoutMillis) {
- const timeoutSeconds = parseFloat(retryAfterHeader);
- if (!Number.isNaN(timeoutSeconds)) {
- timeoutMillis = timeoutSeconds * 1000;
- }
- else {
- timeoutMillis = Date.parse(retryAfterHeader) - Date.now();
- }
- }
- // If the API asks us to wait a certain amount of time (and it's a reasonable amount),
- // just do what it says, but otherwise calculate a default
- if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {
- const maxRetries = options.maxRetries ?? this.maxRetries;
- timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);
- }
- await sleep(timeoutMillis);
- return this.makeRequest(options, retriesRemaining - 1, requestLogID);
- }
- calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {
- const initialRetryDelay = 0.5;
- const maxRetryDelay = 8.0;
- const numRetries = maxRetries - retriesRemaining;
- // Apply exponential backoff, but not more than the max.
- const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);
- // Apply some jitter, take up to at most 25 percent of the retry time.
- const jitter = 1 - Math.random() * 0.25;
- return sleepSeconds * jitter * 1000;
- }
- async buildRequest(inputOptions, { retryCount = 0 } = {}) {
- const options = { ...inputOptions };
- const { method, path, query, defaultBaseURL } = options;
- const url = this.buildURL(path, query, defaultBaseURL);
- if ('timeout' in options)
- validatePositiveInteger('timeout', options.timeout);
- options.timeout = options.timeout ?? this.timeout;
- const { bodyHeaders, body } = this.buildBody({ options });
- const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });
- const req = {
- method,
- headers: reqHeaders,
- ...(options.signal && { signal: options.signal }),
- ...(globalThis.ReadableStream &&
- body instanceof globalThis.ReadableStream && { duplex: 'half' }),
- ...(body && { body }),
- ...(this.fetchOptions ?? {}),
- ...(options.fetchOptions ?? {}),
- };
- return { req, url, timeout: options.timeout };
- }
- async buildHeaders({ options, method, bodyHeaders, retryCount, }) {
- let idempotencyHeaders = {};
- if (this.idempotencyHeader && method !== 'get') {
- if (!options.idempotencyKey)
- options.idempotencyKey = this.defaultIdempotencyKey();
- idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;
- }
- const headers = buildHeaders([
- idempotencyHeaders,
- {
- Accept: 'application/json',
- 'User-Agent': this.getUserAgent(),
- 'X-Stainless-Retry-Count': String(retryCount),
- ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),
- ...getPlatformHeaders(),
- 'OpenAI-Organization': this.organization,
- 'OpenAI-Project': this.project,
- },
- await this.authHeaders(options),
- this._options.defaultHeaders,
- bodyHeaders,
- options.headers,
- ]);
- this.validateHeaders(headers);
- return headers.values;
- }
- buildBody({ options: { body, headers: rawHeaders } }) {
- if (!body) {
- return { bodyHeaders: undefined, body: undefined };
- }
- const headers = buildHeaders([rawHeaders]);
- if (
- // Pass raw type verbatim
- ArrayBuffer.isView(body) ||
- body instanceof ArrayBuffer ||
- body instanceof DataView ||
- (typeof body === 'string' &&
- // Preserve legacy string encoding behavior for now
- headers.values.has('content-type')) ||
- // `Blob` is superset of `File`
- (globalThis.Blob && body instanceof globalThis.Blob) ||
- // `FormData` -> `multipart/form-data`
- body instanceof FormData ||
- // `URLSearchParams` -> `application/x-www-form-urlencoded`
- body instanceof URLSearchParams ||
- // Send chunked stream (each chunk has own `length`)
- (globalThis.ReadableStream && body instanceof globalThis.ReadableStream)) {
- return { bodyHeaders: undefined, body: body };
- }
- else if (typeof body === 'object' &&
- (Symbol.asyncIterator in body ||
- (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))) {
- return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body) };
- }
- else {
- return __classPrivateFieldGet(this, _OpenAI_encoder, "f").call(this, { body, headers });
- }
- }
- }
- _a = OpenAI, _OpenAI_encoder = new WeakMap(), _OpenAI_instances = new WeakSet(), _OpenAI_baseURLOverridden = function _OpenAI_baseURLOverridden() {
- return this.baseURL !== 'https://api.openai.com/v1';
- };
- OpenAI.OpenAI = _a;
- OpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes
- OpenAI.OpenAIError = Errors.OpenAIError;
- OpenAI.APIError = Errors.APIError;
- OpenAI.APIConnectionError = Errors.APIConnectionError;
- OpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;
- OpenAI.APIUserAbortError = Errors.APIUserAbortError;
- OpenAI.NotFoundError = Errors.NotFoundError;
- OpenAI.ConflictError = Errors.ConflictError;
- OpenAI.RateLimitError = Errors.RateLimitError;
- OpenAI.BadRequestError = Errors.BadRequestError;
- OpenAI.AuthenticationError = Errors.AuthenticationError;
- OpenAI.InternalServerError = Errors.InternalServerError;
- OpenAI.PermissionDeniedError = Errors.PermissionDeniedError;
- OpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;
- OpenAI.InvalidWebhookSignatureError = Errors.InvalidWebhookSignatureError;
- OpenAI.toFile = Uploads.toFile;
- OpenAI.Completions = Completions;
- OpenAI.Chat = Chat;
- OpenAI.Embeddings = Embeddings;
- OpenAI.Files = Files;
- OpenAI.Images = Images;
- OpenAI.Audio = Audio;
- OpenAI.Moderations = Moderations;
- OpenAI.Models = Models;
- OpenAI.FineTuning = FineTuning;
- OpenAI.Graders = Graders;
- OpenAI.VectorStores = VectorStores;
- OpenAI.Webhooks = Webhooks;
- OpenAI.Beta = Beta;
- OpenAI.Batches = Batches;
- OpenAI.Uploads = UploadsAPIUploads;
- OpenAI.Responses = Responses;
- OpenAI.Realtime = Realtime;
- OpenAI.Conversations = Conversations;
- OpenAI.Evals = Evals;
- OpenAI.Containers = Containers;
- OpenAI.Videos = Videos;
- //# sourceMappingURL=client.mjs.map
|