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.tsconstructor
constructor(config: GeminiConfig)Créer une instance de client Gemini
Paramètres:
configGeminiConfigObjet 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:
messagestringMessage d'entrée utilisateur
contextContextInformations 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:
messagestringMessage d'entrée utilisateur
contextContextInformations 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.tscreateSession
createSession(id?: string): SessionCréer une nouvelle session
Paramètres:
idstringID de session optionnel
Retourne:
SessionObjet de session nouvellement créé
Exemple:
const session = sessionManager.createSession('my-session')getSession
getSession(id: string): Session | nullObtenir la session spécifiée
Paramètres:
idstringID de session
Retourne:
Session | nullObjet 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:
sessionSessionObjet de session à sauvegarder
Exemple:
await sessionManager.saveSession(session)
ContextManager
Gestionnaire de traitement de contexte
src/core/context.tsaddFile
async addFile(filePath: string): Promise<void>Ajouter un fichier au contexte
Paramètres:
filePathstringChemin 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:
dirPathstringChemin du répertoire
optionsDirOptionsOptions de scan de répertoire
Exemple:
await contextManager.addDirectory('src/', {
exclude: ['*.test.ts'],
maxDepth: 3
})getContext
getContext(): ContextObtenir le contexte actuel
Retourne:
ContextObjet 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
apiKeystringClé API Google AI
modelstringNom du modèle à utiliser, par défaut "gemini-pro"
temperaturenumberTempérature de génération, entre 0-1
maxTokensnumberNombre maximum de tokens
timeoutnumberDélai d'expiration de la requête en millisecondes
ChatResponse
Interface de réponse de chat
contentstringContenu de la réponse
usageTokenUsageInformations d'utilisation des tokens
modelstringModèle utilisé
finishReasonstringRaison 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
idstringIdentifiant de session unique
messagesMessage[]Historique des messages
contextContextContexte de session
createdAtDateHeure de création
updatedAtDateHeure 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_ERRORSolution:
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_LIMITSolution:
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_LARGESolution:
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_ERRORSolution:
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