mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	fix: support custom api endpoint (#4016)
This commit is contained in:
		@@ -72,23 +72,26 @@ export class GeminiProApi implements LLMApi {
 | 
			
		||||
      ],
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const accessStore = useAccessStore.getState();
 | 
			
		||||
    let baseUrl = accessStore.googleUrl;
 | 
			
		||||
    const isApp = !!getClientConfig()?.isApp;
 | 
			
		||||
 | 
			
		||||
    const shouldStream = !!options.config.stream;
 | 
			
		||||
    let shouldStream = !!options.config.stream;
 | 
			
		||||
    const controller = new AbortController();
 | 
			
		||||
    options.onController?.(controller);
 | 
			
		||||
    const accessStore = useAccessStore.getState();
 | 
			
		||||
    try {
 | 
			
		||||
      let chatPath = this.path(Google.ChatPath);
 | 
			
		||||
 | 
			
		||||
      // let baseUrl = accessStore.googleUrl;
 | 
			
		||||
 | 
			
		||||
      chatPath = isApp
 | 
			
		||||
        ? DEFAULT_API_HOST +
 | 
			
		||||
          "/api/proxy/google/" +
 | 
			
		||||
          Google.ChatPath +
 | 
			
		||||
          `?key=${accessStore.googleApiKey}`
 | 
			
		||||
        : chatPath;
 | 
			
		||||
      if (!baseUrl) {
 | 
			
		||||
        baseUrl = isApp
 | 
			
		||||
          ? DEFAULT_API_HOST +
 | 
			
		||||
            "/api/proxy/google/" +
 | 
			
		||||
            Google.ChatPath +
 | 
			
		||||
            `?key=${accessStore.googleApiKey}`
 | 
			
		||||
          : chatPath;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const chatPayload = {
 | 
			
		||||
        method: "POST",
 | 
			
		||||
@@ -96,7 +99,7 @@ export class GeminiProApi implements LLMApi {
 | 
			
		||||
        signal: controller.signal,
 | 
			
		||||
        headers: getHeaders(),
 | 
			
		||||
      };
 | 
			
		||||
      console.log("[Request] google chatPath: ", chatPath, isApp);
 | 
			
		||||
 | 
			
		||||
      // make a fetch request
 | 
			
		||||
      const requestTimeoutId = setTimeout(
 | 
			
		||||
        () => controller.abort(),
 | 
			
		||||
@@ -105,10 +108,6 @@ export class GeminiProApi implements LLMApi {
 | 
			
		||||
      if (shouldStream) {
 | 
			
		||||
        let responseText = "";
 | 
			
		||||
        let remainText = "";
 | 
			
		||||
        let streamChatPath = chatPath.replace(
 | 
			
		||||
          "generateContent",
 | 
			
		||||
          "streamGenerateContent",
 | 
			
		||||
        );
 | 
			
		||||
        let finished = false;
 | 
			
		||||
 | 
			
		||||
        let existingTexts: string[] = [];
 | 
			
		||||
@@ -139,8 +138,10 @@ export class GeminiProApi implements LLMApi {
 | 
			
		||||
        // start animaion
 | 
			
		||||
        animateResponseText();
 | 
			
		||||
 | 
			
		||||
        console.log("[Proxy Endpoint] ", streamChatPath);
 | 
			
		||||
        fetch(streamChatPath, chatPayload)
 | 
			
		||||
        fetch(
 | 
			
		||||
          baseUrl.replace("generateContent", "streamGenerateContent"),
 | 
			
		||||
          chatPayload,
 | 
			
		||||
        )
 | 
			
		||||
          .then((response) => {
 | 
			
		||||
            const reader = response?.body?.getReader();
 | 
			
		||||
            const decoder = new TextDecoder();
 | 
			
		||||
@@ -191,7 +192,7 @@ export class GeminiProApi implements LLMApi {
 | 
			
		||||
            console.error("Error:", error);
 | 
			
		||||
          });
 | 
			
		||||
      } else {
 | 
			
		||||
        const res = await fetch(chatPath, chatPayload);
 | 
			
		||||
        const res = await fetch(baseUrl, chatPayload);
 | 
			
		||||
        clearTimeout(requestTimeoutId);
 | 
			
		||||
        const resJson = await res.json();
 | 
			
		||||
        if (resJson?.promptFeedback?.blockReason) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user