UNPKG

@mi-gpt/openai

Version:
91 lines (85 loc) 2.83 kB
'use strict'; var chunkKG4H6W7U_cjs = require('./chunk-KG4H6W7U.cjs'); var utils = require('@mi-gpt/utils'); var OpenAIClient = require('openai'); var proxyAgent = require('proxy-agent'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var OpenAIClient__default = /*#__PURE__*/_interopDefault(OpenAIClient); var _OpenAI = class { _client; _abortCallbacks = {}; config = {}; init(config) { var _a; this.config = utils.deepMerge(chunkKG4H6W7U_cjs.kDefaultOpenAIConfig, config); this._client ??= new OpenAIClient__default.default({ baseURL: this.config.baseURL, apiKey: this.config.apiKey, httpAgent: this.config.enableProxy ? new proxyAgent.ProxyAgent() : void 0, ...(_a = this.config.extra) == null ? void 0 : _a.clientOptions }); } dispose() { this._client = null; this._abortCallbacks = {}; } cancel(requestId) { if (requestId && this._abortCallbacks[requestId]) { this._abortCallbacks[requestId](); delete this._abortCallbacks[requestId]; } } async chat(options) { var _a, _b, _c, _d, _e, _f, _g; const { requestId, onStream, requestOptions, createParams, onError } = options; let signal; if (requestId) { const controller = new AbortController(); this._abortCallbacks[requestId] = () => controller.abort(); signal = controller.signal; } const params = utils.deepMerge( { model: this.config.model, ...(_a = this.config.extra) == null ? void 0 : _a.createParams }, createParams ); const res = await this._client.chat.completions.create( params, utils.deepMerge( { ...(_b = this.config.extra) == null ? void 0 : _b.requestOptions }, { ...requestOptions, signal } ) ).catch(async (e) => { console.error("\u274C LLM \u54CD\u5E94\u5F02\u5E38", e); await (onError == null ? void 0 : onError(e)); return null; }); let result = ""; if (params.stream) { for await (const chunk of res ?? []) { const text = ((_d = (_c = chunk.choices[0]) == null ? void 0 : _c.delta) == null ? void 0 : _d.content) || ""; const aborted = requestId && !Object.keys(this._abortCallbacks).includes(requestId); if (aborted) { result = ""; break; } if (text) { result += text; onStream == null ? void 0 : onStream(text); } } } else { result = ((_g = (_f = (_e = res == null ? void 0 : res.choices) == null ? void 0 : _e[0]) == null ? void 0 : _f.message) == null ? void 0 : _g.content) ?? ""; } if (requestId) { delete this._abortCallbacks[requestId]; } return result; } }; var OpenAI = new _OpenAI(); exports.OpenAI = OpenAI;