aiwrapper
Version:
A Universal AI Wrapper for JavaScript & TypeScript
48 lines • 1.99 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { OpenAILikeLang } from "../openai-like/openai-like-lang.js";
export class OpenAILang extends OpenAILikeLang {
constructor(options) {
const modelName = options.model || "gpt-4o";
super({
apiKey: options.apiKey,
model: modelName,
systemPrompt: options.systemPrompt || "",
maxTokens: options.maxTokens,
baseURL: "https://api.openai.com/v1",
});
// For OpenAI, we require the model to be in aimodels database
if (!this.modelInfo) {
console.error(`Invalid OpenAI model: ${modelName}. Model not found in aimodels database.`);
}
}
transformMessages(messages) {
return messages.map((message) => {
if (message.role === "system" && this._config.model.includes("o1")) {
return Object.assign(Object.assign({}, message), { role: "user" });
}
else if (message.role === "system") {
return Object.assign(Object.assign({}, message), { role: "developer" });
}
return message;
});
}
transformBody(body) {
// OpenAI now uses max_completion_tokens instead of max_tokens
if (body.max_tokens) {
const { max_tokens } = body, rest = __rest(body, ["max_tokens"]);
return Object.assign(Object.assign({}, rest), { max_completion_tokens: max_tokens });
}
return body;
}
}
//# sourceMappingURL=openai-lang.js.map