mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-05-19 20:20:16 +09:00
feat: use regex patterns for vision models and allow adding capabilities to models through env var NEXT_PUBLIC_VISION_MODELS.
This commit is contained in:
parent
83cea3a90d
commit
a433d1606c
@ -291,6 +291,21 @@ export const DEFAULT_TTS_VOICES = [
|
|||||||
"shimmer",
|
"shimmer",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const VISION_MODEL_REGEXES = [
|
||||||
|
/vision/,
|
||||||
|
/gpt-4o/,
|
||||||
|
/claude-3/,
|
||||||
|
/gemini-1\.5/,
|
||||||
|
/gemini-exp/,
|
||||||
|
/learnlm/,
|
||||||
|
/qwen-vl/,
|
||||||
|
/qwen2-vl/,
|
||||||
|
/gpt-4-turbo(?!.*preview)/, // Matches "gpt-4-turbo" but not "gpt-4-turbo-preview"
|
||||||
|
/^dall-e-3$/, // Matches exactly "dall-e-3"
|
||||||
|
];
|
||||||
|
|
||||||
|
export const EXCLUDE_VISION_MODEL_REGEXES = [/claude-3-5-haiku-20241022/];
|
||||||
|
|
||||||
const openaiModels = [
|
const openaiModels = [
|
||||||
"gpt-3.5-turbo",
|
"gpt-3.5-turbo",
|
||||||
"gpt-3.5-turbo-1106",
|
"gpt-3.5-turbo-1106",
|
||||||
|
29
app/utils.ts
29
app/utils.ts
@ -5,6 +5,7 @@ import { RequestMessage } from "./client/api";
|
|||||||
import { ServiceProvider } from "./constant";
|
import { ServiceProvider } from "./constant";
|
||||||
// import { fetch as tauriFetch, ResponseType } from "@tauri-apps/api/http";
|
// import { fetch as tauriFetch, ResponseType } from "@tauri-apps/api/http";
|
||||||
import { fetch as tauriStreamFetch } from "./utils/stream";
|
import { fetch as tauriStreamFetch } from "./utils/stream";
|
||||||
|
import { VISION_MODEL_REGEXES, EXCLUDE_VISION_MODEL_REGEXES } from "./constant";
|
||||||
|
|
||||||
export function trimTopic(topic: string) {
|
export function trimTopic(topic: string) {
|
||||||
// Fix an issue where double quotes still show in the Indonesian language
|
// Fix an issue where double quotes still show in the Indonesian language
|
||||||
@ -252,27 +253,15 @@ export function getMessageImages(message: RequestMessage): string[] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function isVisionModel(model: string) {
|
export function isVisionModel(model: string) {
|
||||||
// Note: This is a better way using the TypeScript feature instead of `&&` or `||` (ts v5.5.0-dev.20240314 I've been using)
|
const envVisionModels = process.env.NEXT_PUBLIC_VISION_MODELS?.split(",").map(
|
||||||
|
(m) => m.trim(),
|
||||||
const excludeKeywords = ["claude-3-5-haiku-20241022"];
|
);
|
||||||
const visionKeywords = [
|
if (envVisionModels?.includes(model)) {
|
||||||
"vision",
|
return true;
|
||||||
"gpt-4o",
|
}
|
||||||
"claude-3",
|
|
||||||
"gemini-1.5",
|
|
||||||
"gemini-exp",
|
|
||||||
"learnlm",
|
|
||||||
"qwen-vl",
|
|
||||||
"qwen2-vl",
|
|
||||||
];
|
|
||||||
const isGpt4Turbo =
|
|
||||||
model.includes("gpt-4-turbo") && !model.includes("preview");
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
!excludeKeywords.some((keyword) => model.includes(keyword)) &&
|
!EXCLUDE_VISION_MODEL_REGEXES.some((regex) => regex.test(model)) &&
|
||||||
(visionKeywords.some((keyword) => model.includes(keyword)) ||
|
VISION_MODEL_REGEXES.some((regex) => regex.test(model))
|
||||||
isGpt4Turbo ||
|
|
||||||
isDalle3(model))
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user