mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
			bac68466e1
			...
			Leizhenpen
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c9ef6d58ed | ||
| 
						 | 
					11b37c15bd | ||
| 
						 | 
					1d0038f17d | ||
| 
						 | 
					619fa519c0 | ||
| 
						 | 
					48469bd8ca | ||
| 
						 | 
					5a5e887f2b | ||
| 
						 | 
					b6f5d75656 | ||
| 
						 | 
					0d41a17ef6 | 
							
								
								
									
										33
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								README.md
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1 align="center">NextChat (ChatGPT Next Web)</h1>
 | 
			
		||||
<h1 align="center">NextChat</h1>
 | 
			
		||||
 | 
			
		||||
English / [简体中文](./README_CN.md)
 | 
			
		||||
 | 
			
		||||
@@ -40,31 +40,12 @@ English / [简体中文](./README_CN.md)
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
## 👋 Hey, NextChat is going to develop a native app!
 | 
			
		||||
## 🥳 Cheer for NextChat iOS Version Online!
 | 
			
		||||
 > [ 👉 Click Here Install Now](https://apps.apple.com/us/app/nextchat-ai/id6743085599)
 | 
			
		||||
 | 
			
		||||
> This week we are going to start working on iOS and Android APP, and we want to find some reliable friends to do it together!
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
✨ Several key points:
 | 
			
		||||
 | 
			
		||||
- Starting from 0, you are a veteran
 | 
			
		||||
- Completely open source, not hidden
 | 
			
		||||
- Native development, pursuing the ultimate experience
 | 
			
		||||
 | 
			
		||||
Will you come and do something together? 😎
 | 
			
		||||
 | 
			
		||||
https://github.com/ChatGPTNextWeb/NextChat/issues/6269
 | 
			
		||||
 | 
			
		||||
#Seeking for talents is thirsty #lack of people
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 🥳 Cheer for DeepSeek, China's AI star!
 | 
			
		||||
 > Purpose-Built UI for DeepSeek Reasoner Model
 | 
			
		||||
 
 | 
			
		||||
<img src="https://github.com/user-attachments/assets/f3952210-3af1-4dc0-9b81-40eaa4847d9a"/>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## 🫣 NextChat Support MCP  ! 
 | 
			
		||||
> Before build, please set env ENABLE_MCP=true
 | 
			
		||||
 | 
			
		||||
@@ -129,7 +110,7 @@ For enterprise inquiries, please contact: **business@nextchat.dev**
 | 
			
		||||
- 🚀 v2.15.8 Now supports Realtime Chat [#5672](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/issues/5672)
 | 
			
		||||
- 🚀 v2.15.4 The Application supports using Tauri fetch LLM API, MORE SECURITY! [#5379](https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/issues/5379)
 | 
			
		||||
- 🚀 v2.15.0 Now supports Plugins! Read this: [NextChat-Awesome-Plugins](https://github.com/ChatGPTNextWeb/NextChat-Awesome-Plugins)
 | 
			
		||||
- 🚀 v2.14.0 Now supports  Artifacts & SD.
 | 
			
		||||
- 🚀 v2.14.0 Now supports  Artifacts & SD 
 | 
			
		||||
- 🚀 v2.10.1 support Google Gemini Pro model.
 | 
			
		||||
- 🚀 v2.9.11 you can use azure endpoint now.
 | 
			
		||||
- 🚀 v2.8 now we have a client that runs across all platforms!
 | 
			
		||||
@@ -337,7 +318,7 @@ For ByteDance: use `modelName@bytedance=deploymentName` to customize model name
 | 
			
		||||
 | 
			
		||||
### `DEFAULT_MODEL` (optional)
 | 
			
		||||
 | 
			
		||||
Change default model.
 | 
			
		||||
Change default model
 | 
			
		||||
 | 
			
		||||
### `VISION_MODELS` (optional)
 | 
			
		||||
 | 
			
		||||
@@ -368,7 +349,7 @@ Customize Stability API url.
 | 
			
		||||
 | 
			
		||||
### `ENABLE_MCP` (optional)
 | 
			
		||||
 | 
			
		||||
Enable MCP(Model Context Protocol)Feature.
 | 
			
		||||
Enable MCP(Model Context Protocol)Feature
 | 
			
		||||
 | 
			
		||||
### `SILICONFLOW_API_KEY` (optional)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -417,6 +417,14 @@ export const KnowledgeCutOffDate: Record<string, string> = {
 | 
			
		||||
  "gpt-4-turbo": "2023-12",
 | 
			
		||||
  "gpt-4-turbo-2024-04-09": "2023-12",
 | 
			
		||||
  "gpt-4-turbo-preview": "2023-12",
 | 
			
		||||
  "gpt-4.1": "2024-06",
 | 
			
		||||
  "gpt-4.1-2025-04-14": "2024-06",
 | 
			
		||||
  "gpt-4.1-mini": "2024-06",
 | 
			
		||||
  "gpt-4.1-mini-2025-04-14": "2024-06",
 | 
			
		||||
  "gpt-4.1-nano": "2024-06",
 | 
			
		||||
  "gpt-4.1-nano-2025-04-14": "2024-06",
 | 
			
		||||
  "gpt-4.5-preview": "2023-10",
 | 
			
		||||
  "gpt-4.5-preview-2025-02-27": "2023-10",
 | 
			
		||||
  "gpt-4o": "2023-10",
 | 
			
		||||
  "gpt-4o-2024-05-13": "2023-10",
 | 
			
		||||
  "gpt-4o-2024-08-06": "2023-10",
 | 
			
		||||
@@ -458,6 +466,7 @@ export const DEFAULT_TTS_VOICES = [
 | 
			
		||||
export const VISION_MODEL_REGEXES = [
 | 
			
		||||
  /vision/,
 | 
			
		||||
  /gpt-4o/,
 | 
			
		||||
  /gpt-4\.1/,
 | 
			
		||||
  /claude-3/,
 | 
			
		||||
  /gemini-1\.5/,
 | 
			
		||||
  /gemini-exp/,
 | 
			
		||||
@@ -485,6 +494,14 @@ const openaiModels = [
 | 
			
		||||
  "gpt-4-32k-0613",
 | 
			
		||||
  "gpt-4-turbo",
 | 
			
		||||
  "gpt-4-turbo-preview",
 | 
			
		||||
  "gpt-4.1",
 | 
			
		||||
  "gpt-4.1-2025-04-14",
 | 
			
		||||
  "gpt-4.1-mini",
 | 
			
		||||
  "gpt-4.1-mini-2025-04-14",
 | 
			
		||||
  "gpt-4.1-nano",
 | 
			
		||||
  "gpt-4.1-nano-2025-04-14",
 | 
			
		||||
  "gpt-4.5-preview",
 | 
			
		||||
  "gpt-4.5-preview-2025-02-27",
 | 
			
		||||
  "gpt-4o",
 | 
			
		||||
  "gpt-4o-2024-05-13",
 | 
			
		||||
  "gpt-4o-2024-08-06",
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,8 @@ const config: Config = {
 | 
			
		||||
  moduleNameMapper: {
 | 
			
		||||
    "^@/(.*)$": "<rootDir>/$1",
 | 
			
		||||
  },
 | 
			
		||||
  extensionsToTreatAsEsm: [".ts", ".tsx"],
 | 
			
		||||
  injectGlobals: true,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
 | 
			
		||||
 
 | 
			
		||||
@@ -1,24 +1,22 @@
 | 
			
		||||
// Learn more: https://github.com/testing-library/jest-dom
 | 
			
		||||
import "@testing-library/jest-dom";
 | 
			
		||||
import { jest } from "@jest/globals";
 | 
			
		||||
 | 
			
		||||
global.fetch = jest.fn(() =>
 | 
			
		||||
  Promise.resolve({
 | 
			
		||||
    ok: true,
 | 
			
		||||
    status: 200,
 | 
			
		||||
    json: () => Promise.resolve({}),
 | 
			
		||||
    json: () => Promise.resolve([]),
 | 
			
		||||
    headers: new Headers(),
 | 
			
		||||
    redirected: false,
 | 
			
		||||
    statusText: "OK",
 | 
			
		||||
    type: "basic",
 | 
			
		||||
    url: "",
 | 
			
		||||
    clone: function () {
 | 
			
		||||
      return this;
 | 
			
		||||
    },
 | 
			
		||||
    body: null,
 | 
			
		||||
    bodyUsed: false,
 | 
			
		||||
    arrayBuffer: () => Promise.resolve(new ArrayBuffer(0)),
 | 
			
		||||
    blob: () => Promise.resolve(new Blob()),
 | 
			
		||||
    formData: () => Promise.resolve(new FormData()),
 | 
			
		||||
    text: () => Promise.resolve(""),
 | 
			
		||||
  }),
 | 
			
		||||
  } as Response),
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -17,8 +17,8 @@
 | 
			
		||||
    "prompts": "node ./scripts/fetch-prompts.mjs",
 | 
			
		||||
    "prepare": "husky install",
 | 
			
		||||
    "proxy-dev": "sh ./scripts/init-proxy.sh && proxychains -f ./scripts/proxychains.conf yarn dev",
 | 
			
		||||
    "test": "jest --watch",
 | 
			
		||||
    "test:ci": "jest --ci"
 | 
			
		||||
    "test": "node --no-warnings --experimental-vm-modules $(yarn bin jest) --watch",
 | 
			
		||||
    "test:ci": "node --no-warnings --experimental-vm-modules $(yarn bin jest) --ci"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@fortaine/fetch-event-source": "^3.0.6",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
import { jest } from "@jest/globals";
 | 
			
		||||
import { isVisionModel } from "../app/utils";
 | 
			
		||||
 | 
			
		||||
describe("isVisionModel", () => {
 | 
			
		||||
@@ -50,7 +51,7 @@ describe("isVisionModel", () => {
 | 
			
		||||
 | 
			
		||||
  test("should identify models from VISION_MODELS env var", () => {
 | 
			
		||||
    process.env.VISION_MODELS = "custom-vision-model,another-vision-model";
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    expect(isVisionModel("custom-vision-model")).toBe(true);
 | 
			
		||||
    expect(isVisionModel("another-vision-model")).toBe(true);
 | 
			
		||||
    expect(isVisionModel("unrelated-model")).toBe(false);
 | 
			
		||||
@@ -64,4 +65,4 @@ describe("isVisionModel", () => {
 | 
			
		||||
    expect(isVisionModel("unrelated-model")).toBe(false);
 | 
			
		||||
    expect(isVisionModel("gpt-4-vision")).toBe(true);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user