mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			dependabot
			...
			8737be580a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8737be580a | ||
| 
						 | 
					937e2b5a54 | ||
| 
						 | 
					afdf3a5cd4 | 
@@ -64,6 +64,11 @@ CUSTOM_MODELS=
 | 
			
		||||
# Change default model
 | 
			
		||||
DEFAULT_MODEL=
 | 
			
		||||
 | 
			
		||||
# (optional)
 | 
			
		||||
# Default: Empty
 | 
			
		||||
# Change default compress model
 | 
			
		||||
DEFAULT_COMPRESS_MODEL=
 | 
			
		||||
 | 
			
		||||
# anthropic claude Api Key.(optional)
 | 
			
		||||
ANTHROPIC_API_KEY=
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -339,6 +339,10 @@ For ByteDance: use `modelName@bytedance=deploymentName` to customize model name
 | 
			
		||||
 | 
			
		||||
Change default model
 | 
			
		||||
 | 
			
		||||
### `DEFAULT_COMPRESS_MODEL` (optional)
 | 
			
		||||
 | 
			
		||||
Change default summary model
 | 
			
		||||
 | 
			
		||||
### `VISION_MODELS` (optional)
 | 
			
		||||
 | 
			
		||||
> Default: Empty
 | 
			
		||||
@@ -365,7 +369,6 @@ Stability API key.
 | 
			
		||||
 | 
			
		||||
Customize Stability API url.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### `ENABLE_MCP` (optional)
 | 
			
		||||
 | 
			
		||||
Enable MCP(Model Context Protocol)Feature
 | 
			
		||||
 
 | 
			
		||||
@@ -244,6 +244,10 @@ DeepSeek Api Url.
 | 
			
		||||
 | 
			
		||||
更改默认模型
 | 
			
		||||
 | 
			
		||||
### `DEFAULT_COMPRESS_MODEL` (可选)
 | 
			
		||||
 | 
			
		||||
更改默认对话摘要模型
 | 
			
		||||
 | 
			
		||||
### `VISION_MODELS` (可选)
 | 
			
		||||
 | 
			
		||||
> 默认值:空
 | 
			
		||||
 
 | 
			
		||||
@@ -217,6 +217,10 @@ ByteDance モードでは、`modelName@bytedance=deploymentName` 形式でモデ
 | 
			
		||||
 | 
			
		||||
デフォルトのモデルを変更します。
 | 
			
		||||
 | 
			
		||||
### `DEFAULT_COMPRESS_MODEL` (オプション)
 | 
			
		||||
 | 
			
		||||
デフォルトの圧縮モデルを変更します。
 | 
			
		||||
 | 
			
		||||
### `VISION_MODELS` (オプション)
 | 
			
		||||
 | 
			
		||||
> デフォルト:空
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ const DANGER_CONFIG = {
 | 
			
		||||
  disableFastLink: serverConfig.disableFastLink,
 | 
			
		||||
  customModels: serverConfig.customModels,
 | 
			
		||||
  defaultModel: serverConfig.defaultModel,
 | 
			
		||||
  defaultCompressModel: serverConfig.defaultCompressModel,
 | 
			
		||||
  visionModels: serverConfig.visionModels,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -259,13 +259,15 @@ export function ModelConfigList(props: {
 | 
			
		||||
            });
 | 
			
		||||
          }}
 | 
			
		||||
        >
 | 
			
		||||
          {allModels
 | 
			
		||||
            .filter((v) => v.available)
 | 
			
		||||
            .map((v, i) => (
 | 
			
		||||
              <option value={`${v.name}@${v.provider?.providerName}`} key={i}>
 | 
			
		||||
                {v.displayName}({v.provider?.providerName})
 | 
			
		||||
              </option>
 | 
			
		||||
            ))}
 | 
			
		||||
          {Object.keys(groupModels).map((providerName, index) => (
 | 
			
		||||
            <optgroup label={providerName} key={index}>
 | 
			
		||||
              {groupModels[providerName].map((v, i) => (
 | 
			
		||||
                <option value={`${v.name}@${v.provider?.providerName}`} key={i}>
 | 
			
		||||
                  {v.displayName}
 | 
			
		||||
                </option>
 | 
			
		||||
              ))}
 | 
			
		||||
            </optgroup>
 | 
			
		||||
          ))}
 | 
			
		||||
        </Select>
 | 
			
		||||
      </ListItem>
 | 
			
		||||
    </>
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ declare global {
 | 
			
		||||
      DISABLE_FAST_LINK?: string; // disallow parse settings from url or not
 | 
			
		||||
      CUSTOM_MODELS?: string; // to control custom models
 | 
			
		||||
      DEFAULT_MODEL?: string; // to control default model in every new chat window
 | 
			
		||||
      DEFAULT_COMPRESS_MODEL?: string; // to control default compress model
 | 
			
		||||
      VISION_MODELS?: string; // to control vision models
 | 
			
		||||
 | 
			
		||||
      // stability only
 | 
			
		||||
@@ -135,6 +136,7 @@ export const getServerSideConfig = () => {
 | 
			
		||||
  const disableGPT4 = !!process.env.DISABLE_GPT4;
 | 
			
		||||
  let customModels = process.env.CUSTOM_MODELS ?? "";
 | 
			
		||||
  let defaultModel = process.env.DEFAULT_MODEL ?? "";
 | 
			
		||||
  let defaultCompressModel = process.env.DEFAULT_COMPRESS_MODEL ?? "";
 | 
			
		||||
  let visionModels = process.env.VISION_MODELS ?? "";
 | 
			
		||||
 | 
			
		||||
  if (disableGPT4) {
 | 
			
		||||
@@ -145,6 +147,9 @@ export const getServerSideConfig = () => {
 | 
			
		||||
    if (defaultModel && isGPT4Model(defaultModel)) {
 | 
			
		||||
      defaultModel = "";
 | 
			
		||||
    }
 | 
			
		||||
    if (defaultCompressModel && isGPT4Model(defaultCompressModel)) {
 | 
			
		||||
      defaultCompressModel = "";
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const isStability = !!process.env.STABILITY_API_KEY;
 | 
			
		||||
@@ -262,6 +267,7 @@ export const getServerSideConfig = () => {
 | 
			
		||||
    disableFastLink: !!process.env.DISABLE_FAST_LINK,
 | 
			
		||||
    customModels,
 | 
			
		||||
    defaultModel,
 | 
			
		||||
    defaultCompressModel,
 | 
			
		||||
    visionModels,
 | 
			
		||||
    allowedWebDavEndpoints,
 | 
			
		||||
    enableMcp: process.env.ENABLE_MCP === "true",
 | 
			
		||||
 
 | 
			
		||||
@@ -140,6 +140,7 @@ const DEFAULT_ACCESS_STATE = {
 | 
			
		||||
  disableFastLink: false,
 | 
			
		||||
  customModels: "",
 | 
			
		||||
  defaultModel: "",
 | 
			
		||||
  defaultCompressModel: "",
 | 
			
		||||
  visionModels: "",
 | 
			
		||||
 | 
			
		||||
  // tts config
 | 
			
		||||
@@ -255,12 +256,21 @@ export const useAccessStore = createPersistStore(
 | 
			
		||||
        .then((res) => res.json())
 | 
			
		||||
        .then((res) => {
 | 
			
		||||
          const defaultModel = res.defaultModel ?? "";
 | 
			
		||||
          if (defaultModel !== "") {
 | 
			
		||||
          if (defaultModel) {
 | 
			
		||||
            const [model, providerName] = getModelProvider(defaultModel);
 | 
			
		||||
            DEFAULT_CONFIG.modelConfig.model = model;
 | 
			
		||||
            DEFAULT_CONFIG.modelConfig.providerName = providerName as any;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          const defaultCompressModel = res.defaultCompressModel ?? "";
 | 
			
		||||
          if (defaultCompressModel) {
 | 
			
		||||
            const [model, providerName] =
 | 
			
		||||
              getModelProvider(defaultCompressModel);
 | 
			
		||||
            DEFAULT_CONFIG.modelConfig.compressModel = model;
 | 
			
		||||
            DEFAULT_CONFIG.modelConfig.compressProviderName =
 | 
			
		||||
              providerName as any;
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          return res;
 | 
			
		||||
        })
 | 
			
		||||
        .then((res: DangerConfig) => {
 | 
			
		||||
 
 | 
			
		||||
@@ -123,9 +123,16 @@ function getSummarizeModel(
 | 
			
		||||
  currentModel: string,
 | 
			
		||||
  providerName: string,
 | 
			
		||||
): string[] {
 | 
			
		||||
  const configStore = useAppConfig.getState();
 | 
			
		||||
  if (configStore.modelConfig.compressModel) {
 | 
			
		||||
    return [
 | 
			
		||||
      configStore.modelConfig.compressModel,
 | 
			
		||||
      configStore.modelConfig.compressProviderName,
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // if it is using gpt-* models, force to use 4o-mini to summarize
 | 
			
		||||
  if (currentModel.startsWith("gpt") || currentModel.startsWith("chatgpt")) {
 | 
			
		||||
    const configStore = useAppConfig.getState();
 | 
			
		||||
    const accessStore = useAccessStore.getState();
 | 
			
		||||
    const allModel = collectModelsWithDefaultModel(
 | 
			
		||||
      configStore.models,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user