Parcourir la source

add model support for claude

tycoding il y a 1 an
Parent
commit
6e152d7b3c

+ 6 - 0
langchat-app/src/main/java/cn/tycoding/langchat/app/controller/AigcAppApiController.java

@@ -73,6 +73,9 @@ public class AigcAppApiController {
     @ApiLog("新增API渠道")
 //    @SaCheckPermission("aigc:app:iframe:add")
     public R add(@RequestBody AigcAppApi data) {
+        if (data.getApiKey().contains("*")) {
+            data.setApiKey(null);
+        }
         appApiService.save(data);
         appChannelStore.init();
         return R.ok();
@@ -82,6 +85,9 @@ public class AigcAppApiController {
     @ApiLog("修改API渠道")
 //    @SaCheckPermission("aigc:app:iframe:update")
     public R update(@RequestBody AigcAppApi data) {
+        if (data.getApiKey().contains("*")) {
+            data.setApiKey(null);
+        }
         appApiService.updateById(data);
         appChannelStore.init();
         return R.ok();

+ 6 - 0
langchat-app/src/main/java/cn/tycoding/langchat/app/controller/AigcAppWebController.java

@@ -69,6 +69,9 @@ public class AigcAppWebController {
     @ApiLog("新增WEB渠道")
 //    @SaCheckPermission("aigc:app:iframe:add")
     public R add(@RequestBody AigcAppWeb data) {
+        if (data.getApiKey().contains("*")) {
+            data.setApiKey(null);
+        }
         aigcAppService.save(data);
         appChannelStore.init();
         return R.ok();
@@ -78,6 +81,9 @@ public class AigcAppWebController {
     @ApiLog("修改WEB渠道")
 //    @SaCheckPermission("aigc:app:iframe:update")
     public R update(@RequestBody AigcAppWeb data) {
+        if (data.getApiKey().contains("*")) {
+            data.setApiKey(null);
+        }
         aigcAppService.updateById(data);
         appChannelStore.init();
         return R.ok();

+ 4 - 0
langchat-core/src/main/java/cn/tycoding/langchat/core/provider/ProviderInitialize.java

@@ -156,8 +156,12 @@ public class ProviderInitialize implements ApplicationContextAware {
                 contextHolder.registerBean(model.getId(), build);
             }
             if (ProviderEnum.CLAUDE.name().equals(provider)) {
+                if (!model.getBaseUrl().endsWith("/")) {
+                    model.setBaseUrl(model.getBaseUrl() + "/");
+                }
                 AnthropicStreamingChatModel build = AnthropicStreamingChatModel
                         .builder()
+                        .apiKey(model.getApiKey())
                         .baseUrl(model.getBaseUrl())
                         .modelName(model.getModel())
                         .temperature(model.getTemperature())

+ 2 - 2
langchat-server/src/main/java/cn/tycoding/langchat/server/controller/AigcModelController.java

@@ -81,7 +81,7 @@ public class AigcModelController {
     @ApiLog("添加模型")
     @SaCheckPermission("aigc:model:add")
     public R add(@RequestBody AigcModel data) {
-        if (data.getApiKey().contains("***")) {
+        if (StrUtil.isNotBlank(data.getApiKey()) && data.getApiKey().contains("*")) {
             data.setApiKey(null);
         }
         modelService.save(data);
@@ -93,7 +93,7 @@ public class AigcModelController {
     @ApiLog("修改模型")
     @SaCheckPermission("aigc:model:update")
     public R update(@RequestBody AigcModel data) {
-        if (data.getApiKey().contains("***")) {
+        if (StrUtil.isNotBlank(data.getApiKey()) && data.getApiKey().contains("*")) {
             data.setApiKey(null);
         }
         modelService.updateById(data);

+ 0 - 4
langchat-ui/src/views/aigc/model/components/chat/columns.ts

@@ -80,10 +80,6 @@ export const geminiColumns = [
 
 export const ollamaColumns = [
   ...baseColumns,
-  {
-    title: 'Project',
-    key: 'project',
-  },
   {
     title: 'Base Url',
     key: 'baseUrl',

+ 6 - 2
langchat-ui/src/views/aigc/model/components/chat/schemas.ts

@@ -208,10 +208,14 @@ export const ollamaSchemas: FormSchema[] = [
     component: 'NInput',
     rules: [
       {
-        required: false,
+        required: true,
         trigger: ['blur'],
         validator: (_, value: string) => {
-          const urlRegex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(\/.*)?$/;
+          if (!value) {
+            return new Error('请输入baseUrl');
+          }
+          const urlRegex =
+            /^(https?:\/\/)?((([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}|localhost|(\d{1,3}\.){3}\d{1,3})(:\d{1,5})?(\/.*)?)$/;
           if (isNullOrWhitespace(value) || urlRegex.test(value)) {
             return true;
           }

+ 6 - 1
langchat-ui/src/views/app/web/components/preview.vue

@@ -15,7 +15,7 @@
   -->
 
 <script lang="ts" setup>
-  import { onMounted } from 'vue';
+  import { onMounted, onUnmounted } from 'vue';
 
   onMounted(() => {
     window.langchatChatWidget.config.widgetTitle = 'LangChat';
@@ -26,6 +26,11 @@
     window.langchatChatWidget.config.openOnLoad = true;
     window.langchatChatWidget.config.responseIsAStream = true;
     window.langchatChatWidget.config.closeOnOutsideClick = false;
+    window.langchatChatWidget.init();
+  });
+
+  onUnmounted(() => {
+    window.langchatChatWidget.close();
   });
 </script>