使用ChatGPT API在Java中创建一个简单的AI聊天机器人。
什么是ChatGPT?
ChatGPT API
开发者可以使用OpenAI ChatGPT API接口以编程方式与ChatGPT模型进行通讯。这使得将ChatGPT的功能纳入各种程序、产品或服务成为可能。API使用户在互动讨论期间与模型之间进行多条消息交流成为可能。它为软件应用程序、聊天机器人、虚拟助手和其他交互式系统提供了使用ChatGPT自然语言处理功能的实用方法。
开始认识
使用ChatGPT API相当直截了当。要开始,您需要创建付费账户,并生成API秘钥,然后就可以开始了。要注册,请转到platform.openai.com并使用您的电子邮件注册,或使用Google或Apple ID登录。在用户菜单下,转到API秘钥页面,并创建一个新的API秘钥。
为了获得成功响应,您需要将账户升级为付费账户。如果没有升级,您将收到429错误消息,提醒您没有足够的信用来使用API。升级账户后,示例API调用将如下所示:
正如你看到的,我们使用的端点是一个带有JSON主体的POST Rest调用。请求将包含您想要使用的模型,提示,最大令牌数量和温度。
- 模型(必填):此字段包含将用于处理您的提示的模型。您可以查看模型文档页面以获取更多信息。
- 提示:一个字符串提示,将被模型处理并生成完成。
- max_tokens(最大标记数):此字段将代表响应中返回的标记的最大数量。如果您不知道“ token”在ChatGPT中的含义,请查看本页。
- 温度:该值指示采样温度,其介于0到2之间。较高的值(如0.8)会导致更随机的输出,而较低的值(如0.2)会导致更集中和确定性的输出。
在响应中,您将获得一些元数据,以及一个包含给定提示的完成响应的选择列表。您可以在API参考页面上找到更多详细信息。
在本文中,我们将使用一个简单的Maven Java应用程序来从控制台获取输入,并调用chatGPT API,将响应返回给控制台。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.cgpt</groupId>
<artifactId>ChatGPTJavaApplication</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
</dependencies>
</project>
我们只需要“json”依赖来帮助解析我们从API获取的响应。
public class ChatGPTMainClass {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(System.in);
System.out.println("Hi I am chatGPT. Ask me something!");
Boolean exit = false;
while( !exit ){
String input = scanner.nextLine();
if( "bye".equals( input.toLowerCase() ) ) {
System.out.println("Bye!");
exit = true;
break;
}
System.out.println( ChatGPTService.callChatGPT(input) );
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
这是我们项目的主要类,它简单地从用户那里逐行获取输入,并将其发送到提示字段中,以便提交给ChatGPT API进行处理。
public class ChatGPTService {
public static String callChatGPT(String input) throws Exception {
String apiUrl = "https://api.openai.com/v1/completions";
HttpURLConnection connection = (HttpURLConnection) new URL(apiUrl).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Authorization", "Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
JSONObject request = new JSONObject();
request.put("model", "text-davinci-003");
request.put("max_tokens", 500);
request.put("prompt", input);
request.put("temperature", 1.0);
connection.setDoOutput(true);
connection.getOutputStream().write(request.toString().getBytes());
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String response = reader.lines()
.reduce((a, b) -> a + b)
.get();
return new JSONObject(response).getJSONArray("choices").getJSONObject(0).getString("text");
}
}
我们的Service类有一个方法,该方法将获取一个字符串输入并调用ChatGPT API,然后将返回选项列表中的第一个对象作为响应。您需要将API Secret Key放入Authorization标头中作为Bearer令牌。现在,您可以启动您的应用并尝试与ChatGPT交流并提出不同的问题。