- Notifications
You must be signed in to change notification settings - Fork707
ChatGPT Java SDK。支持 GPT-4o、 GPT-5 API。开箱即用。An unofficial Java SDK for seamless integration with ChatGPT's GPT-5 and GPT-4 APIs. Ready-to-use, simple setup, and efficient for building AI-powered applications.
License
PlexPt/chatgpt-java
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
OpenAI ChatGPT SDK
| 功能 | 特性 |
|---|---|
| GPT 3.5 | 支持 |
| GPT 4.0 | 支持 |
| GPT 4o | 支持 |
| GPT 4o-mini | 支持 |
| 函数调用 | 支持 |
| 流式对话 | 支持 |
| 上下文 | 支持 |
| 计算Token | 支持 |
| 多KEY轮询 | 支持 |
| 代理 | 支持 |
| 反向代理 | 支持 |
参考Demohttps://github.com/PlexPt/chatgpt-online-springboot
maven
<dependency> <groupId>com.github.plexpt</groupId> <artifactId>chatgpt</artifactId> <version>6.0.0</version></dependency>gradle
implementation group: 'com.github.plexpt', name: 'chatgpt', version: '6.0.0'//国内需要代理Proxyproxy =Proxys.http("127.0.0.1",1081);//socks5 代理// Proxy proxy = Proxys.socks5("127.0.0.1", 1080);ChatGPTchatGPT =ChatGPT.builder() .apiKey("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") .proxy(proxy) .apiHost("https://api.openai.com/")//反向代理地址 .build() .init();Stringres =chatGPT.chat("写一段七言绝句诗,题目是:火锅!");System.out.println(res);
也可以使用这个类进行测试ConsoleChatGPT
//国内需要代理 国外不需要Proxyproxy =Proxys.http("127.0.0.1",1080);ChatGPTchatGPT =ChatGPT.builder() .apiKey("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") .proxy(proxy) .timeout(900) .apiHost("https://api.openai.com/")//反向代理地址 .build() .init();Messagesystem =Message.ofSystem("你现在是一个诗人,专门写七言绝句");Messagemessage =Message.of("写一段七言绝句诗,题目是:火锅!");ChatCompletionchatCompletion =ChatCompletion.builder() .model(ChatCompletion.Model.GPT_3_5_TURBO.getName()) .messages(Arrays.asList(system,message)) .maxTokens(3000) .temperature(0.9) .build();ChatCompletionResponseresponse =chatGPT.chatCompletion(chatCompletion);System.out.println(response.toPlainString());
Messagesystem =Message.ofSystem("你现在是一个诗人,专门写七言绝句");Messagemessage =Message.of("写一段七言绝句诗,题目是:火锅!");ChatCompletionchatCompletion1 =ChatCompletion.builder() .model(ChatCompletion.Model.GPT_3_5_TURBO) .messages(Arrays.asList(system,message)) .maxTokens(3000) .temperature(0.9) .build();ChatCompletionchatCompletion2 =ChatCompletion.builder() .model(ChatCompletion.Model.GPT4) .messages(Arrays.asList(system,message)) .maxTokens(3000) .temperature(0.9) .build();log.info("{} tokens: {}",chatCompletion1.getModel(),chatCompletion1.countTokens());log.info("{} tokens: {}",chatCompletion2.getModel(),chatCompletion2.countTokens());
//国内需要代理 国外不需要Proxyproxy =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 =newArrayList<>();ChatFunctionfunction =newChatFunction();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);Messagemessage =Message.of("上海的天气怎么样?");ChatCompletionchatCompletion =ChatCompletion.builder() .model(ChatCompletion.Model.GPT_3_5_TURBO_0613.getName()) .messages(Arrays.asList(message)) .functions(functions) .maxTokens(8000) .temperature(0.9) .build();ChatCompletionResponseresponse =chatGPT.chatCompletion(chatCompletion);ChatChoicechoice =response.getChoices().get(0);Messageres =choice.getMessage();System.out.println(res);if ("function_call".equals(choice.getFinishReason())) {FunctionCallResultfunctionCall =res.getFunctionCall();StringfunctionCallName =functionCall.getName();if ("getCurrentWeather".equals(functionCallName)) {Stringarguments =functionCall.getArguments();JSONObjectjsonObject =JSON.parseObject(arguments);Stringlocation =jsonObject.getString("location");Stringunit =jsonObject.getString("unit");Stringweather =getCurrentWeather(location,unit);callWithWeather(weather,res,functions); } }privatevoidcallWithWeather(Stringweather,Messageres,List<ChatFunction>functions) {Messagemessage =Message.of("上海的天气怎么样?");Messagefunction1 =Message.ofFunction(weather);function1.setName("getCurrentWeather");ChatCompletionchatCompletion =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();ChatCompletionResponseresponse =chatGPT.chatCompletion(chatCompletion);ChatChoicechoice =response.getChoices().get(0);Messageres2 =choice.getMessage();//上海目前天气晴朗,气温为 22 摄氏度。System.out.println(res2.getContent()); }publicStringgetCurrentWeather(Stringlocation,Stringunit) {return"{\"temperature\": 22,\"unit\":\"celsius\",\"description\":\"晴朗\" }"; }
//国内需要代理 国外不需要Proxyproxy =Proxys.http("127.0.0.1",1080);ChatGPTStreamchatGPTStream =ChatGPTStream.builder() .timeout(600) .apiKey("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") .proxy(proxy) .apiHost("https://api.openai.com/") .build() .init();ConsoleStreamListenerlistener =newConsoleStreamListener();Messagemessage =Message.of("写一段七言绝句诗,题目是:火锅!");ChatCompletionchatCompletion =ChatCompletion.builder() .messages(Arrays.asList(message)) .build();chatGPTStream.streamChatCompletion(chatCompletion,listener);
你可能在找这个,参考Demohttps://github.com/PlexPt/chatgpt-online-springboot
@GetMapping("/chat/sse")@CrossOriginpublicSseEmittersseEmitter(Stringprompt) {//国内需要代理 国外不需要Proxyproxy =Proxys.http("127.0.0.1",1080);ChatGPTStreamchatGPTStream =ChatGPTStream.builder() .timeout(600) .apiKey("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") .proxy(proxy) .apiHost("https://api.openai.com/") .build() .init();SseEmittersseEmitter =newSseEmitter(-1L);SseStreamListenerlistener =newSseStreamListener(sseEmitter);Messagemessage =Message.of(prompt);listener.setOnComplate(msg -> {//回答完成,可以做一些事情 });chatGPTStream.streamChatCompletion(Arrays.asList(message),listener);returnsseEmitter; }
只需替换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();另外请看看我的另一个项目ChatGPT中文使用指南
公众号
点击👇🏻传送链接,购买云服务器:
项目合作洽谈请点击 联系微信https://work.weixin.qq.com/kfid/kfc6913bb4906e0e597
Thanks toJetBrains for providing free open-source development license for this project
About
ChatGPT Java SDK。支持 GPT-4o、 GPT-5 API。开箱即用。An unofficial Java SDK for seamless integration with ChatGPT's GPT-5 and GPT-4 APIs. Ready-to-use, simple setup, and efficient for building AI-powered applications.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors10
Uh oh!
There was an error while loading.Please reload this page.

