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');Лучшие Практики
Руководство по созданию эффективных инструментов
Дизайн Инструментов
- • Сосредоточьте инструменты на одной ответственности
- • Предоставьте четкие, описательные имена и описания
- • Определите комплексные схемы параметров
- • Обрабатывайте ошибки изящно и предоставляйте значимые сообщения
Производительность
- • Правильно реализуйте асинхронные операции
- • Добавьте обработку таймаутов для длительных операций
- • Кэшируйте результаты когда это уместно
- • Проверяйте входные данные перед обработкой
Связанные Ресурсы
Узнайте больше о разработке и использовании инструментов