API Core

Référence complète de l'API Core Gemini CLI et guide d'utilisation

Référence API30 min de lecture

Modules API

Modules et méthodes API principaux

GeminiClient

Classe client API Gemini principale

src/core/gemini.ts

constructor

constructor(config: GeminiConfig)

Créer une instance de client Gemini

Paramètres:
configGeminiConfig

Objet de configuration client

Exemple:
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>

Envoyer un message de chat et obtenir une réponse

Paramètres:
messagestring

Message d'entrée utilisateur

contextContext

Informations de contexte optionnelles

Retourne:
Promise<ChatResponse>

Objet de réponse de chat

Exemple:
const response = await client.chat('Hello, Gemini!', {
  files: ['src/index.ts'],
  history: previousMessages
})

stream

async stream(message: string, context?: Context): AsyncGenerator<string>

Réponse de chat en streaming

Paramètres:
messagestring

Message d'entrée utilisateur

contextContext

Informations de contexte optionnelles

Retourne:
AsyncGenerator<string>

Générateur de réponse en streaming

Exemple:
for await (const chunk of client.stream('Explain this code')) {
  process.stdout.write(chunk)
}

SessionManager

Gestionnaire d'état de session

src/core/session.ts

createSession

createSession(id?: string): Session

Créer une nouvelle session

Paramètres:
idstring

ID de session optionnel

Retourne:
Session

Objet de session nouvellement créé

Exemple:
const session = sessionManager.createSession('my-session')

getSession

getSession(id: string): Session | null

Obtenir la session spécifiée

Paramètres:
idstring

ID de session

Retourne:
Session | null

Objet de session ou null

Exemple:
const session = sessionManager.getSession('my-session')

saveSession

async saveSession(session: Session): Promise<void>

Sauvegarder la session dans le stockage persistant

Paramètres:
sessionSession

Objet de session à sauvegarder

Exemple:
await sessionManager.saveSession(session)

ContextManager

Gestionnaire de traitement de contexte

src/core/context.ts

addFile

async addFile(filePath: string): Promise<void>

Ajouter un fichier au contexte

Paramètres:
filePathstring

Chemin du fichier

Exemple:
await contextManager.addFile('src/utils/helper.ts')

addDirectory

async addDirectory(dirPath: string, options?: DirOptions): Promise<void>

Ajouter un répertoire au contexte

Paramètres:
dirPathstring

Chemin du répertoire

optionsDirOptions

Options de scan de répertoire

Exemple:
await contextManager.addDirectory('src/', {
  exclude: ['*.test.ts'],
  maxDepth: 3
})

getContext

getContext(): Context

Obtenir le contexte actuel

Retourne:
Context

Objet de contexte actuel

Exemple:
const context = contextManager.getContext()

Définitions de Types

Définitions de types TypeScript pour l'API Core

GeminiConfig

Interface de configuration client Gemini

apiKeystring
requis

Clé API Google AI

modelstring

Nom du modèle à utiliser, par défaut "gemini-pro"

temperaturenumber

Température de génération, entre 0-1

maxTokensnumber

Nombre maximum de tokens

timeoutnumber

Délai d'expiration de la requête en millisecondes

ChatResponse

Interface de réponse de chat

contentstring
requis

Contenu de la réponse

usageTokenUsage
requis

Informations d'utilisation des tokens

modelstring
requis

Modèle utilisé

finishReasonstring

Raison de fin

Context

Interface d'informations de contexte

filesFileContext[]

Liste de contexte de fichiers

historyMessage[]

Historique des messages

metadataRecord<string, any>

Métadonnées

Session

Interface de session

idstring
requis

Identifiant de session unique

messagesMessage[]
requis

Historique des messages

contextContext

Contexte de session

createdAtDate
requis

Heure de création

updatedAtDate
requis

Heure de mise à jour

Exemples d'Utilisation

Scénarios d'utilisation API courants et exemples de code

Chat de Base

Exemple d'interaction de chat simple

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)
  }
}

Contexte de Fichier

Chat avec contexte de fichier inclus

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)
}

Gestion de Session

Gestion des sessions persistantes

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)
}

Réponse en Streaming

Sortie en streaming en temps réel

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!')
}

Gestion des Erreurs

Types d'erreurs API et méthodes de gestion

AuthenticationError

Clé API invalide ou expirée

GEMINI_AUTH_ERROR

Solution:

Vérifiez si la clé API est correctement définie, assurez-vous que la clé est valide et non expirée

RateLimitError

La fréquence des requêtes dépasse les limites

GEMINI_RATE_LIMIT

Solution:

Implémentez un mécanisme de nouvelle tentative avec backoff exponentiel, ou passez à un plan de quota supérieur

ContextTooLargeError

Le contenu du contexte dépasse les limites du modèle

GEMINI_CONTEXT_TOO_LARGE

Solution:

Réduisez le nombre de fichiers de contexte ou utilisez la fonction de résumé de fichier

NetworkError

Problèmes de connexion réseau

GEMINI_NETWORK_ERROR

Solution:

Vérifiez la connexion réseau, configurez les paramètres de proxy ou augmentez le délai d'expiration

Étapes Suivantes

Continuez votre parcours de développement avec ces ressources