Que fait langchain4j-tool-function-calling-patterns ?
Fournit et génère des patterns d'appels d'outils et de fonctions LangChain4j : annote des méthodes comme outils avec @Tool, configure des exécuteurs d'outils, enregistre des outils avec AiServices, valide les paramètres des outils et gère les erreurs d'exécution des outils. À utiliser lors de la création d'agents IA qui appellent des outils, définissent des spécifications de fonctions, gèrent les réponses des outils ou intègrent des API externes avec des applications pilotées par LLM.
Principales caractéristiques
- Annotation de méthodes avec
@Tool: Marque simplement les méthodes Java comme outils appelables par un LLM. - Configuration d'exécuteurs : Personnalise la manière dont chaque outil est exécuté (par exemple, avec timeout, gestion des exceptions, etc.).
- Enregistrement dans
AiServices: Lie les outils à un service IA pour une utilisation transparente dans les agents. - Validation des paramètres : Vérifie automatiquement les arguments des outils (types, valeurs obligatoires, etc.).
- Gestion des erreurs : Capture et traite les exceptions lors de l'exécution des outils, avec possibilité de renvoyer des messages d'erreur au LLM.
Exemple d'utilisation
import dev.langchain4j.agent.tool.Tool;
public class WeatherTool {
@Tool("Obtient la météo actuelle pour une ville donnée")
public String getWeather(@ToolParam("Le nom de la ville") String city) {
// ... appel API météo
return "Il fait 22°C à " + city;
}
}
WeatherTool tool = new WeatherTool();
AiServices<Assistant> services = AiServices.builder(Assistant.class)
.toolExecutor(tool)
.build();
Gestion des erreurs
Utilisez ToolExecutionException pour capturer les erreurs et informer le LLM :
@Tool("Recherche d'employé")
public Employee findEmployee(@ToolParam("ID de l'employé") int id) {
try {
return employeeRepository.findById(id);
} catch (Exception e) {
throw new ToolExecutionException("Employé non trouvé : " + id, e);
}
}
Validation des paramètres
Les paramètres peuvent être annotés avec @ToolParam pour spécifier des contraintes :
@Tool("Ajoute un produit au panier")
public void addToCart(
@ToolParam(value = "ID du produit", required = true) String productId,
@ToolParam(value = "Quantité", min = 1, max = 100) int quantity
) { ... }