Java调用ChatGPT的实现代码

 更新时间:2023年02月18日 14:13:08   作者:mikey桑  
这篇文章主要介绍了Java调用ChatGPT的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Java调用ChatGPT的小插件

1. ChatGPT账号准备

很多博文有介绍怎么获取账号,具体的可自行搜索。
准备好ChatGPT帐号之后打开openai的官网去创建API KEYS,链接:https://platform.openai.com/account/api-keys。
注意:这里的API KEYS创建好以后一定要妥善保存,创建以后,第二次就无法再查看了,想要再看,只能删除了API KEYS然后重新创建。

这里的API KEYS妥善保管后面会用到。

2. 配置阶段

2.1 依赖引入

pom.xml中引入依赖

        <dependency>
            <groupId>io.github.asleepyfish</groupId>
            <artifactId>chatgpt</artifactId>
            <version>1.0.3</version>
        </dependency>

2.2 配置application.yml文件

application.yml文件中配置chatgpt相关参数

chatgpt:
  model: text-davinci-003
  token: sk-xxxxxxxxxxxxxxxxxxx
  retries: 10

这里的model是选择chatgpt哪个模型,默认填好的是最优的模型了,token就是上面申请的API KEYS,retries指的是当chatgpt第一次请求回答失败时,重新请求的次数(增加该参数的原因是因为大量访问的原因,在某一个时刻,chatgpt服务将处于无法访问的情况)

2.3 @EnableChatGPT注解

启动类上加入@EnableChatGPT注解则将ChatGPT服务注入到Spring中。

在这里插入图片描述

3. 使用

提供了工具类OpenAiUtils,里面提供了相关方法进行调用。
其中最简单的使用方法是:

OpenAiUtils.createCompletion(prompt);

入参prompt即输入的问题的字符串。

还提供一个通用的静态方法是

public static List<String> createCompletion(CompletionRequest completionRequest) {...}

入参CompletionRequest 里包含模型的一些可调参数。

OpenAiUtils类中还提供了多个可供选择的静态方法,可以自行查看。

上述方法的返回参数是一个list,是因为调整参数返回答案n可以一次性返回多条不同的解答(nCompletionRequest类中一个参数)。

4. 测试

demo的Git地址:

https://github.com/asleepyfish/chatgpt-demo

测试代码:

@SpringBootTest
public class SpringTest {
    @Test
    public void chatGPTTest() {
        OpenAiUtils.createCompletion("use c++ write QuickSort").forEach(System.out::println);
    }
}

ChatGPT输出结果:

#include <iostream> 
using namespace std; 

// A utility function to swap two elements 
void swap(int* a, int* b) 
{ 
    int t = *a; 
    *a = *b; 
    *b = t; 
} 

/* This function takes last element as pivot, places 
the pivot element at its correct position in sorted 
array, and places all smaller (smaller than pivot) 
to left of pivot and all greater elements to right 
of pivot */
int partition (int arr[], int low, int high) 
{ 
    int pivot = arr[high]; // pivot 
    int i = (low - 1); // Index of smaller element 

    for (int j = low; j <= high - 1; j++) 
    { 
        // If current element is smaller than the pivot 
        if (arr[j] < pivot) 
        { 
            i++; // increment index of smaller element 
            swap(&arr[i], &arr[j]); 
        } 
    } 
    swap(&arr[i + 1], &arr[high]); 
    return (i + 1); 
} 

/* The main function that implements QuickSort 
arr[] --> Array to be sorted, 
low --> Starting index, 
high --> Ending index */
void quickSort(int arr[], int low, int high) 
{ 
    if (low < high) 
    { 
        /* pi is partitioning index, arr[p] is now 
        at right place */
        int pi = partition(arr, low, high); 

        // Separately sort elements before 
        // partition and after partition 
        quickSort(arr, low, pi - 1); 
        quickSort(arr, pi + 1, high); 
    } 
} 

/* Function to print an array */
void printArray(int arr[], int size) 
{ 
    int i; 
    for (i = 0; i < size; i++) 
        cout << arr[i] << " "; 
    cout << endl; 
} 

// Driver Code 
int main() 
{ 
    int arr[] = {10, 7, 8, 9, 1, 5}; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    quickSort(arr, 0, n - 1); 
    cout << "Sorted array: " << endl; 
    printArray(arr, n); 
    return 0; 
}

到此这篇关于Java调用ChatGPT的实现代码的文章就介绍到这了,更多相关Java调用ChatGPT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解RocketMQ 消费端如何监听消息

    详解RocketMQ 消费端如何监听消息

    这篇文章主要为大家介绍了RocketMQ 消费端如何监听消息示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • java实现商品信息管理系统

    java实现商品信息管理系统

    这篇文章主要为大家详细介绍了java实现商品信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • SpringBoot详细讲解如何创建及刷新Spring容器bean

    SpringBoot详细讲解如何创建及刷新Spring容器bean

    前面看spring源码时可以发现refresh()方法十分重要。在这个方法中会加载beanDefinition,同时创建bean对象。那么在springboot中有没有使用这个refresh()方法呢
    2022-06-06
  • 支票金额大写转换示例(金额大写转换器)

    支票金额大写转换示例(金额大写转换器)

    这篇文章主要介绍了支票金额大写转换示例(金额大写转换器),需要的朋友可以参考下
    2014-02-02
  • java获取IP归属地全网显示开源库使用

    java获取IP归属地全网显示开源库使用

    这篇文章主要为大家介绍了java获取IP归属地全网显示的开源库使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Spring Boot 整合RocketMq实现消息过滤功能

    Spring Boot 整合RocketMq实现消息过滤功能

    这篇文章主要介绍了Spring Boot 整合RocketMq实现消息过滤,本文讲解了RocketMQ实现消息过滤,针对不同的业务场景选择合适的方案即可,需要的朋友可以参考下
    2022-06-06
  • SpringBoot文件上传功能的实现方法

    SpringBoot文件上传功能的实现方法

    这篇文章主要介绍了SpringBoot文件上传功能的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • mybatis if传入字符串数字踩坑记录及解决

    mybatis if传入字符串数字踩坑记录及解决

    这篇文章主要介绍了mybatis if传入字符串数字踩坑记录及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • java设计模式之工厂方法详解

    java设计模式之工厂方法详解

    这篇文章主要为大家详细介绍了java设计模式之工厂方法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 浅析Java集合及LIst接口

    浅析Java集合及LIst接口

    这篇文章主要介绍了Java集合及LIst接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论