diff --git a/llmhub-base/build.gradle.kts b/llmhub-base/build.gradle.kts index 027b235..5346dca 100644 --- a/llmhub-base/build.gradle.kts +++ b/llmhub-base/build.gradle.kts @@ -19,7 +19,8 @@ configurations.implementation { allprojects { // 设置全局属性 ext { - set(ProjectFlags.USE_SPRING_BOOT, false) + set(ProjectFlags.USE_SPRING_BOOT_WEB, false) + set(ProjectFlags.USE_SPRING_BOOT_WEBFLUX, false) set(ProjectFlags.USE_LLM_CORE_SPI, false) set(ProjectFlags.USE_SPRING_CLOUD_BOM, false) set(ProjectFlags.IS_ROOT_MODULE, false) @@ -67,7 +68,7 @@ allprojects { subprojects { afterEvaluate { // springbootWeb - if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT)) { + if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEB)) { apply { plugin(libs.plugins.spring.dependency.management.get().pluginId) plugin(libs.plugins.spring.boot.get().pluginId) @@ -80,6 +81,16 @@ subprojects { testRuntimeOnly(libs.junitPlatform.launcher) } } + if(project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEBFLUX)){ + apply { + plugin(libs.plugins.spring.dependency.management.get().pluginId) + plugin(libs.plugins.spring.boot.get().pluginId) + plugin(libs.plugins.kotlin.plugin.spring.get().pluginId) + } + dependencies { + implementation(libs.springBootStarter.webflux) + } + } // llm-core-spi if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_CORE_SPI)) { dependencies { @@ -99,7 +110,7 @@ subprojects { plugin(libs.plugins.kotlin.jvm.get().pluginId) plugin(libs.plugins.jibLocalPlugin.get().pluginId) } - println(project.name + ":" + project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT)) + println(project.name + ":" + project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEB)) kotlin { compilerOptions { diff --git a/llmhub-base/buildSrc/src/main/kotlin/ProjectFlags.kt b/llmhub-base/buildSrc/src/main/kotlin/ProjectFlags.kt index eb7999b..d0671e8 100644 --- a/llmhub-base/buildSrc/src/main/kotlin/ProjectFlags.kt +++ b/llmhub-base/buildSrc/src/main/kotlin/ProjectFlags.kt @@ -1,5 +1,6 @@ object ProjectFlags { - const val USE_SPRING_BOOT = "useSpringBoot" + const val USE_SPRING_BOOT_WEB = "useSpringBootWeb" + const val USE_SPRING_BOOT_WEBFLUX = "useSpringBootWebflux" const val USE_SPRING_CLOUD_BOM = "useSpringCloudBom" const val USE_LLM_CORE_SPI = "useLLMCoreSPI" const val IS_ROOT_MODULE = "isRootModule" diff --git a/llmhub-base/llmhub-core/llmhub-core-service/build.gradle.kts b/llmhub-base/llmhub-core/llmhub-core-service/build.gradle.kts index c35e025..1dd6a57 100644 --- a/llmhub-base/llmhub-core/llmhub-core-service/build.gradle.kts +++ b/llmhub-base/llmhub-core/llmhub-core-service/build.gradle.kts @@ -1,6 +1,6 @@ extra { // 开启springboot - setProperty(ProjectFlags.USE_SPRING_BOOT, true) + setProperty(ProjectFlags.USE_SPRING_BOOT_WEB, true) setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true) } dependencies { diff --git a/llmhub-base/llmhub-core/llmhub-core-service/src/main/kotlin/org/jcnc/llmhub/core/service/controller/ChatController.kt b/llmhub-base/llmhub-core/llmhub-core-service/src/main/kotlin/org/jcnc/llmhub/core/service/controller/ChatController.kt index 662fe46..a134066 100644 --- a/llmhub-base/llmhub-core/llmhub-core-service/src/main/kotlin/org/jcnc/llmhub/core/service/controller/ChatController.kt +++ b/llmhub-base/llmhub-core/llmhub-core-service/src/main/kotlin/org/jcnc/llmhub/core/service/controller/ChatController.kt @@ -5,6 +5,7 @@ import kotlinx.coroutines.flow.Flow import org.jcnc.llmhub.core.service.service.impl.LLMServiceImpl import org.jcnc.llmhub.core.spi.entities.request.ChatRequest import org.jcnc.llmhub.core.spi.entities.response.ChatResponsePart +import org.springframework.http.MediaType import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping @@ -32,7 +33,7 @@ class ChatController( * @param request 聊天请求对象,包含了发起聊天所需的各种参数和用户信息 * @return 返回一个Flow流,流中依次提供了聊天响应的部分数据,允许异步处理和逐步消费响应内容 */ - @PostMapping("/stream") + @PostMapping("/stream", produces = [MediaType.APPLICATION_NDJSON_VALUE]) fun chat(@RequestBody request: ChatRequest): Flow { return llmServiceImpl.chat(request) } diff --git a/llmhub-base/llmhub-core/llmhub-core-spi/src/main/kotlin/org/jcnc/llmhub/core/spi/provider/LLMProvider.kt b/llmhub-base/llmhub-core/llmhub-core-spi/src/main/kotlin/org/jcnc/llmhub/core/spi/provider/LLMProvider.kt index e7919e8..cdf327a 100644 --- a/llmhub-base/llmhub-core/llmhub-core-spi/src/main/kotlin/org/jcnc/llmhub/core/spi/provider/LLMProvider.kt +++ b/llmhub-base/llmhub-core/llmhub-core-spi/src/main/kotlin/org/jcnc/llmhub/core/spi/provider/LLMProvider.kt @@ -5,6 +5,7 @@ import org.jcnc.llmhub.core.spi.entities.request.ChatRequest import org.jcnc.llmhub.core.spi.entities.request.EmbeddingRequest import org.jcnc.llmhub.core.spi.entities.response.ChatResponsePart import org.jcnc.llmhub.core.spi.entities.response.EmbeddingResponse +import org.springframework.http.MediaType import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestMapping @@ -28,7 +29,7 @@ interface LLMProvider { * @param request 聊天请求对象,包含建立聊天所需的信息,如用户标识、会话标识等 * @return 返回一个Flow流,通过该流可以接收到聊天响应的部分数据,如消息、状态更新等 */ - @PostMapping("/chat") + @PostMapping("/chat", produces = [MediaType.APPLICATION_NDJSON_VALUE]) fun chat(request: ChatRequest): Flow /** diff --git a/llmhub-base/llmhub-impl/llmhub-impl-baiLian/build.gradle.kts b/llmhub-base/llmhub-impl/llmhub-impl-baiLian/build.gradle.kts index 12471f2..9984cdc 100644 --- a/llmhub-base/llmhub-impl/llmhub-impl-baiLian/build.gradle.kts +++ b/llmhub-base/llmhub-impl/llmhub-impl-baiLian/build.gradle.kts @@ -1,6 +1,6 @@ // 开启springboot -extra[ProjectFlags.USE_SPRING_BOOT] = true +extra[ProjectFlags.USE_SPRING_BOOT_WEB] = true setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true) dependencies { // Nacos 服务发现和配置 diff --git a/llmhub-base/llmhub-impl/llmhub-impl-openAi/build.gradle.kts b/llmhub-base/llmhub-impl/llmhub-impl-openAi/build.gradle.kts index 24b7a0c..8be1629 100644 --- a/llmhub-base/llmhub-impl/llmhub-impl-openAi/build.gradle.kts +++ b/llmhub-base/llmhub-impl/llmhub-impl-openAi/build.gradle.kts @@ -1,5 +1,5 @@ // 开启springboot -extra[ProjectFlags.USE_SPRING_BOOT] = true +extra[ProjectFlags.USE_SPRING_BOOT_WEB] = true setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true) dependencies { // Nacos 服务发现和配置 diff --git a/llmhub-base/llmhub-impl/llmhub-impl-openAi/src/main/resources/application.yml b/llmhub-base/llmhub-impl/llmhub-impl-openAi/src/main/resources/application.yml new file mode 100644 index 0000000..c3b7226 --- /dev/null +++ b/llmhub-base/llmhub-impl/llmhub-impl-openAi/src/main/resources/application.yml @@ -0,0 +1,20 @@ +spring: + application: + name: llmhub-impl-openAi + cloud: + nacos: + access-key: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc0NTc1NjkwOH0.86TmeN27gXbpw55jMmOVNz42B9u8dXtGwCvyGlWbYVo + username: nacos + password: L4s6f9y3 + server-addr: 49.235.96.75:8848 + discovery: + server-addr: ${spring.cloud.nacos.server-addr} + access-key: ${spring.cloud.nacos.access-key} + username: ${spring.cloud.nacos.username} + password: ${spring.cloud.nacos.password} + + + # profiles: + # active: dev +server: + port: 8083 \ No newline at end of file