From 3666157d14201d39a0e61588582fee97fac95ad1 Mon Sep 17 00:00:00 2001
From: Albert <janzhou123@users.noreply.github.com>
Date: 星期二, 13 五月 2025 09:59:36 +0800
Subject: [PATCH] Merge pull request #1 from ageerle/main

---
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java |   39 ++++++++++++++++++++++++++++++---------
 1 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
index ef03cb2..e02dde1 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
@@ -53,7 +53,7 @@
 import java.util.concurrent.TimeUnit;
 
 /**
- * 鎻忚堪锛� open ai 瀹㈡埛绔�
+ *   open ai 瀹㈡埛绔�
  *
  * @author https:www.unfbx.com
  * 2023-02-28
@@ -70,6 +70,11 @@
      * 鑷畾涔塧pi host浣跨敤builder鐨勬柟寮忔瀯閫燾lient
      */
     private String apiHost;
+
+    /**
+     * 鑷畾涔塽rl 鍏煎澶氫釜骞冲彴
+     */
+    private String apiUrl;
 
     /**
      * 鑷畾涔夌殑okHttpClient
@@ -112,6 +117,11 @@
         }
         apiHost = builder.apiHost;
 
+        if (StrUtil.isBlank(builder.apiUrl)) {
+            builder.apiUrl = OpenAIConst.apiUrl;
+        }
+        apiUrl = builder.apiUrl;
+
         if (Objects.isNull(builder.keyStrategy)) {
             builder.keyStrategy = new KeyRandomStrategy();
         }
@@ -136,12 +146,12 @@
         }
         okHttpClient = builder.okHttpClient;
 
-        this.openAiApi = new Retrofit.Builder()
-            .baseUrl(apiHost)
-            .client(okHttpClient)
-            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-            .addConverterFactory(JacksonConverterFactory.create())
-            .build().create(OpenAiApi.class);
+//        this.openAiApi = new Retrofit.Builder()
+//            .baseUrl(apiHost)
+//            .client(okHttpClient)
+//            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+//            .addConverterFactory(JacksonConverterFactory.create())
+//            .build().create(OpenAiApi.class);
     }
 
     /**
@@ -180,7 +190,7 @@
             ObjectMapper mapper = new ObjectMapper();
             String requestBody = mapper.writeValueAsString(chatCompletion);
             Request request = new Request.Builder()
-                .url(this.apiHost + "v1/chat/completions")
+                .url(this.apiHost)
                 .post(RequestBody.create(MediaType.parse(ContentType.JSON.getValue()), requestBody))
                 .build();
             factory.newEventSource(request, eventSourceListener);
@@ -334,7 +344,6 @@
 
         BillingUsage billingUsage = billingUsage(start.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), end.toInstant().atZone(ZoneId.systemDefault()).toLocalDate());
         double totalUsage = billingUsage.getTotalUsage().doubleValue() / 100;
-        System.out.println(totalUsage);
         Subscription subscription = subscription();
         KeyInfo keyInfo = new KeyInfo();
         String start_key = key.substring(0, 6);
@@ -611,6 +620,8 @@
          */
         private String apiHost;
 
+        private String apiUrl;
+
         /**
          * 鑷畾涔塐khttpClient
          */
@@ -645,6 +656,16 @@
             return this;
         }
 
+        /**
+         * @param val 鑷畾涔夎姹傚悗缂�
+         * @return Builder
+         * @see OpenAIConst
+         */
+        public Builder apiUrl(String val) {
+            apiUrl = val;
+            return this;
+        }
+
         public Builder keyStrategy(KeyStrategyFunction val) {
             keyStrategy = val;
             return this;

--
Gitblit v1.9.3