在 Java 中构建您的第一个 AI 客户端(Cerebras AI)
Source: Dev.to

在本教程中,您将学习如何在 Java 中构建一个非常简单的 AI 聊天客户端。由于免费层和速度的原因,我们将在此使用 Cerebras AI。相同的原理同样适用于其他 AI 提供商,如 OpenAI(ChatGPT)、Claude 或 Gemini——只需调整 API 端点和模型名称。
更喜欢视频? 您可以在上方的 YouTube 上观看完整教程。
您需要的东西
- Java 11 或更高版本(我们将使用现代的
HttpClientAPI) - Cerebras AI API 密钥
- 您喜欢的 IDE 或文本编辑器
Step 1: 获取您的 Cerebras API 密钥
- 访问 Cerebras AI 网站 并注册账户。
- 前往 API 部分或开发者仪表板。
- 生成一个新的 API 密钥。
- 复制该密钥——在下一步中需要使用它。
⚠️ 安全提示: 保持您的 API 密钥机密,切勿将其提交到版本控制!
第2步:将 API 密钥设置为环境变量
将密钥存储在环境变量中可以避免将其写入源代码,并使程序更具可移植性。
在 Windows 上
SETX CEREBRAS_API_KEY "your-api-key-here"
将 your-api-key-here 替换为实际的密钥。
重新启动 IDE 或终端以使更改生效。
在 macOS / Linux 上
在 ~/.bashrc、~/.zshrc 或 ~/.bash_profile 中添加以下行:
export CEREBRAS_API_KEY="your-api-key-here"
然后重新加载配置:
source ~/.bashrc # or source ~/.zshrc
第3步:创建你的 Java 项目
创建一个名为 AIChat.java 的新文件,并粘贴下面的代码。
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class AIChat {
public static void main(String[] args) throws IOException, InterruptedException {
String apiKey = System.getenv("CEREBRAS_API_KEY");
String requestBody = """
{
"model": "llama3.1-8b",
"messages": [
{"role": "user", "content": "How to win a lotto?"}
],
"temperature": 0.2
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.cerebras.ai/v1/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
Source: …
理解代码
1. 读取 API 密钥
String apiKey = System.getenv("CEREBRAS_API_KEY");
从你之前设置的环境变量中获取密钥。
2. 构建请求体
String requestBody = """
{
"model": "llama3.1-8b",
"messages": [
{"role": "user", "content": "How to win a lotto?"}
],
"temperature": 0.2
}
""";
model– 要使用的 AI 模型(Cerebras 提供了多个 Llama 变体)。messages– 消息对象数组(包含role和content)。temperature– 控制随机性(0.0= 确定性,1.0= 创意性)。
3. 创建 HTTP 请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.cerebras.ai/v1/chat/completions"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + apiKey)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
设置端点、内容类型、授权头以及 JSON 负载。
4. 发送请求
HttpClient client = HttpClient.newHttpClient();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
创建 HTTP 客户端,发送请求,并打印原始 JSON 响应。
第4步:运行你的应用程序
javac AIChat.java
java AIChat
您应该会看到一个包含 AI 答案的 JSON 响应。
解析 JSON 响应
原始的 JSON 并不友好。下面是一种快速且简陋的方法,用于提取 AI 的消息。对于生产代码,建议使用像 Gson 或 Jackson 这样的正式 JSON 库。
// Add this method inside the AIChat class
private static String extractContent(String jsonResponse) {
int start = jsonResponse.indexOf("\"content\":\"") + 11;
int end = jsonResponse.indexOf("\"", start);
return jsonResponse.substring(start, end);
}
然后可以将最后的 System.out.println(response.body()); 替换为:
String content = extractContent(response.body());
System.out.println("AI says: " + content);
🎉 完成!
您现在拥有一个可以与 Cerebras AI(或任何兼容提供商)通信的最小 Java 客户端。欢迎扩展此程序——添加循环实现持续聊天、集成用户界面,或换用其他模型。祝编码愉快!
适配其他 AI 提供商
想使用不同的 AI 提供商?以下是需要更改的内容:
OpenAI (ChatGPT)
- Endpoint:
https://api.openai.com/v1/chat/completions - Model:
gpt-4或gpt-3.5-turbo - API‑Key 环境变量:
OPENAI_API_KEY
Anthropic (Claude)
- Endpoint:
https://api.anthropic.com/v1/messages - Model:
claude-sonnet-4-5-20250929 - Headers:
- 使用
x-api-key替代Authorization - 添加
anthropic-version: 2023-06-01
- 使用
Google (Gemini)
- Endpoint:
https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent - Note: 请求格式不同——详情请参阅 Google 的文档。
下一步
- 添加用户输入,使其交互式。
- 通过维护
messages数组实现会话历史。 - 为网络问题和 API 错误添加错误处理。
- 使用 Gson 或 Jackson 正确解析 JSON 响应。
- 创建命令行聊天界面。
- 尝试不同的模型和 temperature 参数设置。
结论
恭喜你——你已经成功用 Java 构建了第一个 AI 客户端! 🎉
这个简单示例演示了无论选择哪个 AI 提供商都要使用的核心概念。关键要点包括:
- 理解 HTTP 请求。
- 格式化 JSON 负载。
- 安全的 API 密钥管理。
祝编码愉快,尽情探索 AI 集成的世界吧!
关于作者
Deividas Strole – 位于加利福尼亚的全栈开发者,专注于 Java、Spring Boot、React 和 AI 驱动的开发。他撰写软件工程、现代全栈开发和数字营销策略方面的内容。
与我联系:
- 个人网站:
- LinkedIn:
- GitHub:
- YouTube:
- Academia:
- X(Twitter):
