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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    详解Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    这篇文章主要介绍了Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送,应该会对大家学习Jenkins有所启发
    2021-04-04
  • 面试题:用 Java 逆序打印链表

    面试题:用 Java 逆序打印链表

    这篇文章主要介绍了面试题:用 Java 逆序打印链表,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 内存屏障由来及实现思路

    内存屏障由来及实现思路

    这篇文章主要为大家详细介绍了内存屏障由来及实现思路的详细讲解,让大家彻底的理解内存屏障,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-01-01
  • 详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别

    下面小编就为大家带来一篇详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot+Mybatis plus+React实现条件选择切换搜索实践

    SpringBoot+Mybatis plus+React实现条件选择切换搜索实践

    本文主要介绍了SpringBoot+Mybatis plus+React实现条件选择切换搜索实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java面试之动态规划与组合数

    Java面试之动态规划与组合数

    这篇文章主要介绍了Java面试之动态规划与组合数的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 一文详解Spring Security的基本用法

    一文详解Spring Security的基本用法

    Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架, 提供了完善的认证机制和方法级的授权功能。本文将通过一个简单的案例了解一下Spring Security的基本用法,需要的可以参考一下
    2022-05-05
  • java char数据类型原理解析

    java char数据类型原理解析

    这篇文章主要介绍了java char数据类型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • springboot项目中添加自定义日志及配置过程

    springboot项目中添加自定义日志及配置过程

    这篇文章主要介绍了springboot项目中添加自定义日志,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java信号量全解析

    Java信号量全解析

    这篇文章主要介绍了Java信号量的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-01-01

最新评论