feat: fix no max_tokens in payload when calling openai vision model
This commit is contained in:
parent
264da6798c
commit
9b982b408d
|
@ -40,6 +40,20 @@ export interface OpenAIListModelResponse {
|
||||||
}>;
|
}>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface RequestPayload {
|
||||||
|
messages: {
|
||||||
|
role: "system" | "user" | "assistant";
|
||||||
|
content: string | MultimodalContent[];
|
||||||
|
}[];
|
||||||
|
stream?: boolean;
|
||||||
|
model: string;
|
||||||
|
temperature: number;
|
||||||
|
presence_penalty: number;
|
||||||
|
frequency_penalty: number;
|
||||||
|
top_p: number;
|
||||||
|
max_tokens?: number;
|
||||||
|
}
|
||||||
|
|
||||||
export class ChatGPTApi implements LLMApi {
|
export class ChatGPTApi implements LLMApi {
|
||||||
private disableListModels = true;
|
private disableListModels = true;
|
||||||
|
|
||||||
|
@ -98,7 +112,7 @@ export class ChatGPTApi implements LLMApi {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const requestPayload = {
|
const requestPayload: RequestPayload = {
|
||||||
messages,
|
messages,
|
||||||
stream: options.config.stream,
|
stream: options.config.stream,
|
||||||
model: modelConfig.model,
|
model: modelConfig.model,
|
||||||
|
@ -112,12 +126,7 @@ export class ChatGPTApi implements LLMApi {
|
||||||
|
|
||||||
// add max_tokens to vision model
|
// add max_tokens to vision model
|
||||||
if (visionModel) {
|
if (visionModel) {
|
||||||
Object.defineProperty(requestPayload, "max_tokens", {
|
requestPayload["max_tokens"] = Math.max(modelConfig.max_tokens, 4000);
|
||||||
enumerable: true,
|
|
||||||
configurable: true,
|
|
||||||
writable: true,
|
|
||||||
value: modelConfig.max_tokens,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("[Request] openai payload: ", requestPayload);
|
console.log("[Request] openai payload: ", requestPayload);
|
||||||
|
@ -229,7 +238,9 @@ export class ChatGPTApi implements LLMApi {
|
||||||
const text = msg.data;
|
const text = msg.data;
|
||||||
try {
|
try {
|
||||||
const json = JSON.parse(text);
|
const json = JSON.parse(text);
|
||||||
const choices = json.choices as Array<{ delta: { content: string } }>;
|
const choices = json.choices as Array<{
|
||||||
|
delta: { content: string };
|
||||||
|
}>;
|
||||||
const delta = choices[0]?.delta?.content;
|
const delta = choices[0]?.delta?.content;
|
||||||
const textmoderation = json?.prompt_filter_results;
|
const textmoderation = json?.prompt_filter_results;
|
||||||
|
|
||||||
|
@ -237,9 +248,17 @@ export class ChatGPTApi implements LLMApi {
|
||||||
remainText += delta;
|
remainText += delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (textmoderation && textmoderation.length > 0 && ServiceProvider.Azure) {
|
if (
|
||||||
const contentFilterResults = textmoderation[0]?.content_filter_results;
|
textmoderation &&
|
||||||
console.log(`[${ServiceProvider.Azure}] [Text Moderation] flagged categories result:`, contentFilterResults);
|
textmoderation.length > 0 &&
|
||||||
|
ServiceProvider.Azure
|
||||||
|
) {
|
||||||
|
const contentFilterResults =
|
||||||
|
textmoderation[0]?.content_filter_results;
|
||||||
|
console.log(
|
||||||
|
`[${ServiceProvider.Azure}] [Text Moderation] flagged categories result:`,
|
||||||
|
contentFilterResults,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("[Request] parse error", text, msg);
|
console.error("[Request] parse error", text, msg);
|
||||||
|
|
Loading…
Reference in New Issue