Browse Source

修改core-ai,增加AI接口类型与AppType类型;修改MemoryRateLimiter部分实现逻辑,提高并发性能

Signed-off-by: luoshi <luoshi@qmth.com.cn>
luoshi 1 year ago
parent
commit
61e7a464b3

+ 22 - 8
core-ai/src/main/java/com/qmth/boot/core/ai/client/LlmApiClient.java

@@ -10,6 +10,8 @@ import retrofit2.http.Header;
 import retrofit2.http.POST;
 import retrofit2.http.Tag;
 
+import java.util.Map;
+
 /**
  * 大模型应用服务接口
  */
@@ -17,26 +19,38 @@ import retrofit2.http.Tag;
 public interface LlmApiClient {
 
     /**
-     * 大模型接口余额查询
+     * 大模型chat类型请求
      *
      * @param signature 使用机构AK构造Secret类型签名
      * @param type      大模型应用类型
+     * @param request   标准chat请求对象
      * @return
      */
-    @POST(AiConstants.LLM_BALANCE_PATH)
-    LlmAppBalance balance(@Tag SignatureInfo signature, @Header(AiConstants.LLM_APP_TYPE_HEADER) LlmAppType type);
+    @POST(AiConstants.LLM_CHAT_PATH)
+    ChatResult chat(@Tag SignatureInfo signature, @Header(AiConstants.LLM_APP_TYPE_HEADER) LlmAppType type,
+            @Body ChatRequest request);
 
     /**
-     * 大模型chat类型请求
+     * 基于Prompt模版的大模型chat类型请求
      *
      * @param signature 使用机构AK构造Secret类型签名
      * @param type      大模型应用类型
-     * @param request   标准chat请求对象
+     * @param param     模版变量
      * @return
      */
-    @POST(AiConstants.LLM_CHAT_PATH)
-    ChatResult chat(@Tag SignatureInfo signature, @Header(AiConstants.LLM_APP_TYPE_HEADER) LlmAppType type,
-            @Body ChatRequest request);
+    @POST(AiConstants.LLM_CHAT_TEMPLATE_PATH)
+    ChatResult chatTemplate(@Tag SignatureInfo signature, @Header(AiConstants.LLM_APP_TYPE_HEADER) LlmAppType type,
+            @Body Map<String, Object> param);
+
+    /**
+     * 大模型接口余额查询
+     *
+     * @param signature 使用机构AK构造Secret类型签名
+     * @param type      大模型应用类型
+     * @return
+     */
+    @POST(AiConstants.LLM_BALANCE_PATH)
+    LlmAppBalance getBalance(@Tag SignatureInfo signature, @Header(AiConstants.LLM_APP_TYPE_HEADER) LlmAppType type);
 
     /**
      * 大模型提示词模版获取

+ 2 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/AiConstants.java

@@ -10,5 +10,7 @@ public interface AiConstants {
 
     String LLM_CHAT_PATH = API_PREFIX + "/llm/chat";
 
+    String LLM_CHAT_TEMPLATE_PATH = API_PREFIX + "/llm/chat_template";
+
     String LLM_PROMPT_TEMPLATE_PATH = API_PREFIX + "/llm/prompt_template";
 }

+ 6 - 1
core-ai/src/main/java/com/qmth/boot/core/ai/model/llm/LlmAppType.java

@@ -8,7 +8,12 @@ public enum LlmAppType {
     /**
      * 自动命题
      */
-    AUTO_GENERATE_QUESTOIN;
+    AUTO_GENERATE_QUESTION,
+
+    /**
+     * 自动评分
+     */
+    AUTO_SCORE;
 
     public static LlmAppType find(String text) {
         for (LlmAppType type : values()) {

+ 2 - 1
core-rate-limit/src/main/java/com/qmth/boot/core/rateLimit/service/impl/MemoryRateLimiter.java

@@ -33,7 +33,8 @@ public class MemoryRateLimiter implements RateLimiter {
             synchronized (this) {
                 if (time > expireTime) {
                     expireTime = (time / interval + 1) * interval;
-                    counter = new Semaphore(maxCount);
+                    counter.drainPermits();
+                    counter.release(maxCount);
                 }
             }
         }