Dear Spring AI Team, I am reaching out to report an issue in Spring AI v1.0.0-M6 related to metadata loss when calling AdvisedRequest.toPrompt() inside an advisor method.

🔹 Problem Description: When retrieving the Prompt from AdvisedRequest using request.toPrompt(), a new message object is created, causing all previously set metadata (conversationId, userId, etc.) to be lost.

🔹 Steps to Reproduce: Setting Metadata in UserMessage

java Copy Edit Map metadata = new HashMap<>(); metadata.put("conversationId", conversationId); metadata.put("userId", userId);

UserMessage userMessage = new UserMessage(userQuery, Collections.emptyList(), metadata);

String answer = chatClient.prompt() .messages(List.of(userMessage)) .options(options) .call() .content(); Retrieving Metadata in Advisor (aroundCall method)

java Copy Edit @Override public AdvisedResponse aroundCall(AdvisedRequest request, CallAroundAdvisorChain chain) { Prompt prompt = request.toPrompt(); // This creates a new message object

// Attempt to retrieve metadata
Message lastMessage = prompt.getMessages().get(prompt.getMessages().size() - 1);

if (lastMessage instanceof UserMessage userMessage) {
    logger.debug("Message metadata: {}", userMessage.getMetadata()); // ❌ Always null
}

return chain.nextAroundCall(request);

} 🔹 Expected Behavior: UserMessage metadata should persist when calling request.toPrompt(). The metadata set in UserMessage should be retrievable in the advisor. 🔹 Actual Behavior: request.toPrompt() creates a new message object, losing all metadata. When retrieving UserMessage from prompt.getMessages(), getMetadata() always returns null. 🔹 Environment: Spring AI Version: 1.0.0-M6