java调用chatGpt API接口代码实操

2023-05-16

话不多说,直接上代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;

public class ChatGPTAPI {

	private static final String API_ENDPOINT = "https://api.openai.com/v1/chat/completions";
	private static final String API_KEY = "你的APIKey";

	public static String generateAnswer(String message, String systemRole) {
		try {
			URL url = new URL(API_ENDPOINT);
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			conn.setRequestMethod("POST");
			conn.setRequestProperty("Content-Type", "application/json");
			conn.setRequestProperty("Authorization", "Bearer " + API_KEY);
			conn.setDoOutput(true);

			// 构建请求体
			Map<String, Object> data = new HashMap<>();
			data.put("model", "gpt-3.5-turbo");

			List<Map<String, String>> messages = new ArrayList<>();

			// 添加用户消息
			Map<String, String> userMsg = new HashMap<>();
			userMsg.put("role", "user");
			userMsg.put("content", message);
			messages.add(userMsg);

			// 添加系统消息
			Map<String, String> sysMsg = new HashMap<>();
			sysMsg.put("role", "system");
			sysMsg.put("content", systemRole);
			messages.add(sysMsg);

			data.put("messages", messages);
			data.put("temperature", 0.7);

			Gson gson = new Gson();
			String requestBody = gson.toJson(data);

			// 发送请求
			conn.getOutputStream().write(requestBody.getBytes(StandardCharsets.UTF_8));

			// 读取响应
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			StringBuilder response = new StringBuilder();
			String line;
			while ((line = reader.readLine()) != null) {
				response.append(line);
			}
			reader.close();
			return response.toString();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	public static void main(String[] args) {
		System.out.println("#####目前是历史老师######");
		// 设置问题
		String question = "帮我出一个关于小学3年级历史问题,要求有趣味性,保证让孩子喜欢去回答,题目总共4个选项,并带上答案";

		String systemRole = "让我们来玩点有趣的吧!怎么样,来个有挑战性和趣味性的问题如何?";
		// 调用 ChatGPTAPI 工具类生成答案
		String answer = ChatGPTAPI.generateAnswer(question, systemRole);

		// 打印答案
		System.out.println("Question: " + question);
		System.out.println("Answer: " + answer);
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java调用chatGpt API接口代码实操 的相关文章

随机推荐

  • 35岁被大厂踢出豪门,褪去这层皮你还剩什么

    很多人 他们在大厂里边混得很好 他们大厂里边这个位置很高 但是突然有一天 晋升不上去了 领导空降了 项目解散了 某一个东西调岗了 给他打击很大准备跳槽 别到那一天 xff0c 这是一个常态 这个忽然有一天 xff0c 这件事情是你在大厂里边
  • 【密码学课程设计】HBU-paperOline 2020-06-06

    HBU paperOline 项目介绍 HBU paperOline 项目是基于SpringBoot2的一整套后端管理平台 xff0c 提供整套公共微服务服务模块 xff1a 集中权限管理 xff08 单点登录 xff09 内容管理 人事办
  • 一个并不极简的人做的极简清单【2021 年终总结】

    文章目录 很久没更文 不是自闭就是懒 极简生活 物品清单 软件清单 消费主义洗了脑 淘汰了一些设备 新的一年 一定要极简了 很久没更文 不是自闭就是懒 很长时间没有更文 的确是没有像以前那样可以做到 日更或者周更 还有一部分原因是我的确写了
  • 一个实习生的经验总结,3次实习4个坑,全是经验

    一个实习生的经验总结 xff0c 3次实习4个坑 xff0c 全是经验 文章目录 一个实习生的经验总结 xff0c 3次实习4个坑 xff0c 全是经验职业发展刚毕业就职业危机站在风口前等风来尽早做足准备实习很重要 xff0c 但是不行尽快
  • 拖更的这段日子+这并不友好的环境+不能再犯懒了

    拖更的这段日子 43 这并不友好的环境 43 不能再犯懒了 我很懒 我一直在拖更 停更了有一段时间 一直没有机会再打开电脑去记录这些事情 如果非要说一个原因的话那便是懒 去年的这个时期可以保持日更文章的时候 是因为 每天早上 六点就会从床上
  • 我的2021年度书单(主要教你面试怎么装B)

    我的2021年度书单 xff08 主要教你面试怎么装B xff09 文章目录 我的2021年度书单 xff08 主要教你面试怎么装B xff09 技术之内 数据密集型应用系统设计 数据结构与算法之美 大型网站技术架构 凤凰架构 凤凰项目 计
  • 毕业半年年终总结

    毕业半年年终总结 如果说2021年主要的内容是求职和实习 那么2022年一年主要的内容便是毕业和工作 匆匆忙忙 本科毕业了 6月份的时候参加完毕业答辩 xff0c 也就顺利的毕业了 实际上中途也有过一些插曲 xff0c 比如毕业设计是制作某
  • 221228代码屎山看法

    今天逛v站有人在提问 公司的项目代码太恶心了怎么办 xff1f 这的确是一个 老生常谈的问题 刚好今天上午也有同事在抱怨和吐槽历史的代码各种不合理 xff0c 维护起来极其的恶心 论坛里有人提出了 你不能用现在的标准去衡量以前的产出 的观点
  • 我不看好web3.0 但是或许 我就像十六年前不看好 web2.0那批人一样?

    我不看好web3 0 但是或许 我就像十六年前不看好 web2 0那批人一样 xff1f 最近一直被推荐系统刷到 web3 0 的话题 说实话我对 web3 0 目前基本上也是完全不了解 xff0c 主观的偏见还是认为 xff0c 脱离了中
  • 2022最后一天盘点

    今天是今年最后的一天工作日 xff0c 对于我来说就是今年的最后一天 xff0c 因为放假了我就不需要思考了 xff08 当然公司后端程序员要保持24小时oncall xff09 1 阳完之后 还是有些 咳嗽 xff0c 公司此起彼伏的咳嗽
  • VSCode如何快速搭建C/C++环境

    1 前言 说明下如何在VSCode下面搭建C C 43 43 环境以及运行 2 下载 点击该链接 xff0c 进行ming64安装包下载 xff1a VSCode安装请自行百度 xff0c 这里不在赘述 3 安装 1 将下载完成后的安装包
  • 编程思想图书推荐,新手入门应该看些啥

    编程思想图书推荐 xff0c 新手入门应该看些啥 导入 元旦的时候 xff0c 学校社团的指导老师 xff0c 咨询我有没有什么可以推荐的编程思想的学习书籍 xff0c 可以值得推荐精读 说实话 xff0c 我个人是买过很多书的 xff0c
  • 阿里云故障有感

    2304阿里云故障有感 为什么会写一个如此奇怪的议题 人的生活轨迹 xff0c 不一定只有唯一的叙事方式 xff0c 可以不那么苦 xff0c 不那么累 xff0c 不那么怕 xff0c 不那么憋屈 不再去追求宏大的叙事 xff0c 而是去
  • 轨迹预处理(轨迹清洗)-卡尔曼滤波、扩展的卡尔曼滤波、粒子滤波在轨迹清洗中的应用

    1 卡尔曼滤波 扩展的卡尔曼滤波 粒子滤波的理论与应用 GPS是全球卫星定位系统 xff0c 可以帮助我们获得经纬度坐标 GPS在汽车上的广泛装备与应用 xff0c 可以很方便地帮助我们获得海量的汽车轨迹信息 然而 xff0c GPS设备有
  • [安装配置] TX2上利用Kinect v1录制'TUM'数据集

    环境设置 安装驱动 span class token function sudo span span class token function apt get span span class token function install s
  • 麻将的胡牌算法

    正常的麻将胡牌方式为满足N ABC 43 M DDD 43 xff25 xff25 的形式 xff0c 及存在一个对子 EE xff0c 剩余牌均能组成顺子 xff08 ABC xff09 或者刻子 xff08 DDD xff09 很容易发
  • Detected problems with API compatibility(visit g.co/dev/appcompat for more info

    项目中 xff0c 用户在Android P 手机上报过来一个问题 xff0c 如下 xff1a 调研了一下 xff0c 是 Android P 后谷歌限制了开发者调用非官方公开API 方法或接口 xff0c 也就是说 xff0c 你用反射
  • 树莓派4b一个按钮控制开关机

    1 仔细阅读 boot overlays README 文档 里面说明很详细 2 摘录关于电源控制部分 Name nbsp gpio shutdown Info nbsp Initiates a shutdown when GPIO pin
  • Java编写的查找一个字符串在另一个字符串中出现的次数

    span class token keyword public span span class token keyword static span span class token keyword int span span class t
  • java调用chatGpt API接口代码实操

    话不多说 xff0c 直接上代码 span class token keyword import span span class token namespace java span class token punctuation span