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
以下是使用 Java 调用 Perplexity API 的示例代码,展示了如何构建请求、发送 HTTP 请求并解析响应。
依赖库
确保您的项目中包含以下依赖库:
- OkHttp: 用于发送 HTTP 请求。
- Lombok: 简化 Java 类的编写。
- JSON 解析库: 如 tio-json。
- openap 库: 如 java-opanai。
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>com.litongjava</groupId>
<artifactId>tio-utils</artifactId>
<version>3.7.3.v20241015-RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.litongjava</groupId>
<artifactId>java-openai</artifactId>
<version>${java.java-openai}</version>
</dependency>
示例代码
请求类
package com.litongjava.openai.chat;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ChatResponseVo {
private String id;
private String object;
private Long created;
private String model;
private String system_fingerprint;
private List<Choice> choices;
private ChatResponseUsage usage;
private List<String> citations;
}
调用代码
package com.litongjava.llm.service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.litongjava.openai.chat.ChatMessage;
import com.litongjava.openai.chat.ChatResponseVo;
import com.litongjava.openai.chat.OpenAiChatRequestVo;
import com.litongjava.openai.client.OpenAiClient;
import com.litongjava.tio.utils.environment.EnvUtils;
import com.litongjava.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";
// 构建请求对象
OpenAiChatRequestVo chatRequestVo = new OpenAiChatRequestVo();
List<ChatMessage> messages = new ArrayList<>();
messages.add(new ChatMessage("user", "When is the last day of the Spring 2025 semester at Kapiolani Community College?"));
chatRequestVo.setModel("llama-3.1-sonar-large-128k-online")
.setStream(false)
.setMessages(messages);
String jsonRequest = JsonUtils.toJson(chatRequestVo);
// 发送请求并处理响应
try (Response response = OpenAiClient.chatCompletions(apiPrefixUrl, apiKey, jsonRequest)) {
if (response.isSuccessful()) {
try {
String responseBody = response.body().string();
ChatResponseVo chatResponse = JsonUtils.parse(responseBody, ChatResponseVo.class);
System.out.println(JsonUtils.toJson(chatResponse));
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
System.err.println("请求失败: " + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码说明
- 环境变量加载: 使用
EnvUtils
加载环境变量,获取PERPLEXITY_API_KEY
。 - 构建请求对象: 创建
OpenAiChatRequestVo
对象,设置模型、消息内容和其他参数。 - 发送 HTTP 请求: 使用
OpenAiClient
发送 POST 请求至 Perplexity API。 - 处理响应:
- 如果请求成功,解析响应体并输出。
- 如果请求失败,输出错误信息。
数据类定义
确保定义了与 API 响应对应的数据类,如 ChatResponseVo
、Choice
、Message
、Delta
和 ChatResponseUsage
。这些类使用 Lombok 注解简化代码。
总结
本文档介绍了如何使用 Perplexity API 进行聊天完成请求,包括 curl
请求示例、请求与响应数据结构说明以及 Java 调用示例。通过这些内容,开发者可以快速上手并集成 Perplexity API 到自己的应用中。
如需更多信息,请参考 Perplexity API 官方文档。