• Stars
    star
    3,540
  • Rank 12,537 (Top 0.3 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created almost 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ChatGPT Java SDK。支持 GPT3.5、 GPT4 API。开箱即用。

ChatGPT Java API

stable Maven Central

English Doc.

OpenAI ChatGPT 的SDK。觉得不错请右上角Star

项目合作洽谈请点击 联系微信 https://work.weixin.qq.com/kfid/kfc6913bb4906e0e597

QQ群:645132635

免费5刀的帐号已被限速

GPT4.0 API 权限帐号:购买

中文语料库

中文语料库 67万+问题,欢迎拿去炼丹

点击👇🏻传送链接,购买云服务器炼丹:

功能特性

功能 特性
GPT 3.5 支持
GPT 4.0 支持
GPT 3.5-16k 支持
GPT 4.0-32k 支持
函数调用 支持
流式对话 支持
阻塞式对话 支持
前端
上下文 支持
计算Token 用jtokkit
多KEY轮询 支持
代理 支持
反向代理 支持

image

image

使用指南

你可能在找这个,参考Demo https://github.com/PlexPt/chatgpt-online-springboot

最新版本 Maven Central

maven

<dependency>
    <groupId>com.github.plexpt</groupId>
    <artifactId>chatgpt</artifactId>
    <version>4.1.2</version>
</dependency>

gradle

implementation group: 'com.github.plexpt', name: 'chatgpt', version: '4.1.2'

最简使用

也可以使用这个类进行测试 ConsoleChatGPT

      //国内需要代理
      Proxy proxy = Proxys.http("127.0.0.1", 1081);
     //socks5 代理
    // Proxy proxy = Proxys.socks5("127.0.0.1", 1080);

      ChatGPT chatGPT = ChatGPT.builder()
                .apiKey("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")
                .proxy(proxy)
                .apiHost("https://api.openai.com/") //反向代理地址
                .build()
                .init();
                
        String res = chatGPT.chat("写一段七言绝句诗,题目是:火锅!");
        System.out.println(res);

进阶使用

      //国内需要代理 国外不需要
      Proxy proxy = Proxys.http("127.0.0.1", 1080);

      ChatGPT chatGPT = ChatGPT.builder()
                .apiKey("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")
                .proxy(proxy)
                .timeout(900)
                .apiHost("https://api.openai.com/") //反向代理地址
                .build()
                .init();
     
        Message system = Message.ofSystem("你现在是一个诗人,专门写七言绝句");
        Message message = Message.of("写一段七言绝句诗,题目是:火锅!");

        ChatCompletion chatCompletion = ChatCompletion.builder()
                .model(ChatCompletion.Model.GPT_3_5_TURBO.getName())
                .messages(Arrays.asList(system, message))
                .maxTokens(3000)
                .temperature(0.9)
                .build();
        ChatCompletionResponse response = chatGPT.chatCompletion(chatCompletion);
        Message res = response.getChoices().get(0).getMessage();
        System.out.println(res);

函数调用(Function Call)

      //国内需要代理 国外不需要
          Proxy proxy = Proxys.http("127.0.0.1", 1080);

                  chatGPT = ChatGPT.builder()
                  .apiKey("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")
                  .timeout(900)
                  .proxy(proxy)
                  .apiHost("https://api.openai.com/") //代理地址
                  .build()
                  .init();

        List<ChatFunction> functions = new ArrayList<>();
        ChatFunction function = new ChatFunction();
        function.setName("getCurrentWeather");
        function.setDescription("获取给定位置的当前天气");
        function.setParameters(ChatFunction.ChatParameter.builder()
        .type("object")
        .required(Arrays.asList("location"))
        .properties(JSON.parseObject("{\n" +
        "          \"location\": {\n" +
        "            \"type\": \"string\",\n" +
        "            \"description\": \"The city and state, e.g. San Francisco, " +
        "CA\"\n" +
        "          },\n" +
        "          \"unit\": {\n" +
        "            \"type\": \"string\",\n" +
        "            \"enum\": [\"celsius\", \"fahrenheit\"]\n" +
        "          }\n" +
        "        }"))
        .build());
        functions.add(function);

        Message message = Message.of("上海的天气怎么样?");
        ChatCompletion chatCompletion = ChatCompletion.builder()
        .model(ChatCompletion.Model.GPT_3_5_TURBO_0613.getName())
        .messages(Arrays.asList(message))
        .functions(functions)
        .maxTokens(8000)
        .temperature(0.9)
        .build();
        ChatCompletionResponse response = chatGPT.chatCompletion(chatCompletion);
        ChatChoice choice = response.getChoices().get(0);
        Message res = choice.getMessage();
        System.out.println(res);
        if ("function_call".equals(choice.getFinishReason())) {

        FunctionCallResult functionCall = res.getFunctionCall();
        String functionCallName = functionCall.getName();

        if ("getCurrentWeather".equals(functionCallName)) {
        String arguments = functionCall.getArguments();
        JSONObject jsonObject = JSON.parseObject(arguments);
        String location = jsonObject.getString("location");
        String unit = jsonObject.getString("unit");
        String weather = getCurrentWeather(location, unit);

        callWithWeather(weather, res, functions);
        }
        }


    private void callWithWeather(String weather, Message res, List<ChatFunction> functions) {


        Message message = Message.of("上海的天气怎么样?");
        Message function1 = Message.ofFunction(weather);
        function1.setName("getCurrentWeather");
        ChatCompletion chatCompletion = ChatCompletion.builder()
        .model(ChatCompletion.Model.GPT_3_5_TURBO_0613.getName())
        .messages(Arrays.asList(message, res, function1))
        .functions(functions)
        .maxTokens(8000)
        .temperature(0.9)
        .build();
        ChatCompletionResponse response = chatGPT.chatCompletion(chatCompletion);
        ChatChoice choice = response.getChoices().get(0);
        Message res2 = choice.getMessage();
        //上海目前天气晴朗,气温为 22 摄氏度。
        System.out.println(res2.getContent());
        }

    public String getCurrentWeather(String location, String unit) {
        return "{ \"temperature\": 22, \"unit\": \"celsius\", \"description\": \"晴朗\" }";
        }

流式使用

      //国内需要代理 国外不需要
      Proxy proxy = Proxys.http("127.0.0.1", 1080);

      ChatGPTStream chatGPTStream = ChatGPTStream.builder()
                .timeout(600)
                .apiKey("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")
                .proxy(proxy)
                .apiHost("https://api.openai.com/")
                .build()
                .init();

                
        ConsoleStreamListener listener = new ConsoleStreamListener();
        Message message = Message.of("写一段七言绝句诗,题目是:火锅!");
        ChatCompletion chatCompletion = ChatCompletion.builder()
                .messages(Arrays.asList(message))
                .build();
        chatGPTStream.streamChatCompletion(chatCompletion, listener);

流式配合Spring SseEmitter使用

参考 SseStreamListener

你可能在找这个,参考Demo https://github.com/PlexPt/chatgpt-online-springboot

  

    @GetMapping("/chat/sse")
    @CrossOrigin
    public SseEmitter sseEmitter(String prompt) {
       //国内需要代理 国外不需要
       Proxy proxy = Proxys.http("127.0.0.1", 1080);

       ChatGPTStream chatGPTStream = ChatGPTStream.builder()
                .timeout(600)
                .apiKey("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")
                .proxy(proxy)
                .apiHost("https://api.openai.com/")
                .build()
                .init();
        
        SseEmitter sseEmitter = new SseEmitter(-1L);

        SseStreamListener listener = new SseStreamListener(sseEmitter);
        Message message = Message.of(prompt);

        listener.setOnComplate(msg -> {
            //回答完成,可以做一些事情
        });
        chatGPTStream.streamChatCompletion(Arrays.asList(message), listener);


        return sseEmitter;
    }

多KEY自动轮询

只需替换chatGPT构造部分

chatGPT = ChatGPT.builder()
        .apiKeyList(
               // 从数据库或其他地方取出多个KEY
                Arrays.asList("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",
                        "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",
                        "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",
                        "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",
                        ))
        .timeout(900)
        .proxy(proxy)
        .apiHost("https://api.openai.com/") //代理地址
        .build()
        .init();

上下文

参考 ChatContextHolder.java

常见问题

KEY从哪来? 手动注册生成:ai.com(需要海外手机号)、或者成品独享帐号:购买
哪些地区不能用 以下国家IP不支持使用:中国(包含港澳台) 俄罗斯 乌克兰 阿富汗 白俄罗斯 委内瑞拉 伊朗 埃及!!
有封号风险吗 充值的没有。你免费白嫖不封你封谁。
我是尊贵的Plus会员,能用吗 能用,照封不误。PLUS调用API没啥区别
GPT4.0 怎么用 申请 https://openai.com/waitlist/gpt-4-api
api.openai.com ping不通? 禁ping,用curl测试连通性
显示超时? IP不好,换个IP
显示Your access was terminated due to violation of our policies... 你号没了,下一个
显示That model is currently overloaded with other requests. You can retry your request 模型过载,官方炸了,重试
生成的图片不能用? 图片是它瞎编的,洗洗睡吧
如何充值? 用国外信用卡,国内的不行
没有国外信用卡怎么办? 用这个, 扫码免费开卡并充值
返回http 401 API 密钥写错了/没写
返回http 429 请求超速了,或者官方超载了。充钱可解决
返回http 500 服务器炸了

注册教程

https://juejin.cn/post/7173447848292253704

https://mirror.xyz/boxchen.eth/9O9CSqyKDj4BKUIil7NC1Sa1LJM-3hsPqaeW_QjfFBc

另外请看看我的另一个项目 ChatGPT中文使用指南

公众号

云服务器

点击👇🏻传送链接,购买云服务器:

Star History

Star History Chart

More Repositories

1

awesome-chatgpt-prompts-zh

ChatGPT 中文调教指南。各种场景使用指南。学习怎么让它听你的话。
51,907
star
2

chatgpt-corpus

ChatGPT 中文语料库 对话语料 小说语料 客服语料 用于训练大模型
821
star
3

rocket-pt

基于 Java 的私有PT(private tracker)站点系统,可以提供高质量的连接服务和简单易用的界面。base on NexusPHP。
Java
111
star
4

chatgpt-online-springboot

chatgpt online demo for springboot. 带前端界面的chatgpt springboot 示例.
CSS
96
star
5

midjourney-banned-prompt

midjourney banned prompt. MJ 全部违禁词 敏感词库 持续更新
91
star
6

awesome-palworld

Awesome Palworld. 幻兽帕鲁你所需要了解的一切
PowerShell
52
star
7

iyuu-fly

iyuu-fly,带GUI的iyuu自动辅种程序
Java
51
star
8

zsxq-spider

知识星球爬虫,下载文件,文章
Java
32
star
9

chfs-file-server

使用CuteHttpFileServer 搭建静态文件服务器 分享文件 图床
Shell
27
star
10

factorio-chinese

factorio 开源中文汉化语言包
Lua
22
star
11

rocket-ui

rocketpt 前端。基于 Java 的私有PT(private tracker)站点系统,可以提供高质量的种子资源和简单易用的界面。
Vue
22
star
12

Awesome-cn-site

一些小众网站
12
star
13

PlexPt

8
star
14

ninebot-firmware

ninebot firmware
8
star
15

mirai-poem

mirai-poem is a collection of mirai-console plugins
Java
7
star
16

pt-toolkit

java tookit
Java
5
star
17

KiwiBox

KiwiBox
Vue
4
star
18

chatgpt-wechat-mp

chatgpt 微信公众号 机器人、微信公众平台
4
star
19

QQSimple

QQ 精简模块
Java
4
star
20

overwall

爱墙客户端 已停止维护
Java
4
star
21

gemini-java

Google Gemini Pro Java
4
star
22

lolicon

Lolicon API 下载 https://api.lolicon.app
Java
3
star
23

mirai-doc

Quick Start and api docs for mirai
HTML
3
star
24

sprite-split

用于合图(=雪碧图)分割的小工具,不需要分割表文件.
Java
3
star
25

xiuxian

A factorio mod. try to make and then take pills of immortality and cultivate oneself to become on immortal.
Lua
3
star
26

aws-software

Awesome Software 自用软件整理
2
star
27

dir-flater-java

文件夹拍平工具 使用硬链接递归复制子文件到一个文件夹
Java
2
star
28

Android-Dev-PT

安卓开发清单收集整理
2
star
29

androidx-mvvm-fly

基于谷歌最新 Jetpack,MVVM设计模式的一套快速开发库,整合Okhttp+RxJava+Retrofit+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发一个高质量、易维护的Android应用。
Java
2
star
30

Linux-notes

Linux-notes
1
star
31

SimpleNews

reading news mvp dagger2 retrofit okhttp Android
Java
1
star
32

ptmod

mc mod
Java
1
star
33

factorio-server-mod-shrinker

factorio server mod shrinker
Java
1
star
34

intellij-qq

chat with friend in idea use qq
Kotlin
1
star
35

RealisticFusionWeaponry

RealisticFusionWeaponry
1
star
36

capcap

selenium chromedriver full screenshot
Java
1
star
37

shdl

shdl
1
star
38

ekey_scan

猪厂 将军令识别 使用无障碍进行识别,支持大神和旧版将军令 识别完成可上传到服务器
Java
1
star
39

ok-shell

shell collection
Shell
1
star
40

RealisticFusionPower

RealisticFusionPower
1
star
41

ChromePlusPlus

Chrome with the excellent Chrome plugin
1
star
42

QQmsg

1
star
43

sport

springboot freemarker vue element sport system
JavaScript
1
star
44

maven

1
star
45

android-lib-update

android dependencies auto update repository
1
star
46

plexnote

笔记
1
star
47

git-sheet

git
1
star
48

problem

PHP
1
star
49

running-water

Running Water
Shell
1
star
50

plexpt.github.io

pt blog
HTML
1
star
51

small-factorio-mods

All my little mods are in this repository
Lua
1
star
52

SpringStack

spring技术栈 选型
1
star
53

Baby-life-was-good-to-me-But-you-just-made-it-better-I-love-the-way-you-stand-by-me

1
star
54

PT-Study-List

学习清单
1
star
55

aicode

write code with ai
Java
1
star
56

mofang

mofang
JavaScript
1
star
57

IDE-config

idea config backup ; IDEA 配置文件备份
1
star
58

-crispy-garbanzo-chess

奇怪的棋
Java
1
star
59

Awesome-Sora

Awesome Sora.
1
star
60

gpt4

1
star
61

JavaFXTemplate

javafx+controls+jfoenix+tilesfx+FontAwesomeFX+gradle+idea项目整合骨架项目
Java
1
star