Perplexity API
本文档详细介绍了如何使用 Perplexity API 进行聊天完成请求,并提供了 Java 示例代码,帮助开发者快速集成该 API。
概述
Perplexity API 提供了强大的搜索 和 推理 生成能力。本文将展示如何构建请求、解析响应以及在 Java 项目中调用 Perplexity API。
请求示例
以下是使用 curl 命令向 Perplexity API 发送请求的示例:
curl --request POST \
--url https://api.perplexity.ai/chat/completions \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"content": "When is the last day of the Spring 2025 semester at Kapiolani Community College?",
"role": "user"
}
],
"model": "llama-3.1-sonar-large-128k-online"
}'
请求参数说明
- Authorization: 替换
YOUR_API_KEY为您的 Perplexity API 密钥。 - Content-Type: 固定为
application/json。 - messages: 聊天消息数组,每条消息包含
content(内容)和role(角色,通常为user或assistant)。 - model: 指定使用的模型,如
llama-3.1-sonar-large-128k-online。
请求数据结构
以下是请求数据的 JSON 结构示例:
{
"model": "llama-3.1-sonar-large-128k-online",
"messages": [
{
"content": "When is the last day of the Spring 2025 semester at Kapiolani Community College?",
"role": "user"
}
]
}
字段说明
- model: 使用的语言模型。
- messages: 聊天消息数组,包含用户和助手的对话内容。
响应数据结构
成功的响应数据结构如下:
{
"id": "b81218d9-17ba-447d-9a3d-0982104933c1",
"model": "llama-3.1-sonar-large-128k-online",
"created": 1732857164,
"usage": {
"prompt_tokens": 20,
"completion_tokens": 33,
"total_tokens": 53
},
"citations": [
"https://www.monroecc.edu/etsdbs/MCCatPub.nsf/academic+calendar+lookup/2025-Spring-Semester?OpenDocument",
"https://www.kapiolani.hawaii.edu/classes/academic-calendar/",
"https://kellogg.edu/about/academic-calendar/",
"https://www.kapiolani.hawaii.edu/classes/",
"https://www.kapiolani.hawaii.edu/admissions/application-deadlines/"
],
"object": "chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The last day of the Spring 2025 semester at Kapi'olani Community College is Friday, May 16, 2025[2][4]."
},
"delta": {
"role": "assistant",
"content": ""
}
}
]
}
字段说明
- id: 唯一的响应标识符。
- model: 使用的模型名称。
- created: 响应创建的时间戳。
- usage: 令牌使用情况,包括提示令牌、完成令牌和总令牌数。
- citations: 相关引用链接。
- object: 响应对象类型,通常为
chat.completion。 - choices: 生成的回答选项数组,每个选项包含回答内容及相关信息。
参考链接
Java 调用 Perplexity API
配置 PERPLEXITY_API_KEY 和账号可用的 PERPLEXITY_MODEL。上文请求与响应中的模型名称是历史示例,实际调用以平台当前可用模型为准。
以下是使用 Java 调用 Perplexity API 的示例代码,展示了如何构建请求、发送 HTTP 请求并解析响应。
依赖库
确保您的项目中包含以下依赖库:
- OkHttp: 用于发送 HTTP 请求。
- Lombok: 简化 Java 类的编写。
- JSON 解析库: 如 tio-json。
- java-openai:提供请求、响应模型和 HTTP 客户端。
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>nexus.io</groupId>
<artifactId>java-openai</artifactId>
<version>${java-openai.version}</version>
</dependency>
示例代码
请求与响应类型由 java-openai 提供,无需在业务项目中重新定义。依赖版本由项目依赖管理统一配置。
调用代码
package nexus.io.llm.service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import nexus.io.openai.chat.OpenAiChatMessage;
import nexus.io.openai.chat.OpenAiChatResponse;
import nexus.io.openai.chat.OpenAiChatRequest;
import nexus.io.openai.client.OpenAiClient;
import nexus.io.tio.utils.environment.EnvUtils;
import nexus.io.tio.utils.json.JsonUtils;
import okhttp3.Response;
public class PerplexityTest {
@Test
public void testAsk() {
// 加载环境变量
EnvUtils.load();
String apiKey = EnvUtils.get("PERPLEXITY_API_KEY");
String apiPrefixUrl = "https://api.perplexity.ai";
// 构建请求对象
OpenAiChatRequest chatRequestVo = new OpenAiChatRequest();
List<OpenAiChatMessage> messages = new ArrayList<>();
messages.add(new OpenAiChatMessage("user", "When is the last day of the Spring 2025 semester at Kapiolani Community College?"));
chatRequestVo.setModel(EnvUtils.get("PERPLEXITY_MODEL"))
.setStream(false)
.setMessages(messages);
String jsonRequest = JsonUtils.toJson(chatRequestVo);
// 发送请求并处理响应
try (Response response = OpenAiClient.chatCompletions(apiPrefixUrl, apiKey, jsonRequest)) {
String responseBody = response.body().string();
if (!response.isSuccessful()) {
throw new IllegalStateException("请求失败: " + response.code() + " " + responseBody);
}
OpenAiChatResponse chatResponse = JsonUtils.parse(responseBody, OpenAiChatResponse.class);
System.out.println(JsonUtils.toJson(chatResponse));
} catch (IOException e) {
throw new IllegalStateException("读取响应失败", e);
}
}
}
代码说明
- 环境变量加载: 使用
EnvUtils加载环境变量,获取PERPLEXITY_API_KEY。 - 构建请求对象: 创建
OpenAiChatRequest对象,设置模型、消息内容和其他参数。 - 发送 HTTP 请求: 使用
OpenAiClient发送 POST 请求至 Perplexity API。 - 处理响应:
- 如果请求成功,解析响应体并输出。
- 如果请求失败,输出错误信息。
数据类
使用库提供的 OpenAiChatRequest、OpenAiChatMessage 和 OpenAiChatResponse。平台扩展字段以实际返回 JSON 为准,需要保留原始响应时读取 response.body().string()。
总结
本文档介绍了如何使用 Perplexity API 进行聊天完成请求,包括 curl 请求示例、请求与响应数据结构说明以及 Java 调用示例。通过这些内容,开发者可以快速上手并集成 Perplexity API 到自己的应用中。
如需更多信息,请参考 Perplexity API 官方文档。
