Skip to content

Commit 3c2b344

Browse files
authored
feat: set the length of the historical message (#75)
1 parent e4f87e4 commit 3c2b344

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

src/providers/openai/handler.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { fetchChatCompletion, fetchImageGeneration } from './api'
22
import { parseStream } from './parser'
3+
import type { Message } from '@/types/message'
34
import type { HandlerPayload, Provider } from '@/types/provider'
45

56
export const handlePrompt: Provider['handlePrompt'] = async(payload, signal?: AbortSignal) => {
@@ -35,14 +36,35 @@ export const handleRapidPrompt: Provider['handleRapidPrompt'] = async(prompt, gl
3536
}
3637

3738
const handleChatCompletion = async(payload: HandlerPayload, signal?: AbortSignal) => {
39+
// An array to store the chat messages
40+
const messages: Message[] = []
41+
42+
let maxTokens = payload.globalSettings.maxTokens as number
43+
let messageHistorySize = payload.globalSettings.messageHistorySize as number
44+
45+
// Iterate through the message history
46+
while (messageHistorySize > 0) {
47+
messageHistorySize--
48+
// Get the last message from the payload
49+
const m = payload.messages.pop()
50+
if (m === undefined)
51+
break
52+
53+
if (maxTokens - m.content.length < 0)
54+
break
55+
56+
maxTokens -= m.content.length
57+
messages.unshift(m)
58+
}
59+
3860
const response = await fetchChatCompletion({
3961
apiKey: payload.globalSettings.apiKey as string,
4062
baseUrl: (payload.globalSettings.baseUrl as string).trim().replace(/\/$/, ''),
4163
body: {
64+
messages,
65+
max_tokens: maxTokens,
4266
model: payload.globalSettings.model as string,
43-
messages: payload.messages,
4467
temperature: payload.globalSettings.temperature as number,
45-
max_tokens: payload.globalSettings.maxTokens as number,
4668
top_p: payload.globalSettings.topP as number,
4769
stream: payload.globalSettings.stream as boolean ?? true,
4870
},

src/providers/openai/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ const providerOpenAI = () => {
5151
default: 2048,
5252
step: 1,
5353
},
54+
{
55+
key: 'messageHistorySize',
56+
name: 'Max History Message Size',
57+
description: 'The number of retained historical messages will be truncated if the length of the message exceeds the MaxToken parameter.',
58+
type: 'slider',
59+
min: 1,
60+
max: 24,
61+
default: 5,
62+
step: 1,
63+
},
5464
{
5565
key: 'temperature',
5666
name: 'Temperature',

0 commit comments

Comments
 (0)