ChatGPT-Next-Web自定义模型配置:灵活控制AI模型列表
在使用ChatGPT-Next-Web构建智能对话系统时,用户常常需要根据实际需求管理可用的AI模型列表。本文将详细介绍如何通过配置文件和代码设置来自定义模型列表,包括启用/禁用模型、添加自定义模型以及设置默认模型等功能。## 模型配置基础ChatGPT-Next-Web的模型配置系统主要通过`app/config/client.ts`文件实现客户端配置管理。该文件提供了`getClien
ChatGPT-Next-Web自定义模型配置:灵活控制AI模型列表
在使用ChatGPT-Next-Web构建智能对话系统时,用户常常需要根据实际需求管理可用的AI模型列表。本文将详细介绍如何通过配置文件和代码设置来自定义模型列表,包括启用/禁用模型、添加自定义模型以及设置默认模型等功能。
模型配置基础
ChatGPT-Next-Web的模型配置系统主要通过app/config/client.ts文件实现客户端配置管理。该文件提供了getClientConfig()函数,用于获取构建和运行时配置,为模型管理提供基础环境。
export function getClientConfig() {
if (typeof document !== "undefined") {
// 客户端环境下从meta标签获取配置
return JSON.parse(queryMeta("config") || "{}") as BuildConfig;
}
if (typeof process !== "undefined") {
// 服务端环境下获取构建配置
return getBuildConfig();
}
}
模型列表的核心处理逻辑位于app/utils/model.ts文件中,该文件提供了一系列函数用于收集、排序和筛选模型。其中collectModels()函数负责整合默认模型和自定义模型配置,生成最终可用的模型列表。
默认模型与自定义模型
默认模型定义
系统默认模型定义在app/constant.ts文件的DEFAULT_MODELS常量中,包含了主流AI模型的基本信息。以下是OpenAI模型的客户端实现示例(app/client/platforms/openai.ts):
export class ChatGPTApi implements LLMApi {
async models(): Promise<LLMModel[]> {
if (this.disableListModels) {
return DEFAULT_MODELS.slice();
}
// 从API获取模型列表的逻辑
// ...
}
}
自定义模型配置
通过修改customModels参数可以灵活控制模型的可用性。app/utils/model.ts中的collectModelTable()函数处理自定义模型配置字符串,支持以下操作:
- 启用模型:
+modelName@provider - 禁用模型:
-modelName@provider - 添加自定义模型:
modelName@provider=displayName
// 示例:启用gpt-4,禁用gpt-3.5-turbo,添加自定义模型
const customModels = "+gpt-4@openai,-gpt-3.5-turbo@openai,my-model@custom=My Custom Model";
const models = collectModels(DEFAULT_MODELS, customModels);
模型管理核心功能
模型收集与排序
collectModels()函数是模型管理的核心,它将默认模型与自定义配置合并,并进行排序:
export function collectModels(
models: readonly LLMModel[],
customModels: string,
) {
const modelTable = collectModelTable(models, customModels);
let allModels = Object.values(modelTable);
allModels = sortModelTable(allModels);
return allModels;
}
排序逻辑由sortModelTable()实现,优先按提供商排序,再按模型顺序排序:
const sortModelTable = (models: ReturnType<typeof collectModels>) =>
models.sort((a, b) => {
if (a.provider && b.provider) {
let cmp = a.provider.sorted - b.provider.sorted;
return cmp === 0 ? a.sorted - b.sorted : cmp;
} else {
return a.sorted - b.sorted;
}
});
模型可用性控制
isModelAvailableInServer()函数用于检查模型在服务端的可用性状态:
export function isModelAvailableInServer(
customModels: string,
modelName: string,
providerName: string,
) {
const fullName = `${modelName}@${providerName}`;
const modelTable = collectModelTable(DEFAULT_MODELS, customModels);
return modelTable[fullName]?.available === false;
}
实际应用示例
配置自定义模型
在配置文件中添加自定义模型的示例:
// 在环境变量或配置文件中设置
CUSTOM_MODELS="gpt-4@OpenAI,gpt-3.5-turbo@OpenAI,my-custom-model@CustomProvider"
启用/禁用模型
通过前缀+(启用)和-(禁用)来控制模型状态:
// 禁用gpt-3.5-turbo,启用gpt-4
CUSTOM_MODELS="-gpt-3.5-turbo@OpenAI,+gpt-4@OpenAI"
设置默认模型
在app/store/config.ts中设置默认模型:
export const useAppConfig = create<AppConfigStore>()(
persist(
(set, get) => ({
// ...其他配置
modelConfig: {
model: "gpt-4", // 默认模型
// ...其他模型配置
},
}),
{
name: "app-config",
},
),
);
高级配置:模型提供商扩展
ChatGPT-Next-Web支持多种模型提供商,每种提供商的实现位于app/client/platforms/目录下。例如,OpenAI的实现位于app/client/platforms/openai.ts,包含了模型调用、请求处理等逻辑。
要添加新的模型提供商,可以参考现有实现创建新的平台文件,并在模型配置中注册。
总结
通过本文介绍的方法,您可以灵活地管理ChatGPT-Next-Web中的AI模型列表,满足不同场景下的需求。主要配置文件和代码位置如下:
- 客户端配置:app/config/client.ts
- 模型管理工具:app/utils/model.ts
- 模型提供商实现:app/client/platforms/
- 默认模型定义:app/constant.ts
掌握这些配置技巧,可以让您的智能对话系统更加灵活和高效,充分发挥不同AI模型的优势。
官方文档:docs/user-manual-cn.md 配置示例:docs/faq-cn.md
更多推荐



所有评论(0)