当前位置:   article > 正文

Java开发ChatGPT应用入门(一)_chatgpt 写java程序

chatgpt 写java程序

准备

 在开发之前,我们先进行一些配置信息的创建,将我们的key和接口地址准备好

创建Capplication.properties配置文件

# key:多个key可用英文逗号隔开,支持轮询。因为单个key的每分钟请求会有限制,轮询可以避免这种情况
apiKey=sk-******************,sk-******************
# 接口地址:没有代理地址,默认为https://api.openai.com/
apiHost=https://chatapi.mnzdna.xyz/
  • 1
  • 2
  • 3
  • 4

创建ChatGPTConfig类,用于管理相关配置信息

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/");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

也可以使用Spring配置类将配置信息注入进来。

创建OkHttpClient对象

 首先,本地开发的程序要想使用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();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

连接OpenAI接口,创建一个OpenAI客户端

// 创建openAI客户端
openAiClient = OpenAiClient.builder()
        // 获取key
        .apiKey(ChatGPTConfig.getApiKey())
        // 获取接口
        .apiHost(ChatGPTConfig.getApiHost())
        .okHttpClient(okHttpClient)
        .build();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

 在我们连接上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();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

测试

 写一个测试方法,如下:

// 这个 测试方法输出我们openai的api接口地址
@Test
public void startTest(){
    // getApiHost():获取接口地址
    System.out.println(openAiClient.getApiHost());
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

 运行结果如下:

 以上就是我们利用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());
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/129691
推荐阅读
相关标签
  

闽ICP备14008679号