org.springframework.ai
  spring-ai-azure-openai-spring-boot-starter


Em essência, quando o Spring verifica o projeto em busca de um ChatClient, ele usará a propriedade para criar um usando convenções de nomenclatura no openai projeto inicial. No simples helloworld exemplo que estamos vendo, que ChatClient é chamado pelo controlador:


package com.xkcd.ai.helloworld;

import org.springframework.ai.chat.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
public class SimpleAiController {

	private final ChatClient chatClient;

	@Autowired
	public SimpleAiController(ChatClient chatClient) {
		this.chatClient = chatClient;
	}

	@GetMapping("/ai/simple")
	public MapString,  generation(
			@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
		return Map.of("generation", chatClient.call(message));
	}

}

Este é um controlador Spring REST típico, onde o chatClient membro é um método anotado como @Autowired. Esse ChatClient é então usado para lidar com as solicitações em /ai/simple. (Os padrões dos parâmetros de solicitação são fornecidos no método, portanto, uma solicitação sem parâmetros será definida como “Conte-me uma piada”.) O método endpoint retorna um mapa com uma chave de “geração” cujo valor é o valor de retorno de chatClient.call(message).

Para que tudo isso funcione, você precisa de uma chave API para Azure. A chave é definida como uma variável de ambiente: