CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-ai--spring-ai-client-chat

Spring AI Chat Client provides a fluent API for building AI-powered applications with LLMs, supporting advisors, streaming, structured outputs, and conversation memory

Overview
Eval results
Files

quick-start.mddocs/guides/

Quick Start Guide

Get started with Spring AI Chat Client in minutes.

Installation

Add the dependency to your pom.xml:

<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-client-chat</artifactId>
  <version>1.1.2</version>
</dependency>

Important: Spring AI artifacts require special repository configuration:

<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
  <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

Step 1: Create a ChatClient

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;

// Obtain ChatModel from Spring context or create manually
ChatModel chatModel = // ... your ChatModel implementation

// Create ChatClient
ChatClient chatClient = ChatClient.create(chatModel);

Step 2: Make Your First Request

String response = chatClient
    .prompt("What is Spring Framework?")
    .call()
    .content();

System.out.println(response);

Step 3: Try Structured Output

record Summary(String title, String content, List<String> tags) {}

Summary summary = chatClient
    .prompt("Summarize: Spring Framework is a comprehensive framework...")
    .call()
    .entity(Summary.class);

System.out.println("Title: " + summary.title());

Step 4: Add Configuration

import org.springframework.ai.chat.options.ChatOptionsBuilder;

ChatClient client = ChatClient.builder(chatModel)
    .defaultSystem("You are a helpful Java programming assistant")
    .defaultOptions(ChatOptionsBuilder.builder()
        .withTemperature(0.7)
        .withMaxTokens(1000)
        .build())
    .build();

Step 5: Try Streaming

import reactor.core.publisher.Flux;

Flux<String> stream = chatClient
    .prompt("Tell me a story")
    .stream()
    .content();

// Print as content arrives
stream.subscribe(System.out::print);

Next Steps

  • Building Requests - Learn request configuration
  • Working with Advisors - Add interceptors
  • Conversation Memory - Multi-turn conversations
  • Tool Calling - Function calling with AI

Spring Boot Integration

With Spring Boot auto-configuration:

@Configuration
class ChatConfig {
    
    @Bean
    ChatClient chatClient(ChatClient.Builder builder) {
        return builder
            .defaultSystem("You are helpful")
            .build();
    }
}

@RestController
class ChatController {
    
    private final ChatClient chatClient;
    
    ChatController(ChatClient chatClient) {
        this.chatClient = chatClient;
    }
    
    @PostMapping("/chat")
    String chat(@RequestBody String message) {
        return chatClient.prompt(message).call().content();
    }
}

Common Patterns

Error Handling

try {
    String response = chatClient.prompt("Query").call().content();
} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
}

Null Safety

String content = chatClient.prompt("Query").call().content();
String safe = (content != null) ? content : "No response";

Reusing ChatClient

// GOOD: Create once, reuse many times
private final ChatClient chatClient = ChatClient.create(chatModel);

public String handleRequest(String query) {
    return chatClient.prompt(query).call().content();
}

Troubleshooting

Problem: NoSuchBeanDefinitionException for ChatModel

  • Solution: Ensure you have a ChatModel implementation dependency (e.g., spring-ai-openai)

Problem: Repository not found errors

  • Solution: Add Spring repositories to your pom.xml (see Installation section)

Problem: Null response content

  • Solution: Check ChatModel configuration and API credentials

See Reference Documentation for complete API details.

Install with Tessl CLI

npx tessl i tessl/maven-org-springframework-ai--spring-ai-client-chat

docs

index.md

tile.json