赞
踩
在开发之前,我们先进行一些配置信息的创建,将我们的key和接口地址准备好
# key:多个key可用英文逗号隔开,支持轮询。因为单个key的每分钟请求会有限制,轮询可以避免这种情况
apiKey=sk-******************,sk-******************
# 接口地址:没有代理地址,默认为https://api.openai.com/
apiHost=https://chatapi.mnzdna.xyz/
package com.ning.config; import java.io.InputStream; import java.util.Arrays; import java.util.List; import java.util.Properties; public class ChatGPTConfig { private static Properties properties = null; // 加载properties配置文件里的信息 static { try { properties = new Properties(); InputStream resourceAsStream = ClassLoader.getSystemClassLoader().getResourceAsStream("application.properties"); properties.load(resourceAsStream); }catch (Exception e){ e.printStackTrace(); } } // 获取key序列 public static List<String> getApiKey() throws Exception{ String apiKey = properties.getProperty("apiKey"); String[] split = apiKey.split(","); if(split.length <= 0){ throw new Exception(); } return Arrays.asList(split); } // 获取接口地址,没有设置 默认为https://api.openai.com/ public static String getApiHost(){ return properties.getProperty("apiHost","https://api.openai.com/"); } }
也可以使用Spring配置类将配置信息注入进来。
首先,本地开发的程序要想使用ChatGPT接口,就需要连接互联网,再连接接口,因此,我们的准备工作就有两个,这两个工作对应两段代码。
// 设置本地代理:如果你需要通过代理才能访问到接口,就需要通过相关参数创建这个对象
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10809));
// 设置日志级别:对于控制台输出的日志信息,我们有必要通过设置级别进行过滤,这里推荐设置HEADERS
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger());
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
// 创建http客户端
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.addInterceptor(new OpenAiResponseInterceptor())
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
// 创建openAI客户端
openAiClient = OpenAiClient.builder()
// 获取key
.apiKey(ChatGPTConfig.getApiKey())
// 获取接口
.apiHost(ChatGPTConfig.getApiHost())
.okHttpClient(okHttpClient)
.build();
在我们连接上OpenAI后,我们就能进行后续的操作了。上述所有代码可放在测试类的Before注解上,代码如下:
// openAi实例对象 OpenAiClient openAiClient; @Before public void before() throws Exception{ // 设置本地代理:如果你需要通过代理进行访问,就需要通过相关参数创建这个对象 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10809)); // 设置日志级别:对于控制台输出的日志信息,我们有必要通过设置级别进行过滤,这里推荐设置HEADERS HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); // 创建http客户端 OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(httpLoggingInterceptor) .addInterceptor(new OpenAiResponseInterceptor()) .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // 创建openAi客户端 openAiClient = OpenAiClient.builder() // 获取key .apiKey(ChatGPTConfig.getApiKey()) // 获取接口 .apiHost(ChatGPTConfig.getApiHost()) .okHttpClient(okHttpClient) .build(); }
写一个测试方法,如下:
// 这个 测试方法输出我们openai的api接口地址
@Test
public void startTest(){
// getApiHost():获取接口地址
System.out.println(openAiClient.getApiHost());
}
运行结果如下:
以上就是我们利用Java开发ChatGPT的准备工作,也是非常重要的一步,若这一系列的准备工作中出现错误,都会影响后面的开发过程。因此,我在此结尾,若读者在实践过程中,完全没有问题,则可以再继续。
import com.ning.config.ChatGPTConfig; import com.unfbx.chatgpt.OpenAiClient; import com.unfbx.chatgpt.interceptor.OpenAILogger; import com.unfbx.chatgpt.interceptor.OpenAiResponseInterceptor; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import org.junit.Before; import org.junit.Test; import java.net.InetSocketAddress; import java.net.Proxy; import java.util.concurrent.TimeUnit; public class ChatTest { OpenAiClient openAiClient; @Before public void before() throws Exception{ // 设置本地代理:如果你需要通过代理进行访问,就需要通过相关参数创建这个对象 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10809)); // 设置日志级别:对于控制台输出的日志信息,我们有必要通过设置级别进行过滤,这里推荐设置HEADERS HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); // 创建http客户端 OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(httpLoggingInterceptor) .addInterceptor(new OpenAiResponseInterceptor()) .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build(); // 创建openAi客户端 openAiClient = OpenAiClient.builder() // 获取key .apiKey(ChatGPTConfig.getApiKey()) // 获取接口 .apiHost(ChatGPTConfig.getApiHost()) .okHttpClient(okHttpClient) .build(); } @Test public void startTest(){ System.out.println(openAiClient.getApiHost()); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。