前置條件:根據上篇文章完成springboot初步集成LangChain4j 【Springboot+LangChain4j】根據LangChain4j官方文檔,三分鐘完成Springboot項目集成LangChain4j(上)-CSDN博客
但是接口方法中,關于大模型的配置都是寫死的,不符合編碼的合理性,本片目的將參數內容配置化。
1.建立配置類AiConfig,將接口參數配入配置文件
主要配置為baseUrl(ollama的ip地址和端口號),model(你要使用的大模型)
ollamaChatModel和streamingOllamaChatMode分別是流式和非流式
@Configuration
public class AiConfig {@Value("${langchain4j.ollama.base-url}")private String baseUrl;@Value("${langchain4j.ollama.model}")private String model;@Beanpublic ChatModel ollamaChatModel() {return OllamaChatModel.builder().baseUrl(baseUrl).modelName(model).build();}@Beanpublic StreamingChatModel streamingOllamaChatModel() {return OllamaStreamingChatModel.builder().baseUrl(baseUrl).modelName(model).build();}
}
2.接口實現
將這兩個Model注入
@Autowired
private ChatModel chatModel;
@Autowired
private StreamingChatModel streamingChatModel;
//在非流式接口實現中,不再需要重新構建Model @GetMapping("/ai/generate") public String generate(@RequestParam String text) {return chatModel.chat(text); }
在流式接口實現中,同樣不再需要重新構建Model
@GetMapping("/ai/generateStream") public Flux<String> generateStream(@RequestParam String text) {Flux<String> flux = Flux.create(sink -> {streamingChatModel.chat(text,new StreamingChatResponseHandler() {@Overridepublic void onPartialResponse(String s) {System.out.printf(s);}@Overridepublic void onCompleteResponse(ChatResponse chatResponse) {sink.complete();}@Overridepublic void onError(Throwable throwable) {sink.error(throwable);}});});return flux; }