前置条件:根据上篇文章完成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; }