Java接入文心一言 连续对话
一、背景简介
文心一言是一款提供随机句子获取的API服务,用户可以通过接口获取一句随机的励志、哲理、诗词等句子。而Java是一种广泛使用的编程语言,因其跨平台和高性能的特点,被广泛应用于Web开发、移动应用开发等领域。本文将介绍如何使用Java语言接入文心一言API,并展示一些示例代码。
二、接入文心一言API
为了使用文心一言API,我们首先需要获取API的请求地址和访问密钥。在官方网站上获取到个人密钥后,我们可以通过以下步骤实现Java对接。
2.1 导入依赖
我们可以使用Java的依赖管理工具(如Maven或Gradle)导入相关的库。
<!-- Apache HttpClient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<!-- JSON Processing API -->
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1.4</version>
</dependency>
<!-- JSON Processing RI -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
2.2 发起请求
使用Apache HttpClient库来发送HTTP请求,并解析返回的JSON数据。
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.IOException;
import java.io.StringReader;
public class WenxinYiyanClient {
private static final String API_URL = "
public static void main(String[] args) {
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet(API_URL);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity);
JsonReader reader = Json.createReader(new StringReader(responseString));
JsonObject jsonObject = reader.readObject();
String hitokoto = jsonObject.getString("hitokoto");
System.out.println(hitokoto);
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码通过发送GET请求到文心一言API地址,并解析返回的JSON数据,提取出其中的句子信息。在实际使用中,我们可以将此代码封装为一个可复用的方法,方便在其他地方调用。
三、代码示例
接下来,我们给出一些示例代码,展示如何在Java中使用文心一言API。
3.1 获取随机句子
下面的代码片段展示了如何获取一条随机的句子,并输出到控制台。
public class WenxinYiyanClient {
// ...
public static String getRandomSentence() {
String sentence = "";
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet(API_URL);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity);
JsonReader reader = Json.createReader(new StringReader(responseString));
JsonObject jsonObject = reader.readObject();
sentence = jsonObject.getString("hitokoto");
} catch (IOException e) {
e.printStackTrace();
}
return sentence;
}
public static void main(String[] args) {
String sentence = getRandomSentence();
System.out.println(sentence);
}
}
3.2 获取指定分类的句子
文心一言API支持根据分类获取句子,我们可以通过在请求URL中指定不同的参数来获取不同类型的句子。
public class WenxinYiyanClient {
// ...
public static String getSentenceByCategory(String category) {
String sentence = "";
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet(API_URL + "&c=" + category);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity