API Инструментов

Создавайте и управляйте пользовательскими инструментами для взаимодействия с ИИ. Расширьте Gemini CLI мощными инструментами для файловых операций, команд shell, веб-запросов и многого другого.

Встроенные Инструменты

Мощные инструменты, готовые к использованию в Gemini CLI

Инструменты файловой системы

Инструменты для чтения, записи и управления файлами

read_file

Читать содержимое из файла

Сигнатура:
read_file(path: string): Promise<string>
Пример:
const content = await tools.read_file('./package.json');
console.log(content);

write_file

Записать содержимое в файл

Сигнатура:
write_file(path: string, content: string): Promise<void>
Пример:
await tools.write_file('./output.txt', 'Hello, World!');

list_files

Список файлов в директории

Сигнатура:
list_files(path: string): Promise<string[]>
Пример:
const files = await tools.list_files('./src');
console.log(files);

Инструменты Shell

Инструменты для выполнения команд shell

run_shell_command

Выполнить команду shell

Сигнатура:
run_shell_command(command: string, options?: ShellOptions): Promise<ShellResult>
Пример:
const result = await tools.run_shell_command('ls -la');
console.log(result.stdout);

run_script

Выполнить файл скрипта

Сигнатура:
run_script(scriptPath: string, args?: string[]): Promise<ShellResult>
Пример:
const result = await tools.run_script('./build.sh', ['--production']);

Веб-инструменты

Инструменты для веб-запросов и поиска

web_fetch

Получить содержимое с URL

Сигнатура:
web_fetch(url: string, options?: FetchOptions): Promise<string>
Пример:
const content = await tools.web_fetch('https://api.example.com/data');
console.log(content);

web_search

Поиск информации в интернете

Сигнатура:
web_search(query: string, options?: SearchOptions): Promise<SearchResult[]>
Пример:
const results = await tools.web_search('Gemini CLI documentation');
console.log(results);

Разработка Пользовательских Инструментов

Создайте собственные инструменты для расширения функциональности Gemini CLI

Создание Пользовательского Инструмента

Вот полный пример создания пользовательского инструмента погоды:

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

// Определить пользовательский инструмент
const weatherTool: ToolDefinition = {
  name: 'get_weather',
  description: 'Получить текущую погоду для местоположения',
  parameters: {
    type: 'object',
    properties: {
      location: {
        type: 'string',
        description: 'Город и область, например Москва, Россия'
      },
      unit: {
        type: 'string',
        enum: ['celsius', 'fahrenheit'],
        description: 'Единица температуры'
      }
    },
    required: ['location']
  },
  execute: async ({ location, unit = 'celsius' }) => {
    // Ваша логика API погоды здесь
    const response = await fetch(`https://api.weather.com/v1/current?location=${location}&unit=${unit}`);
    const data = await response.json();
    return `Текущая погода в ${location}: ${data.temperature}°${unit === 'celsius' ? 'C' : 'F'}, ${data.description}`;
  }
};

// Зарегистрировать инструмент
gemini.registerTool(weatherTool);

// Использовать инструмент в разговоре
const response = await gemini.ask("Какая погода в Москве?", {
  tools: ['get_weather']
});

Регистрация и Управление Инструментами

Управление инструментами в вашем экземпляре Gemini CLI

Регистрация Инструментов

// Зарегистрировать один инструмент
gemini.registerTool(myTool);

// Зарегистрировать несколько инструментов
gemini.registerTools([tool1, tool2, tool3]);

// Загрузить из плагина
gemini.loadPlugin('./my-tools-plugin');

Список и Управление Инструментами

// Список всех доступных инструментов
const tools = gemini.listTools();

// Получить информацию об инструменте
const toolInfo = gemini.getTool('tool_name');

// Отменить регистрацию инструмента
gemini.unregisterTool('tool_name');

Лучшие Практики

Руководство по созданию эффективных инструментов

Дизайн Инструментов

  • Сосредоточьте инструменты на одной ответственности
  • Предоставьте четкие, описательные имена и описания
  • Определите комплексные схемы параметров
  • Обрабатывайте ошибки изящно и предоставляйте значимые сообщения

Производительность

  • Правильно реализуйте асинхронные операции
  • Добавьте обработку таймаутов для длительных операций
  • Кэшируйте результаты когда это уместно
  • Проверяйте входные данные перед обработкой

Связанные Ресурсы

Узнайте больше о разработке и использовании инструментов