Java开发ChatGPT应用入门(一)

准备

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

创建Capplication.properties配置文件

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

创建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/");
    }
}

也可以使用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();

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

// 创建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());
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Java小白来说,入门路线是一个重要的起点。以下是一个适合新手的Java入门路线: 1. 学习Java基础知识:了解Java的基本语法、数据类型、控制流程等。在这个阶段,可以通过阅读教材、观看教学视频或参加在线课程来系统学习Java基础知识。 2. 熟悉面向对象编程(OOP):学习面向对象编程的概念,掌握Java中的类、对象、继承、封装和多态等概念。通过编简单的Java程序来巩固对面向对象编程的理解。 3. 掌握Java核心库:学习Java核心库,包括字符串操作、集合框架、输入输出、异常处理等。这些是日常开发中常用的工具和技术,熟悉它们将有助于提高编程效率。 4. 学习Java的高级特性:深入学习Java的高级特性,如多线程、网络编程、反射、注解等。这些知识将为你在实际项目中解决问题提供更多的选择和灵活性。 5. 实践项目练习:通过实践项目来巩固所学知识。选择一些小型的项目,如简单的控制台应用程序或基本的Web应用程序,将所学的Java知识应用到实际中。 6. 深入研究Java框架和工具:选取一些主流的Java框架和工具进行深入学习,如Spring、Hibernate、Maven等。这些框架和工具广泛应用于企业级开发中,掌握它们将有助于提高开发效率和代码质量。 7. 持续学习和实践:Java是一个广阔而深入的领域,不断学习和实践是保持技术竞争力的关键。通过阅读书籍、参与社区讨论、关注最新的技术趋势等方式,持续提升自己的Java技术水平。 以上是一个适合Java小白的入门路线,希望能够帮助你顺利学习Java!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [2021最新学习路线,Java快速入门到精通(附Java教学视频)](https://blog.csdn.net/java_0000/article/details/121084261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PG Thinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值