API de Herramientas

Cree y gestione herramientas personalizadas para interacciones de IA. Extienda Gemini CLI con herramientas potentes para operaciones de archivos, comandos shell, solicitudes web y más.

Herramientas Integradas

Herramientas potentes listas para usar en Gemini CLI

Herramientas del Sistema de Archivos

Herramientas para leer, escribir y gestionar archivos

read_file

Leer contenido de un archivo

Firma:
read_file(path: string): Promise<string>
Ejemplo:
const content = await tools.read_file('./package.json');
console.log(content);

write_file

Escribir contenido en un archivo

Firma:
write_file(path: string, content: string): Promise<void>
Ejemplo:
await tools.write_file('./output.txt', 'Hello, World!');

list_files

Listar archivos en un directorio

Firma:
list_files(path: string): Promise<string[]>
Ejemplo:
const files = await tools.list_files('./src');
console.log(files);

Herramientas Shell

Herramientas para ejecutar comandos shell

run_shell_command

Ejecutar un comando shell

Firma:
run_shell_command(command: string, options?: ShellOptions): Promise<ShellResult>
Ejemplo:
const result = await tools.run_shell_command('ls -la');
console.log(result.stdout);

run_script

Ejecutar un archivo de script

Firma:
run_script(scriptPath: string, args?: string[]): Promise<ShellResult>
Ejemplo:
const result = await tools.run_script('./build.sh', ['--production']);

Herramientas Web

Herramientas para solicitudes web y búsqueda

web_fetch

Obtener contenido de una URL

Firma:
web_fetch(url: string, options?: FetchOptions): Promise<string>
Ejemplo:
const content = await tools.web_fetch('https://api.example.com/data');
console.log(content);

web_search

Buscar información en la web

Firma:
web_search(query: string, options?: SearchOptions): Promise<SearchResult[]>
Ejemplo:
const results = await tools.web_search('Gemini CLI documentation');
console.log(results);

Desarrollo de Herramientas Personalizadas

Cree sus propias herramientas para extender la funcionalidad de Gemini CLI

Crear una Herramienta Personalizada

Aquí hay un ejemplo completo de creación de una herramienta meteorológica personalizada:

import { Tool, ToolDefinition } from '@google/generative-ai-cli';

// Definir una herramienta personalizada
const weatherTool: ToolDefinition = {
  name: 'get_weather',
  description: 'Obtener el clima actual para una ubicación',
  parameters: {
    type: 'object',
    properties: {
      location: {
        type: 'string',
        description: 'La ciudad y estado, ej. Madrid, España'
      },
      unit: {
        type: 'string',
        enum: ['celsius', 'fahrenheit'],
        description: 'Unidad de temperatura'
      }
    },
    required: ['location']
  },
  execute: async ({ location, unit = 'celsius' }) => {
    // Su lógica de API del clima aquí
    const response = await fetch(`https://api.weather.com/v1/current?location=${location}&unit=${unit}`);
    const data = await response.json();
    return `Clima actual en ${location}: ${data.temperature}°${unit === 'celsius' ? 'C' : 'F'}, ${data.description}`;
  }
};

// Registrar la herramienta
gemini.registerTool(weatherTool);

// Usar la herramienta en una conversación
const response = await gemini.ask("¿Cómo está el clima en Madrid?", {
  tools: ['get_weather']
});

Registro y Gestión de Herramientas

Gestión de herramientas en su instancia de Gemini CLI

Registrar Herramientas

// Registrar una sola herramienta
gemini.registerTool(myTool);

// Registrar múltiples herramientas
gemini.registerTools([tool1, tool2, tool3]);

// Cargar desde un plugin
gemini.loadPlugin('./my-tools-plugin');

Listar y Gestionar Herramientas

// Listar todas las herramientas disponibles
const tools = gemini.listTools();

// Obtener información de la herramienta
const toolInfo = gemini.getTool('tool_name');

// Desregistrar una herramienta
gemini.unregisterTool('tool_name');

Mejores Prácticas

Pautas para crear herramientas efectivas

Diseño de Herramientas

  • Mantenga las herramientas enfocadas en una sola responsabilidad
  • Proporcione nombres y descripciones claros y descriptivos
  • Defina esquemas de parámetros completos
  • Maneje los errores con elegancia y proporcione mensajes significativos

Rendimiento

  • Implemente las operaciones asíncronas correctamente
  • Agregue manejo de tiempo de espera para operaciones largas
  • Almacene en caché los resultados cuando sea apropiado
  • Valide las entradas antes del procesamiento

Recursos Relacionados

Explore más sobre desarrollo y uso de herramientas