API Core
Référence complète de l'API Core Gemini CLI et guide d'utilisation
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:
config
GeminiConfigObjet 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:
message
stringMessage d'entrée utilisateur
context
ContextInformations 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:
message
stringMessage d'entrée utilisateur
context
ContextInformations 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:
id
stringID 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:
id
stringID 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:
session
SessionObjet 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:
filePath
stringChemin 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:
dirPath
stringChemin du répertoire
options
DirOptionsOptions 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
apiKey
stringClé API Google AI
model
stringNom du modèle à utiliser, par défaut "gemini-pro"
temperature
numberTempérature de génération, entre 0-1
maxTokens
numberNombre maximum de tokens
timeout
numberDélai d'expiration de la requête en millisecondes
ChatResponse
Interface de réponse de chat
content
stringContenu de la réponse
usage
TokenUsageInformations d'utilisation des tokens
model
stringModèle utilisé
finishReason
stringRaison de fin
Context
Interface d'informations de contexte
files
FileContext[]Liste de contexte de fichiers
history
Message[]Historique des messages
metadata
Record<string, any>Métadonnées
Session
Interface de session
id
stringIdentifiant de session unique
messages
Message[]Historique des messages
context
ContextContexte de session
createdAt
DateHeure de création
updatedAt
DateHeure 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