Package org.springframework.ai.anthropic
Class AnthropicChatModel
java.lang.Object
org.springframework.ai.anthropic.AnthropicChatModel
- All Implemented Interfaces:
ChatModel,StreamingChatModel,Model<Prompt,,ChatResponse> StreamingModel<Prompt,ChatResponse>
ChatModel and StreamingChatModel implementation using the official
Anthropic Java SDK.
Supports synchronous and streaming completions, tool calling, and Micrometer-based
observability. API credentials are auto-detected from ANTHROPIC_API_KEY if not
configured.
- Since:
- 1.0.0
- Author:
- Christian Tzolov, luocongqiu, Mariusz Bernacki, Thomas Vitale, Claudio Silva Junior, Alexandros Pappas, Jonghoon Park, Soby Chacko, Austin Dase
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classBuilder for creatingAnthropicChatModelinstances. -
Method Summary
Modifier and TypeMethodDescriptionstatic AnthropicChatModel.Builderbuilder()Creates a new builder forAnthropicChatModel.Executes a method call to the AI model.com.anthropic.client.AnthropicClientReturns the underlying synchronous Anthropic SDK client.com.anthropic.client.AnthropicClientAsyncReturns the underlying asynchronous Anthropic SDK client.Gets the chat options for this model.internalCall(Prompt prompt, @Nullable ChatResponse previousChatResponse) Internal method to handle synchronous chat completion calls with tool execution support.reactor.core.publisher.Flux<ChatResponse> internalStream(Prompt prompt, @Nullable ChatResponse previousChatResponse) Internal method to handle streaming chat completion calls with tool execution support.voidsetObservationConvention(ChatModelObservationConvention observationConvention) Use the provided convention for reporting observation data.reactor.core.publisher.Flux<ChatResponse> Executes a method call to the AI model.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.ai.chat.model.StreamingChatModel
stream, stream
-
Method Details
-
builder
Creates a new builder forAnthropicChatModel.- Returns:
- a new builder instance
-
getOptions
Gets the chat options for this model.- Returns:
- the chat options
-
getAnthropicClient
public com.anthropic.client.AnthropicClient getAnthropicClient()Returns the underlying synchronous Anthropic SDK client. Useful for accessing SDK features directly, such as the Files API (client.beta().files()).- Returns:
- the sync client
-
getAnthropicClientAsync
public com.anthropic.client.AnthropicClientAsync getAnthropicClientAsync()Returns the underlying asynchronous Anthropic SDK client. Useful for non-blocking access to SDK features directly, such as the Files API.- Returns:
- the async client
-
call
Description copied from interface:ModelExecutes a method call to the AI model. -
stream
Description copied from interface:StreamingModelExecutes a method call to the AI model.- Specified by:
streamin interfaceChatModel- Specified by:
streamin interfaceStreamingChatModel- Specified by:
streamin interfaceStreamingModel<Prompt,ChatResponse> - Parameters:
prompt- the request object to be sent to the AI model- Returns:
- the streaming response from the AI model
-
internalStream
public reactor.core.publisher.Flux<ChatResponse> internalStream(Prompt prompt, @Nullable ChatResponse previousChatResponse) Internal method to handle streaming chat completion calls with tool execution support. This method is called recursively to support multi-turn tool calling.- Parameters:
prompt- The prompt for the chat completion. In a recursive tool-call scenario, this prompt will contain the full conversation history including the tool results.previousChatResponse- The chat response from the preceding API call. This is used to accumulate token usage correctly across multiple API calls in a single user turn.- Returns:
- A
FluxofChatResponseevents, which can include text chunks and the final response with tool call information or the model's final answer.
-
internalCall
Internal method to handle synchronous chat completion calls with tool execution support. This method is called recursively to support multi-turn tool calling.- Parameters:
prompt- The prompt for the chat completion. In a recursive tool-call scenario, this prompt will contain the full conversation history including the tool results.previousChatResponse- The chat response from the preceding API call. This is used to accumulate token usage correctly across multiple API calls in a single user turn.- Returns:
- The final
ChatResponseafter all tool calls (if any) are resolved.
-
getDefaultOptions
- Specified by:
getDefaultOptionsin interfaceChatModel
-
setObservationConvention
Use the provided convention for reporting observation data.- Parameters:
observationConvention- the provided convention
-