feat(llmhub): 添加 Nacos 配置并支持 Webflux- 新增 Nacos 配置文件 application.yml
- 更新 build.gradle.kts 文件,替换 USE_SPRING_BOOT 为 USE_SPRING_BOOT_WEB - 添加 USE_SPRING_BOOT_WEBFLUX 标志并支持 Webflux - 修改 ChatController 和 LLMProvider,添加 MediaType.APPLICATION_NDJSON_VALUE
This commit is contained in:
parent
c945e5920f
commit
77006f51c4
@ -19,7 +19,8 @@ configurations.implementation {
|
|||||||
allprojects {
|
allprojects {
|
||||||
// 设置全局属性
|
// 设置全局属性
|
||||||
ext {
|
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_LLM_CORE_SPI, false)
|
||||||
set(ProjectFlags.USE_SPRING_CLOUD_BOM, false)
|
set(ProjectFlags.USE_SPRING_CLOUD_BOM, false)
|
||||||
set(ProjectFlags.IS_ROOT_MODULE, false)
|
set(ProjectFlags.IS_ROOT_MODULE, false)
|
||||||
@ -67,7 +68,7 @@ allprojects {
|
|||||||
subprojects {
|
subprojects {
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
// springbootWeb
|
// springbootWeb
|
||||||
if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT)) {
|
if (project.getPropertyByBoolean(ProjectFlags.USE_SPRING_BOOT_WEB)) {
|
||||||
apply {
|
apply {
|
||||||
plugin(libs.plugins.spring.dependency.management.get().pluginId)
|
plugin(libs.plugins.spring.dependency.management.get().pluginId)
|
||||||
plugin(libs.plugins.spring.boot.get().pluginId)
|
plugin(libs.plugins.spring.boot.get().pluginId)
|
||||||
@ -80,6 +81,16 @@ subprojects {
|
|||||||
testRuntimeOnly(libs.junitPlatform.launcher)
|
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
|
// llm-core-spi
|
||||||
if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_CORE_SPI)) {
|
if (project.getPropertyByBoolean(ProjectFlags.USE_LLM_CORE_SPI)) {
|
||||||
dependencies {
|
dependencies {
|
||||||
@ -99,7 +110,7 @@ subprojects {
|
|||||||
plugin(libs.plugins.kotlin.jvm.get().pluginId)
|
plugin(libs.plugins.kotlin.jvm.get().pluginId)
|
||||||
plugin(libs.plugins.jibLocalPlugin.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 {
|
kotlin {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
object ProjectFlags {
|
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_SPRING_CLOUD_BOM = "useSpringCloudBom"
|
||||||
const val USE_LLM_CORE_SPI = "useLLMCoreSPI"
|
const val USE_LLM_CORE_SPI = "useLLMCoreSPI"
|
||||||
const val IS_ROOT_MODULE = "isRootModule"
|
const val IS_ROOT_MODULE = "isRootModule"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
extra {
|
extra {
|
||||||
// 开启springboot
|
// 开启springboot
|
||||||
setProperty(ProjectFlags.USE_SPRING_BOOT, true)
|
setProperty(ProjectFlags.USE_SPRING_BOOT_WEB, true)
|
||||||
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
import org.jcnc.llmhub.core.service.service.impl.LLMServiceImpl
|
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.request.ChatRequest
|
||||||
import org.jcnc.llmhub.core.spi.entities.response.ChatResponsePart
|
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.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RequestBody
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
@ -32,7 +33,7 @@ class ChatController(
|
|||||||
* @param request 聊天请求对象,包含了发起聊天所需的各种参数和用户信息
|
* @param request 聊天请求对象,包含了发起聊天所需的各种参数和用户信息
|
||||||
* @return 返回一个Flow流,流中依次提供了聊天响应的部分数据,允许异步处理和逐步消费响应内容
|
* @return 返回一个Flow流,流中依次提供了聊天响应的部分数据,允许异步处理和逐步消费响应内容
|
||||||
*/
|
*/
|
||||||
@PostMapping("/stream")
|
@PostMapping("/stream", produces = [MediaType.APPLICATION_NDJSON_VALUE])
|
||||||
fun chat(@RequestBody request: ChatRequest): Flow<ChatResponsePart> {
|
fun chat(@RequestBody request: ChatRequest): Flow<ChatResponsePart> {
|
||||||
return llmServiceImpl.chat(request)
|
return llmServiceImpl.chat(request)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.request.EmbeddingRequest
|
||||||
import org.jcnc.llmhub.core.spi.entities.response.ChatResponsePart
|
import org.jcnc.llmhub.core.spi.entities.response.ChatResponsePart
|
||||||
import org.jcnc.llmhub.core.spi.entities.response.EmbeddingResponse
|
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.PostMapping
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
|
|
||||||
@ -28,7 +29,7 @@ interface LLMProvider {
|
|||||||
* @param request 聊天请求对象,包含建立聊天所需的信息,如用户标识、会话标识等
|
* @param request 聊天请求对象,包含建立聊天所需的信息,如用户标识、会话标识等
|
||||||
* @return 返回一个Flow流,通过该流可以接收到聊天响应的部分数据,如消息、状态更新等
|
* @return 返回一个Flow流,通过该流可以接收到聊天响应的部分数据,如消息、状态更新等
|
||||||
*/
|
*/
|
||||||
@PostMapping("/chat")
|
@PostMapping("/chat", produces = [MediaType.APPLICATION_NDJSON_VALUE])
|
||||||
fun chat(request: ChatRequest): Flow<ChatResponsePart>
|
fun chat(request: ChatRequest): Flow<ChatResponsePart>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
// 开启springboot
|
// 开启springboot
|
||||||
extra[ProjectFlags.USE_SPRING_BOOT] = true
|
extra[ProjectFlags.USE_SPRING_BOOT_WEB] = true
|
||||||
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
||||||
dependencies {
|
dependencies {
|
||||||
// Nacos 服务发现和配置
|
// Nacos 服务发现和配置
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// 开启springboot
|
// 开启springboot
|
||||||
extra[ProjectFlags.USE_SPRING_BOOT] = true
|
extra[ProjectFlags.USE_SPRING_BOOT_WEB] = true
|
||||||
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
setProperty(ProjectFlags.USE_SPRING_CLOUD_BOM,true)
|
||||||
dependencies {
|
dependencies {
|
||||||
// Nacos 服务发现和配置
|
// Nacos 服务发现和配置
|
||||||
|
|||||||
@ -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
|
||||||
Loading…
x
Reference in New Issue
Block a user