package com.xmzs.common.chat.config; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import com.xmzs.common.chat.openai.OpenAiStreamClient; import com.xmzs.common.chat.openai.function.KeyRandomStrategy; import com.xmzs.common.chat.openai.interceptor.OpenAILogger; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; import java.util.concurrent.TimeUnit; /** * chat配置类 * * @author: wangle * @date: 2023/5/16 */ @Configuration public class ChatConfig { @Value("${chat.apiKey}") private List apiKey; @Value("${chat.apiHost}") private String apiHost; @Bean(name = "openAiStreamClient") public OpenAiStreamClient openAiStreamClient() { HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); OkHttpClient okHttpClient = new OkHttpClient .Builder() .addInterceptor(httpLoggingInterceptor) .connectTimeout(30, TimeUnit.SECONDS) .writeTimeout(600, TimeUnit.SECONDS) .readTimeout(600, TimeUnit.SECONDS) .build(); return OpenAiStreamClient .builder() .apiHost(apiHost) .apiKey(apiKey) //自定义key使用策略 默认随机策略 .keyStrategy(new KeyRandomStrategy()) .okHttpClient(okHttpClient) .build(); } }