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