OpenAI ChatGPT 的SDK。觉得不错请右上角Star
| 功能 | 特性 |
|---|---|
| GPT 3.5 | 支持 |
| GPT 4.0 | 支持 |
| GPT 4o | 支持 |
| GPT 4o-mini | 支持 |
| 函数调用 | 支持 |
| 流式对话 | 支持 |
| 上下文 | 支持 |
| 计算Token | 支持 |
| 多KEY轮询 | 支持 |
| 代理 | 支持 |
| 反向代理 | 支持 |
你可能在找这个,参考Demo https://github.com/PlexPt/chatgpt-online-springboot
maven
<dependency>
<groupId>com.github.plexpt</groupId>
<artifactId>chatgpt</artifactId>
<version>5.1.0</version>
</dependency>
gradle
implementation group: 'com.github.plexpt', name: 'chatgpt', version: '5.1.0'
//国内需要代理 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);
也可以使用这个类进行测试 ConsoleChatGPT
//国内需要代理 国外不需要 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); System.out.println(response.toPlainString());
Message system = Message.ofSystem("你现在是一个诗人,专门写七言绝句"); Message message = Message.of("写一段七言绝句诗,题目是:火锅!"); ChatCompletion chatCompletion1 = ChatCompletion.builder() .model(ChatCompletion.Model.GPT_3_5_TURBO) .messages(Arrays.asList(system, message)) .maxTokens(3000) .temperature(0.9) .build(); ChatCompletion chatCompletion2 = 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());
//国内需要代理 国外不需要 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);
你可能在找这个,参考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; }
只需替换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();
| 问 | 答 |
|---|---|
| KEY从哪来? | 手动注册生成:openai.com(需要海外手机号)、或者GPT API 额度购买(微信) |
| 哪些地区不能用 | 以下国家IP不支持使用:中国(包含港澳台) 俄罗斯 乌克兰 阿富汗 白俄罗斯 委内瑞拉 伊朗 埃及!! |
| 有封号风险吗 | 使用代理有一定的风险。 |
| 我是尊贵的Plus会员,能用吗 | PLUS是网页端,和API不是一个 |
| GPT4.0 怎么用 | 目前需要充值 |
| 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
公众号
<img src="https://user-images.githubusercontent.com/15922823/218004565-bb632624-b376-4f01-8ce2-d7065107bf4a.png" width="300"/>点击👇🏻传送链接,购买云服务器:
[

免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号