Class MessageConverter
This converter handles the translation between ADK's Content/Part and LlmRequest/LlmResponse formats and Spring AI's Message and Prompt/ChatResponse formats.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetToolRegistry(LlmRequest llmRequest) Gets tool registry from ADK tools for internal tracking.com.google.genai.types.ContenttoAdkContent(org.springframework.ai.chat.messages.Message message) Converts a Spring AIMessageto an ADKContent.org.springframework.ai.chat.model.ChatResponsetoChatResponse(@Nullable LlmResponse llmResponse) Converts an ADKLlmResponseto a Spring AIChatResponse.org.springframework.ai.chat.prompt.PrompttoLlmPrompt(LlmRequest llmRequest) Converts an ADK LlmRequest to a Spring AI Prompt.org.springframework.ai.chat.prompt.PrompttoLlmPrompt(LlmRequest llmRequest, @Nullable org.springframework.ai.chat.prompt.ChatOptions modelDefaultOptions) Converts an ADK LlmRequest to a Spring AI Prompt, using the target model's own default options as the base for the prompt options.toLlmRequest(org.springframework.ai.chat.prompt.Prompt prompt) Converts a Spring AIPromptto an ADKLlmRequest.toLlmResponse(@Nullable org.springframework.ai.chat.model.ChatResponse chatResponse) Converts a Spring AI ChatResponse to an ADK LlmResponse.toLlmResponse(@Nullable org.springframework.ai.chat.model.ChatResponse chatResponse, boolean isStreaming) Converts a Spring AI ChatResponse to an ADK LlmResponse with streaming context.com.google.common.collect.ImmutableList<org.springframework.ai.chat.messages.Message>toSpringAiMessages(com.google.genai.types.Content content) Converts an ADKContentto one or more Spring AIMessages.
-
Constructor Details
-
MessageConverter
public MessageConverter(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
-
-
Method Details
-
toLlmPrompt
Converts an ADK LlmRequest to a Spring AI Prompt.- Parameters:
llmRequest- The ADK request to convert- Returns:
- A Spring AI Prompt
-
toLlmPrompt
public org.springframework.ai.chat.prompt.Prompt toLlmPrompt(LlmRequest llmRequest, @Nullable org.springframework.ai.chat.prompt.ChatOptions modelDefaultOptions) Converts an ADK LlmRequest to a Spring AI Prompt, using the target model's own default options as the base for the prompt options.Provider-specific chat models (for example Spring AI OpenAI
2.0.0) castPrompt.getOptions()directly to their own options type (e.g.OpenAiChatOptions) increateRequest(...). Passing provider-neutral options such asDefaultToolCallingChatOptionstherefore triggers aClassCastException. To stay compatible with any provider, the prompt options are built on top of the model's own default options (obtained viaChatModel.getOptions()) so the resulting options keep the concrete type the provider expects, while overlaying the ADK tools and generation config.- Parameters:
llmRequest- The ADK request to convertmodelDefaultOptions- The target model's default options, ornullif unavailable- Returns:
- A Spring AI Prompt
-
toLlmRequest
Converts a Spring AIPromptto an ADKLlmRequest.System messages are extracted into the request's system instructions, non-system messages are converted to
Contentturns, andPrompt.getOptions()is mapped toGenerateContentConfig, model name, and ADK tools.- Parameters:
prompt- The Spring AI prompt to convert- Returns:
- An ADK
LlmRequest
-
toSpringAiMessages
public com.google.common.collect.ImmutableList<org.springframework.ai.chat.messages.Message> toSpringAiMessages(com.google.genai.types.Content content) Converts an ADKContentto one or more Spring AIMessages.- Parameters:
content- The ADK content to convert- Returns:
- An immutable list of Spring AI messages
-
toAdkContent
public com.google.genai.types.Content toAdkContent(org.springframework.ai.chat.messages.Message message) Converts a Spring AIMessageto an ADKContent.- Parameters:
message- The Spring AI message to convert- Returns:
- The converted ADK
Content
-
toLlmResponse
public LlmResponse toLlmResponse(@Nullable org.springframework.ai.chat.model.ChatResponse chatResponse) Converts a Spring AI ChatResponse to an ADK LlmResponse.- Parameters:
chatResponse- The Spring AI response to convert- Returns:
- An ADK LlmResponse
-
toLlmResponse
public LlmResponse toLlmResponse(@Nullable org.springframework.ai.chat.model.ChatResponse chatResponse, boolean isStreaming) Converts a Spring AI ChatResponse to an ADK LlmResponse with streaming context.- Parameters:
chatResponse- The Spring AI response to convertisStreaming- Whether this is part of a streaming response- Returns:
- An ADK LlmResponse
-
toChatResponse
public org.springframework.ai.chat.model.ChatResponse toChatResponse(@Nullable LlmResponse llmResponse) Converts an ADKLlmResponseto a Spring AIChatResponse.- Parameters:
llmResponse- The ADK response to convert- Returns:
- A Spring AI
ChatResponse
-
getToolRegistry
Gets tool registry from ADK tools for internal tracking.- Parameters:
llmRequest- The ADK request containing tools- Returns:
- Map of tool metadata for tracking available tools
-