12345下一页
返回列表 发新帖

一个可以调用Gpt的apikey进行回答的java脚本开源分享

  [复制链接]

4

主题

72

回帖

1523

积分

高中生

我是菜鸡

Rank: 4

金币
-529
好评
14
信誉
100

MT论坛最佳新人MT论坛帅哥考神MT论坛新人MT论坛活跃会员

发表于 2023-4-7 20:43:15 来自手机  | 显示全部楼层 | 阅读模式  来自 广东
[转载请标明出处]

球球啦,点个赞

再不水就看不了帖了,已经一个金币都没了

代码如下(已加注释,方便更好的分析):
  1. import java.io.BufferedReader;
  2. import java.io.DataOutputStream;
  3. import java.io.InputStreamReader;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6. import java.nio.charset.StandardCharsets;
  7. import org.json.JSONArray;
  8. import org.json.JSONObject;

  9. class GPT3Bot {
  10.     // 你的API密钥
  11.     private static final String API_KEY = "你的apikey";

  12.     // 定义一个Model类,用于执行API请求
  13.     public static class Model {
  14.         private String apiKey;

  15.         public Model(String apiKey) {
  16.             this.apiKey = apiKey;
  17.         }

  18.         // 接受用户输入并调用feijiGPT3方法发起请求
  19.         public String feiji(String prompt) {
  20.             return feijiGPT3(prompt, this.apiKey);
  21.         }
  22.     }

  23.     // 发起请求并处理响应的方法
  24.     public static String feijiGPT3(String prompt, String apiKey) {
  25.         StringBuilder content = new StringBuilder();
  26.         try {
  27.             // 设定API的URL
  28.             URL url = new URL("https://api.openai.com/v1/engines/text-davinci-003/completions");

  29.             // 创建一个HttpURLConnection对象并设置请求属性
  30.             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  31.             connection.setRequestMethod("POST");
  32.             connection.setRequestProperty("Content-Type", "application/json");
  33.             connection.setRequestProperty("Authorization", "Bearer " + apiKey);
  34.             connection.setDoOutput(true);

  35.             // 创建一个JSON对象,用于发送请求数据
  36.             JSONObject jsonRequest = new JSONObject();
  37.             jsonRequest.put("prompt", "你好,请把你的故事发出来让我笑话一下。\n问题:求解 " + prompt + "\n答案:");
  38.             jsonRequest.put("max_tokens", 150);//被回复最多的答案字数,越少越快
  39.             jsonRequest.put("n", 1);//恢复的答案个数
  40.             jsonRequest.put("temperature", 0.3);//智商1~0.3内最好

  41.             // 向API发送请求数据
  42.             DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
  43.             outputStream.write(jsonRequest.toString().getBytes(StandardCharsets.UTF_8));
  44.             outputStream.flush();
  45.             outputStream.close();

  46.             // 处理API响应
  47.             BufferedReader inputReader;
  48.             int responseCode = connection.getResponseCode();
  49.             if (responseCode == HttpURLConnection.HTTP_OK) {
  50.                 inputReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
  51.             } else {
  52.                 inputReader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
  53.             }

  54.             String inputLine;

  55.             // 读取响应数据
  56.             while ((inputLine = inputReader.readLine()) != null) {
  57.                 content.append(inputLine);
  58.             }

  59.             inputReader.close();
  60.             connection.disconnect();

  61.             // 解析响应JSON数据并提取答案
  62.             JSONObject jsonResponse = new JSONObject(content.toString());
  63.             String answer = jsonResponse.getJSONArray("choices").getJSONObject(0).getString("text");

  64.             return answer.trim().split("\n")[0];

  65.         } catch (Exception e) {
  66.             System.out.println("请求/解析异常: " + e.getMessage());
  67.             e.printStackTrace();
  68.             System.out.println("响应内容: " + content.toString());
  69.             return "sorry,我也没办法咯。";
  70.         }
  71.     }

  72.     // 主函数,实现用户输入与程序交互
  73.     public static void main(String[] args) {
  74.         BufferedReader userInputReader = new BufferedReader(new InputStreamReader(System.in));
  75.         String userInput;
  76.         String response;

  77.         // 创建一个Model实例
  78.         Model model = new Model(API_KEY);

  79.         // 循环获取用户输入并输出回复
  80.         while (true) {
  81.             System.out.print("你: ");
  82.             try {
  83.                 userInput = userInputReader.readLine();
  84.                 if (userInput.equalsIgnoreCase("不bb了")) {
  85.                     System.out.println("好的老铁。");//回复不bb了关闭聊天
  86.                     break;
  87.                 }

  88.                 // 使用feiji方法获取回复
  89.                 response = model.feiji(userInput);
  90.                 System.out.println("飞盾: " + response);
  91.             } catch (Exception e) {
  92.                 System.out.println("发生错误: " + e.getMessage());
  93.             }
  94.         }
  95.     }
  96. }
复制代码

效果图


使用方法复制粘贴到aide的javaapplicant模式



还有一个晚点发,js类型的可以获取到QQ群信息并且回复的脚本
差点忘了记得添加依赖

没网盘了,将就用下通过百度网盘分享的文件:json-202…
链接:https://pan.baidu.com/s/1_qha07DO6I3SaVAlNlntug?pwd=feij
提取码:feij
复制这段内容打开「百度网盘APP 即可获取」

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有1人评分好评 金币 理由
1.0e40 + 1 + 1 sooy了

查看全部评分 总评分:好评 +1  金币 +1 

回复

使用道具 举报

4

主题

72

回帖

1523

积分

高中生

我是菜鸡

Rank: 4

金币
-529
好评
14
信誉
100

MT论坛最佳新人MT论坛帅哥考神MT论坛新人MT论坛活跃会员

发表于 2023-4-8 06:02:17 来自手机  | 显示全部楼层  来自 广东
本帖最后由 飞机 于 2023-4-8 06:52 编辑

46行注释应该是回复的答案个数,打错字了
记得挂梯子,gpt不然链接不上
回复

使用道具 举报

175

主题

8838

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
7383
好评
29
信誉
165

MT论坛新人MT论坛帅哥考神MT论坛最佳新人MT论坛灌水老大MT论坛活跃会员

发表于 2023-4-7 22:46:13 来自手机  | 显示全部楼层  来自 河南
看看隐藏
回复

使用道具 举报

9

主题

1848

回帖

6332

积分

硕士生

Rank: 6Rank: 6

金币
4297
好评
2
信誉
100
发表于 2023-4-7 22:53:53 来自手机  | 显示全部楼层  来自 江苏
看看隐藏
回复

使用道具 举报

41

主题

1526

回帖

5631

积分

硕士生

Rank: 6Rank: 6

金币
585
好评
6
信誉
97
发表于 2023-4-7 23:01:55 来自手机  | 显示全部楼层  来自 广东
真爱奋,我来了
回复

使用道具 举报

0

主题

1548

回帖

5078

积分

硕士生

Rank: 6Rank: 6

金币
4542
好评
0
信誉
100
发表于 2023-4-7 23:02:27 来自手机  | 显示全部楼层  来自 广东
回复一下,看看先,也谢谢您的分享!
回复

使用道具 举报

3

主题

605

回帖

2593

积分

大学生

Rank: 5Rank: 5

金币
1376
好评
1
信誉
98
发表于 2023-4-7 23:06:25 来自手机  | 显示全部楼层  来自 新加
大佬666牛逼
回复

使用道具 举报

35

主题

2721

回帖

1万

积分

博士生

蜜桃酱

Rank: 7Rank: 7Rank: 7

金币
908
好评
72
信誉
218

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员MT论坛侠客挂机大佬

QQ
发表于 2023-4-8 00:11:59 来自手机  | 显示全部楼层  来自 云南
感谢分享!
回复

使用道具 举报

1

主题

3040

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4527
好评
1
信誉
103
发表于 2023-4-8 00:51:32 来自手机  | 显示全部楼层  来自 浙江
看看看看
回复

使用道具 举报

126

主题

3765

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6581
好评
13
信誉
143

MT论坛新人MT论坛最佳新人考神MT论坛活跃会员

发表于 2023-4-8 01:07:37 来自手机  | 显示全部楼层  来自 四川
让我看看
回复

使用道具 举报

16

主题

7688

回帖

1万

积分

博士生

:)))))

Rank: 7Rank: 7Rank: 7

金币
5763
好评
12
信誉
107

MT论坛帅哥考神MT论坛新人MT论坛活跃会员

发表于 2023-4-8 01:28:56 来自手机  | 显示全部楼层  来自 河南
感谢分享。顺便说一下论坛帖子的排序好像有问题吧,你这个贴子往下翻了挺多才看到
回复

使用道具 举报

1

主题

3085

回帖

1万

积分

博士生

666

Rank: 7Rank: 7Rank: 7

金币
3382
好评
1
信誉
100

MT论坛新人MT论坛最佳新人

发表于 2023-4-8 02:06:15 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

7

主题

557

回帖

3178

积分

大学生

Rank: 5Rank: 5

金币
680
好评
2
信誉
100
发表于 2023-4-8 02:16:27 来自手机  | 显示全部楼层  来自 上海
感谢分享
回复

使用道具 举报

16

主题

2126

回帖

5619

积分

硕士生

Rank: 6Rank: 6

金币
122
好评
1
信誉
110

考神MT论坛新人MT论坛最佳新人MT论坛帅哥

QQ
发表于 2023-4-8 03:42:09 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

2

主题

914

回帖

2762

积分

大学生

Rank: 5Rank: 5

金币
3235
好评
0
信誉
100
QQ
发表于 2023-4-8 04:48:50 来自手机  | 显示全部楼层  来自 河南
看看隐藏
回复

使用道具 举报

4

主题

72

回帖

1523

积分

高中生

我是菜鸡

Rank: 4

金币
-529
好评
14
信誉
100

MT论坛最佳新人MT论坛帅哥考神MT论坛新人MT论坛活跃会员

发表于 2023-4-8 05:59:14 来自手机  | 显示全部楼层  来自 广东
又是起名字? 发表于 2023-4-8 01:28
感谢分享。顺便说一下论坛帖子的排序好像有问题吧,你这个贴子往下翻了挺多才看到 ...

问题不大
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表