init llm config

This commit is contained in:
Chuck1sn
2025-05-23 09:42:42 +08:00
parent f94240dd02
commit 2f3a5abd55
11 changed files with 144 additions and 17 deletions

View File

@@ -1,7 +1,10 @@
package com.zl.mjga.controller;
import com.zl.mjga.dto.ai.LlmUpdateDto;
import com.zl.mjga.service.AiChatService;
import com.zl.mjga.service.LlmService;
import dev.langchain4j.service.TokenStream;
import jakarta.validation.Valid;
import java.security.Principal;
import java.time.Duration;
import lombok.RequiredArgsConstructor;
@@ -18,11 +21,12 @@ import reactor.core.publisher.Sinks;
public class AiController {
private final AiChatService aiChatService;
private final LlmService llmService;
@PostMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> chat(Principal principal, @RequestBody String userMessage) {
Sinks.Many<String> sink = Sinks.many().unicast().onBackpressureBuffer();
TokenStream chat = aiChatService.chatWithZhiPu(principal.getName(), userMessage);
TokenStream chat = aiChatService.chatPrecedenceLlmWith(principal.getName(), userMessage);
chat.onPartialResponse(text -> sink.tryEmitNext(text.replace(" ", "").replace("\t", "")))
.onCompleteResponse(
r -> {
@@ -33,4 +37,9 @@ public class AiController {
.start();
return sink.asFlux().timeout(Duration.ofSeconds(120));
}
@PutMapping(value = "/llm")
public void updateLlm(@RequestBody @Valid LlmUpdateDto llmUpdateDto) {
llmService.update(llmUpdateDto);
}
}