mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 00:40:14 +01:00
🧠 feat: Implement O1 Model Support for Max Tokens Handling (#4376)
This commit is contained in:
parent
bdc2fd307f
commit
873e0473ec
1 changed files with 11 additions and 3 deletions
|
|
@ -68,6 +68,8 @@ class OpenAIClient extends BaseClient {
|
|||
|
||||
/** @type {OpenAIUsageMetadata | undefined} */
|
||||
this.usage;
|
||||
/** @type {boolean|undefined} */
|
||||
this.isO1Model;
|
||||
}
|
||||
|
||||
// TODO: PluginsClient calls this 3x, unneeded
|
||||
|
|
@ -98,6 +100,8 @@ class OpenAIClient extends BaseClient {
|
|||
this.options.modelOptions,
|
||||
);
|
||||
|
||||
this.isO1Model = /\bo1\b/i.test(this.modelOptions.model);
|
||||
|
||||
this.defaultVisionModel = this.options.visionModel ?? 'gpt-4-vision-preview';
|
||||
if (typeof this.options.attachments?.then === 'function') {
|
||||
this.options.attachments.then((attachments) => this.checkVisionRequest(attachments));
|
||||
|
|
@ -545,8 +549,7 @@ class OpenAIClient extends BaseClient {
|
|||
promptPrefix = this.augmentedPrompt + promptPrefix;
|
||||
}
|
||||
|
||||
const isO1Model = /\bo1\b/i.test(this.modelOptions.model);
|
||||
if (promptPrefix && !isO1Model) {
|
||||
if (promptPrefix && this.isO1Model !== true) {
|
||||
promptPrefix = `Instructions:\n${promptPrefix.trim()}`;
|
||||
instructions = {
|
||||
role: 'system',
|
||||
|
|
@ -575,7 +578,7 @@ class OpenAIClient extends BaseClient {
|
|||
};
|
||||
|
||||
/** EXPERIMENTAL */
|
||||
if (promptPrefix && isO1Model) {
|
||||
if (promptPrefix && this.isO1Model === true) {
|
||||
const lastUserMessageIndex = payload.findLastIndex((message) => message.role === 'user');
|
||||
if (lastUserMessageIndex !== -1) {
|
||||
payload[
|
||||
|
|
@ -1227,6 +1230,11 @@ ${convo}
|
|||
opts.defaultHeaders = { ...opts.defaultHeaders, 'api-key': this.apiKey };
|
||||
}
|
||||
|
||||
if (this.isO1Model === true && modelOptions.max_tokens != null) {
|
||||
modelOptions.max_completion_tokens = modelOptions.max_tokens;
|
||||
delete modelOptions.max_tokens;
|
||||
}
|
||||
|
||||
if (process.env.OPENAI_ORGANIZATION) {
|
||||
opts.organization = process.env.OPENAI_ORGANIZATION;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue