API des Outils
Créez et gérez des outils personnalisés pour les interactions IA. Étendez Gemini CLI avec des outils puissants pour les opérations de fichiers, les commandes shell, les requêtes web et plus encore.
Outils Intégrés
Outils puissants prêts à utiliser dans Gemini CLI
Outils de Système de Fichiers
Outils pour lire, écrire et gérer les fichiers
read_file
Lire le contenu d'un fichier
Signature:
read_file(path: string): Promise<string>Exemple:
const content = await tools.read_file('./package.json');
console.log(content);write_file
Écrire du contenu dans un fichier
Signature:
write_file(path: string, content: string): Promise<void>Exemple:
await tools.write_file('./output.txt', 'Hello, World!');list_files
Lister les fichiers dans un répertoire
Signature:
list_files(path: string): Promise<string[]>Exemple:
const files = await tools.list_files('./src');
console.log(files);Outils Shell
Outils pour exécuter des commandes shell
run_shell_command
Exécuter une commande shell
Signature:
run_shell_command(command: string, options?: ShellOptions): Promise<ShellResult>Exemple:
const result = await tools.run_shell_command('ls -la');
console.log(result.stdout);run_script
Exécuter un fichier de script
Signature:
run_script(scriptPath: string, args?: string[]): Promise<ShellResult>Exemple:
const result = await tools.run_script('./build.sh', ['--production']);Outils Web
Outils pour les requêtes web et la recherche
web_fetch
Récupérer le contenu d'une URL
Signature:
web_fetch(url: string, options?: FetchOptions): Promise<string>Exemple:
const content = await tools.web_fetch('https://api.example.com/data');
console.log(content);web_search
Rechercher des informations sur le web
Signature:
web_search(query: string, options?: SearchOptions): Promise<SearchResult[]>Exemple:
const results = await tools.web_search('Gemini CLI documentation');
console.log(results);Développement d'Outils Personnalisés
Créez vos propres outils pour étendre les fonctionnalités de Gemini CLI
Créer un Outil Personnalisé
Voici un exemple complet de création d'un outil météo personnalisé:
import { Tool, ToolDefinition } from '@google/generative-ai-cli';
// Définir un outil personnalisé
const weatherTool: ToolDefinition = {
name: 'get_weather',
description: 'Obtenir la météo actuelle pour un lieu',
parameters: {
type: 'object',
properties: {
location: {
type: 'string',
description: 'La ville et l'état, par ex. Paris, France'
},
unit: {
type: 'string',
enum: ['celsius', 'fahrenheit'],
description: 'Unité de température'
}
},
required: ['location']
},
execute: async ({ location, unit = 'celsius' }) => {
// Votre logique API météo ici
const response = await fetch(`https://api.weather.com/v1/current?location=${location}&unit=${unit}`);
const data = await response.json();
return `Météo actuelle à ${location}: ${data.temperature}°${unit === 'celsius' ? 'C' : 'F'}, ${data.description}`;
}
};
// Enregistrer l'outil
gemini.registerTool(weatherTool);
// Utiliser l'outil dans une conversation
const response = await gemini.ask("Quel temps fait-il à Paris?", {
tools: ['get_weather']
});Enregistrement et Gestion des Outils
Gestion des outils dans votre instance Gemini CLI
Enregistrer les Outils
// Enregistrer un seul outil
gemini.registerTool(myTool);
// Enregistrer plusieurs outils
gemini.registerTools([tool1, tool2, tool3]);
// Charger depuis un plugin
gemini.loadPlugin('./my-tools-plugin');Lister et Gérer les Outils
// Lister tous les outils disponibles
const tools = gemini.listTools();
// Obtenir les informations de l'outil
const toolInfo = gemini.getTool('tool_name');
// Désenregistrer un outil
gemini.unregisterTool('tool_name');Meilleures Pratiques
Directives pour créer des outils efficaces
Conception d'Outils
- • Gardez les outils concentrés sur une seule responsabilité
- • Fournissez des noms et descriptions clairs et descriptifs
- • Définissez des schémas de paramètres complets
- • Gérez les erreurs avec élégance et fournissez des messages significatifs
Performance
- • Implémentez correctement les opérations asynchrones
- • Ajoutez la gestion des délais d'expiration pour les opérations longues
- • Mettez en cache les résultats quand c'est approprié
- • Validez les entrées avant le traitement
Ressources Connexes
Explorez davantage le développement et l'utilisation des outils