Core API
Полный справочник Core API Gemini CLI и руководство по использованию
API модули
Основные API модули и методы
GeminiClient
Основной класс клиента Gemini API
src/core/gemini.ts
constructor
constructor(config: GeminiConfig)
Создать экземпляр клиента Gemini
Параметры:
config
GeminiConfigОбъект конфигурации клиента
Пример:
const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY, model: 'gemini-pro', temperature: 0.7 })
chat
async chat(message: string, context?: Context): Promise<ChatResponse>
Отправить сообщение чата и получить ответ
Параметры:
message
stringВходное сообщение пользователя
context
ContextДополнительная контекстная информация
Возвращает:
Promise<ChatResponse>
Объект ответа чата
Пример:
const response = await client.chat('Hello, Gemini!', { files: ['src/index.ts'], history: previousMessages })
stream
async stream(message: string, context?: Context): AsyncGenerator<string>
Потоковый ответ чата
Параметры:
message
stringВходное сообщение пользователя
context
ContextДополнительная контекстная информация
Возвращает:
AsyncGenerator<string>
Генератор потокового ответа
Пример:
for await (const chunk of client.stream('Explain this code')) { process.stdout.write(chunk) }
SessionManager
Менеджер состояния сессии
src/core/session.ts
createSession
createSession(id?: string): Session
Создать новую сессию
Параметры:
id
stringДополнительный ID сессии
Возвращает:
Session
Вновь созданный объект сессии
Пример:
const session = sessionManager.createSession('my-session')
getSession
getSession(id: string): Session | null
Получить указанную сессию
Параметры:
id
stringID сессии
Возвращает:
Session | null
Объект сессии или null
Пример:
const session = sessionManager.getSession('my-session')
saveSession
async saveSession(session: Session): Promise<void>
Сохранить сессию в постоянное хранилище
Параметры:
session
SessionОбъект сессии для сохранения
Пример:
await sessionManager.saveSession(session)
ContextManager
Менеджер обработки контекста
src/core/context.ts
addFile
async addFile(filePath: string): Promise<void>
Добавить файл в контекст
Параметры:
filePath
stringПуть к файлу
Пример:
await contextManager.addFile('src/utils/helper.ts')
addDirectory
async addDirectory(dirPath: string, options?: DirOptions): Promise<void>
Добавить директорию в контекст
Параметры:
dirPath
stringПуть к директории
options
DirOptionsОпции сканирования директории
Пример:
await contextManager.addDirectory('src/', { exclude: ['*.test.ts'], maxDepth: 3 })
getContext
getContext(): Context
Получить текущий контекст
Возвращает:
Context
Текущий объект контекста
Пример:
const context = contextManager.getContext()
Определения типов
Определения типов TypeScript для Core API
GeminiConfig
Интерфейс конфигурации клиента Gemini
apiKey
stringКлюч API Google AI
model
stringИмя модели для использования, по умолчанию "gemini-pro"
temperature
numberТемпература генерации, между 0-1
maxTokens
numberМаксимальное количество токенов
timeout
numberТаймаут запроса в миллисекундах
ChatResponse
Интерфейс ответа чата
content
stringСодержимое ответа
usage
TokenUsageИнформация об использовании токенов
model
stringИспользуемая модель
finishReason
stringПричина завершения
Context
Интерфейс контекстной информации
files
FileContext[]Список файлового контекста
history
Message[]История сообщений
metadata
Record<string, any>Метаданные
Session
Интерфейс сессии
id
stringУникальный идентификатор сессии
messages
Message[]История сообщений
context
ContextКонтекст сессии
createdAt
DateВремя создания
updatedAt
DateВремя обновления
Примеры использования
Распространенные сценарии использования API и примеры кода
Базовый чат
Пример простого чат-взаимодействия
import { GeminiClient } from '@gemini/core' const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY, model: 'gemini-pro' }) async function basicChat() { try { const response = await client.chat('Hello, how are you?') console.log('AI:', response.content) } catch (error) { console.error('Chat error:', error.message) } }
Файловый контекст
Чат с включенным файловым контекстом
import { GeminiClient, ContextManager } from '@gemini/core' const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY }) const contextManager = new ContextManager() async function chatWithFiles() { // Add files to context await contextManager.addFile('src/utils/helper.ts') await contextManager.addDirectory('src/components/') const context = contextManager.getContext() const response = await client.chat( 'Explain the helper functions in this codebase', context ) console.log(response.content) }
Управление сессиями
Управление постоянными сессиями
import { SessionManager } from '@gemini/core' const sessionManager = new SessionManager() async function manageSessions() { // Create new session const session = sessionManager.createSession('project-review') // Add messages to session session.messages.push({ role: 'user', content: 'Review this code for best practices' }) // Save session await sessionManager.saveSession(session) // Restore session later const restored = sessionManager.getSession('project-review') console.log('Session messages:', restored?.messages.length) }
Потоковый ответ
Потоковый вывод в реальном времени
import { GeminiClient } from '@gemini/core' const client = new GeminiClient({ apiKey: process.env.GEMINI_API_KEY }) async function streamingChat() { console.log('AI: ') for await (const chunk of client.stream('Write a short story')) { process.stdout.write(chunk) } console.log('\n\nStream completed!') }
Обработка ошибок
Типы ошибок API и методы обработки
AuthenticationError
Недействительный или истекший API ключ
GEMINI_AUTH_ERROR
Решение:
Проверьте, правильно ли установлен API ключ, убедитесь, что ключ действителен и не истек
RateLimitError
Частота запросов превышает лимиты
GEMINI_RATE_LIMIT
Решение:
Реализуйте механизм повторных попыток с экспоненциальной задержкой или обновитесь до плана с более высокой квотой
ContextTooLargeError
Содержимое контекста превышает лимиты модели
GEMINI_CONTEXT_TOO_LARGE
Решение:
Уменьшите количество контекстных файлов или используйте функцию суммаризации файлов
NetworkError
Проблемы с сетевым подключением
GEMINI_NETWORK_ERROR
Решение:
Проверьте сетевое подключение, настройте параметры прокси или увеличьте таймаут
Следующие шаги
Продолжите свой путь разработки с этими ресурсами