Przeglądaj źródła

fix: support custom api endpoint (#4016)

fred-bf 2 lat temu
rodzic
commit
b8f0822214
1 zmienionych plików z 17 dodań i 16 usunięć
  1. 17 16
      app/client/platforms/google.ts

+ 17 - 16
app/client/platforms/google.ts

@@ -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) {