跳到主要内容

Anthropic

Maven 依赖

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-anthropic</artifactId>
<version>1.0.0-beta3</version>
</dependency>

AnthropicChatModel

AnthropicChatModel model = AnthropicChatModel.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.modelName(CLAUDE_3_5_SONNET_20240620)
.build();
String answer = model.chat("Say 'Hello World'");
System.out.println(answer);

自定义 AnthropicChatModel

AnthropicChatModel model = AnthropicChatModel.builder()
.baseUrl(...)
.apiKey(...)
.version(...)
.beta(...)
.modelName(...)
.temperature(...)
.topP(...)
.topK(...)
.maxTokens(...)
.stopSequences(...)
.cacheSystemMessages(...)
.cacheTools(...)
.thinkingType(...)
.thinkingBudgetTokens(...)
.timeout(...)
.maxRetries(...)
.logRequests(...)
.logResponses(...)
.build();

上述部分参数的描述可以在这里找到。

AnthropicStreamingChatModel

AnthropicStreamingChatModel model = AnthropicStreamingChatModel.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.modelName(CLAUDE_3_5_SONNET_20240620)
.build();

model.chat("Say 'Hello World'", new StreamingChatResponseHandler() {

@Override
public void onPartialResponse(String partialResponse) {
// 当有新的部分响应可用时调用此方法。它可以由一个或多个令牌组成。
}

@Override
public void onCompleteResponse(ChatResponse completeResponse) {
// 当模型完成响应时调用此方法
}

@Override
public void onError(Throwable error) {
// 当发生错误时调用此方法
}
});

自定义 AnthropicStreamingChatModel

AnthropicChatModel 相同,请参见上文。

工具

Anthropic 在流式和非流式模式下都支持工具

Anthropic 关于工具的文档可以在这里找到。

缓存

AnthropicChatModelAnthropicStreamingChatModel 支持系统消息和工具的缓存。 默认情况下,缓存是禁用的。 可以通过分别设置 cacheSystemMessagescacheTools 参数来启用它。

启用后,cache_control 块将分别添加到所有系统消息和工具中。

要使用缓存,请设置 beta("prompt-caching-2024-07-31")

AnthropicChatModelAnthropicStreamingChatModel 在响应中返回 AnthropicTokenUsage, 其中包含 cacheCreationInputTokenscacheReadInputTokens

有关缓存的更多信息可以在这里找到。

思考

AnthropicChatModelAnthropicStreamingChatModel思考功能有有限的支持。 可以通过设置 thinkingTypethinkingBudgetTokens 参数来启用它:

ChatLanguageModel model = AnthropicChatModel.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.modelName(CLAUDE_3_7_SONNET_20250219)
.thinkingType("enabled")
.thinkingBudgetTokens(1024)
.maxTokens(1024 + 100)
.logRequests(true)
.logResponses(true)
.build();

当前不支持的内容:

  • 无法从 LC4j API 获取思考内容。它只在日志中可见。
  • 在多轮对话(使用记忆)中,思考内容不会被保留
  • 等等

有关思考的更多信息可以在这里找到。

Quarkus

更多详情请参见这里

Spring Boot

导入 Anthropic 的 Spring Boot 启动器:

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-anthropic-spring-boot-starter</artifactId>
<version>1.0.0-beta3</version>
</dependency>

配置 AnthropicChatModel bean:

langchain4j.anthropic.chat-model.api-key = ${ANTHROPIC_API_KEY}

配置 AnthropicStreamingChatModel bean:

langchain4j.anthropic.streaming-chat-model.api-key = ${ANTHROPIC_API_KEY}

示例