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