【Springboot+LangChain4j】Springboot项目集成LangChain4j(下)

前置条件:根据上篇文章完成springboot初步集成LangChain4j 【Springboot+LangChain4j】根据LangChain4j官方文档,三分钟完成Springboot项目集成LangChain4j(上)-优快云博客

但是接口方法中,关于大模型的配置都是写死的,不符合编码的合理性,本片目的将参数内容配置化。

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;

    @Bean
    public ChatModel ollamaChatModel() {
        return OllamaChatModel.builder()
                .baseUrl(baseUrl)
                .modelName(model)
                .build();
    }

    @Bean
    public 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() {
                    @Override
                    public void onPartialResponse(String s) {
                        System.out.printf(s);
                    }

                    @Override
                    public void onCompleteResponse(ChatResponse chatResponse) {
                        sink.complete();
                    }

                    @Override
                    public void onError(Throwable throwable) {
                        sink.error(throwable);
                    }
                });
    });
    return flux;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值