
使用Scala Play框架構(gòu)建REST API
在 2025 年的今天,“大模型” 已經(jīng)不再是噱頭,而是基礎(chǔ)設(shè)施。
傳統(tǒng)方案要么慢(人工)、要么貴(人工)、要么笨(規(guī)則引擎)。
而 Claude 4.1 Opus 給出了一條新路徑:
export ANTHROPIC_API_KEY=sk-ant-你的真實(shí)key
<dependency>
<groupId>com.anthropic</groupId>
<artifactId>anthropic-java</artifactId>
<version>2.1.0-beta</version>
</dependency>
新建 ClaudeHello.java
:
import com.anthropic.client.AnthropicClient;
import com.anthropic.models.MessageCreateParams;
public class ClaudeHello {
public static void main(String[] args) {
var client = AnthropicClient.create(System.getenv("ANTHROPIC_API_KEY"));
var params = MessageCreateParams.builder()
.model("claude-opus-4-1-20250805")
.maxTokens(512)
.addUserMessage("用三句話解釋什么是量子糾纏")
.build();
var response = client.messages().create(params);
System.out.println(response.content().get(0).text());
}
}
運(yùn)行:
mvn compile exec:java -Dexec.mainClass=ClaudeHello
終端輸出:
量子糾纏是粒子間的一種神秘關(guān)聯(lián):無(wú)論相隔多遠(yuǎn),一個(gè)粒子的狀態(tài)變化會(huì)瞬間影響另一個(gè)。
愛(ài)因斯坦稱(chēng)之為“鬼魅般的超距作用”。
它不僅是量子計(jì)算和量子通信的核心資源,也挑戰(zhàn)了我們對(duì)局域?qū)嵲谛缘闹庇X(jué)。
恭喜你,第一次調(diào)用成功!
需求:
代碼:
var diff = Files.readString(Path.of("pr.diff"));
var params = MessageCreateParams.builder()
.model("claude-opus-4-1-20250805")
.maxTokens(4000)
.system("你是一名資深 Java 架構(gòu)師,擅長(zhǎng)性能優(yōu)化與并發(fā)編程。")
.addUserMessage("請(qǐng)按 Markdown 表格格式審核以下 diff:\n``diff\n%s\n
``".formatted(diff))
.build();
var review = client.messages().create(params);
System.out.println(review.content().get(0).text());
輸出片段:
行號(hào) | 問(wèn)題描述 | 建議 |
---|---|---|
127 | 未關(guān)閉資源 | try-with-resources |
301 | 線程池未命名 | 使用 ThreadFactory |
需求:
步驟 1:定義 Function
record GetPriceReq(String symbol) {}
record GetPriceRes(double price, String currency) {}
var tool = ToolDefinition.builder()
.name("get_price")
.description("獲取加密貨幣最新價(jià)格")
.inputSchema(GetPriceReq.class)
.build();
步驟 2:調(diào)用流程
var params = MessageCreateParams.builder()
.model("claude-opus-4-1-20250805")
.maxTokens(512)
.tools(List.of(tool))
.addUserMessage("BTC 現(xiàn)在價(jià)格是多少?")
.build();
var response = client.messages().create(params);
// 如果返回 tool_calls,本地執(zhí)行后再次調(diào)用
原文:《三體》三部曲全文約 60 萬(wàn)字
需求:
var novel = Files.readString(Path.of("threebody.txt"));
var params = MessageCreateParams.builder()
.model("claude-opus-4-1-20250805")
.maxTokens(8000)
.system("你是劉慈欣,請(qǐng)繼續(xù)《三體》故事,保持硬科幻風(fēng)格。")
.addUserMessage("請(qǐng)續(xù)寫(xiě)第 4 部第一章,約 3000 字:\n" + novel)
.build();
Spring Boot 端點(diǎn):
@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> chat(@RequestParam String q) {
return Flux.create(sink -> {
var stream = client.messages().createStreaming(
MessageCreateParams.builder()
.model("claude-opus-4-1-20250805")
.maxTokens(1024)
.addUserMessage(q)
.build()
);
stream.forEach(chunk -> {
if (chunk.type() == MessageStreamEventType.CONTENT_DELTA) {
sink.next(chunk.delta().text());
}
});
sink.complete();
});
}
前端 10 行 JavaScript:
const es = new EventSource("/chat?q=講個(gè)笑話");
es.onmessage = e => document.body.insertAdjacentHTML("beforeend", e.data);
并發(fā) | 平均首 token 延遲 | 成功率 | 成本(每百萬(wàn) in/out token) |
---|---|---|---|
1 | 180 ms | 100 % | $15 / $75 |
10 | 190 ms | 100 % | $15 / $75 |
100 | 220 ms | 99.9 % | $15 / $75 |
1000 | 320 ms | 99.7 % | $15 / $75 |
測(cè)試環(huán)境:AWS c7g.4xlarge(Arm),JDK 21,Reactor Netty。
結(jié)論:Java 異步非阻塞 + Claude 流式接口,單實(shí)例可穩(wěn)定支撐 1000 并發(fā)。
語(yǔ)義緩存
用 Weaviate 存儲(chǔ)問(wèn)答對(duì),命中率 60 % → 成本再降一半。
Prometheus 指標(biāo)
claude_total_tokens_total{model="opus"} 1.2e+06
claude_latency_seconds_bucket{le="0.2"} 0.95
灰度發(fā)布
通過(guò) Spring Cloud Gateway 按用戶(hù) ID 分 10 % 流量到新模型。
已為你準(zhǔn)備好 Spring Boot + Claude 4.1 完整 Demo:
git clone https://github.com/yourname/claude-opus-java-demo.git
cd claude-opus-java-demo
./mvnw spring-boot:run
倉(cāng)庫(kù)包含:
從 單句問(wèn)候 到 百萬(wàn)并發(fā),從 代碼審查 到 小說(shuō)續(xù)寫(xiě),Claude 4.1 Opus 讓 Java 工程師第一次擁有了 “全棧 AI 超能力”。
當(dāng)你下一次面對(duì)需求文檔里“加個(gè) AI 對(duì)話”四個(gè)字,不妨先打開(kāi)這個(gè)倉(cāng)庫(kù),跑一遍 ./mvnw spring-boot:run
,把時(shí)間留給更有創(chuàng)造力的工作。
未來(lái)已來(lái),只是分布不均。
現(xiàn)在,把不均抹平。
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)