@mi-gpt/openai
Version:
MiGPT 底层 OpenAI 接口
91 lines (85 loc) • 2.83 kB
JavaScript
;
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;