package xx.xxxx.guidetouristiqueaveclangchain.gpt; import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.openai.OpenAiChatModel; import dev.langchain4j.service.AiServices; import jakarta.enterprise.context.RequestScoped; /** * Gère l'interface avec l'API OpenAI en utilisant LangChain4j. * Son rôle est essentiellement de lancer une requête à chaque nouvelle * question qu'on veut envoyer à l'API. */ @RequestScoped public class OpenAiClientForGuideTouristique implements java.io.Serializable { private GuideTouristique guideTouristique; public OpenAiClientForGuideTouristique() { String openAiKey = System.getenv("CHATGPT_KEY"); // Par défaut c'est le modèle "gpt-3.5-turbo" qui est utilisé. // Si on voulait utiliser, par exemple, le modèle "gpt-4.0-turbo", et fixer la température à 0.5 (par défaut 0.7), // OpenAiChatModel model = OpenAiChatModel.builder().apiKey(...).modelName("gpt-4.0-turbo").temperature(0.5).build(); ChatLanguageModel model = OpenAiChatModel.withApiKey(openAiKey); this.guideTouristique = AiServices.builder(GuideTouristique.class) .chatLanguageModel(model) .build(); } /** * Envoie une requête à l'API OpenAI. * @param villeOuPays nom d'une ville ou d'un pays. * @return réponse de l'API (voir interface GuideTouristique). */ public String envoyerRequete(String villeOuPays) { // Envoie la requête pour la question return guideTouristique.infosVilleOuPays(villeOuPays); } }