Core API
Vollständige Gemini CLI Core API Referenz und Nutzungsanleitung
API-Module
Kern-API-Module und -Methoden
GeminiClient
Kern-Gemini-API-Client-Klasse
src/core/gemini.tsconstructor
constructor(config: GeminiConfig)Gemini-Client-Instanz erstellen
Parameter:
configGeminiConfigClient-Konfigurationsobjekt
Beispiel:
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>Chat-Nachricht senden und Antwort erhalten
Parameter:
messagestringBenutzereingabenachricht
contextContextOptionale Kontextinformationen
Rückgabe:
Promise<ChatResponse>Chat-Antwortobjekt
Beispiel:
const response = await client.chat('Hello, Gemini!', {
files: ['src/index.ts'],
history: previousMessages
})stream
async stream(message: string, context?: Context): AsyncGenerator<string>Streaming-Chat-Antwort
Parameter:
messagestringBenutzereingabenachricht
contextContextOptionale Kontextinformationen
Rückgabe:
AsyncGenerator<string>Streaming-Antwort-Generator
Beispiel:
for await (const chunk of client.stream('Explain this code')) {
process.stdout.write(chunk)
}SessionManager
Session-Status-Manager
src/core/session.tscreateSession
createSession(id?: string): SessionNeue Session erstellen
Parameter:
idstringOptionale Session-ID
Rückgabe:
SessionNeu erstelltes Session-Objekt
Beispiel:
const session = sessionManager.createSession('my-session')getSession
getSession(id: string): Session | nullAngegebene Session abrufen
Parameter:
idstringSession-ID
Rückgabe:
Session | nullSession-Objekt oder null
Beispiel:
const session = sessionManager.getSession('my-session')saveSession
async saveSession(session: Session): Promise<void>Session in persistentem Speicher speichern
Parameter:
sessionSessionZu speicherndes Session-Objekt
Beispiel:
await sessionManager.saveSession(session)
ContextManager
Kontext-Verarbeitungsmanager
src/core/context.tsaddFile
async addFile(filePath: string): Promise<void>Datei zum Kontext hinzufügen
Parameter:
filePathstringDateipfad
Beispiel:
await contextManager.addFile('src/utils/helper.ts')addDirectory
async addDirectory(dirPath: string, options?: DirOptions): Promise<void>Verzeichnis zum Kontext hinzufügen
Parameter:
dirPathstringVerzeichnispfad
optionsDirOptionsVerzeichnis-Scan-Optionen
Beispiel:
await contextManager.addDirectory('src/', {
exclude: ['*.test.ts'],
maxDepth: 3
})getContext
getContext(): ContextAktuellen Kontext abrufen
Rückgabe:
ContextAktuelles Kontext-Objekt
Beispiel:
const context = contextManager.getContext()
Typdefinitionen
TypeScript-Typdefinitionen für Core API
GeminiConfig
Gemini-Client-Konfigurationsschnittstelle
apiKeystringGoogle AI API-Schlüssel
modelstringZu verwendender Modellname, Standard ist "gemini-pro"
temperaturenumberGenerierungstemperatur, zwischen 0-1
maxTokensnumberMaximale Anzahl von Tokens
timeoutnumberAnfrage-Timeout in Millisekunden
ChatResponse
Chat-Antwort-Schnittstelle
contentstringAntwortinhalt
usageTokenUsageToken-Nutzungsinformationen
modelstringVerwendetes Modell
finishReasonstringBeendigungsgrund
Context
Kontext-Informationsschnittstelle
filesFileContext[]Datei-Kontext-Liste
historyMessage[]Nachrichtenverlauf
metadataRecord<string, any>Metadaten
Session
Session-Schnittstelle
idstringEindeutige Session-Kennung
messagesMessage[]Nachrichtenverlauf
contextContextSession-Kontext
createdAtDateErstellungszeit
updatedAtDateAktualisierungszeit
Verwendungsbeispiele
Häufige API-Nutzungsszenarien und Codebeispiele
Basis-Chat
Einfaches Chat-Interaktionsbeispiel
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)
}
}Datei-Kontext
Chat mit eingeschlossenem Datei-Kontext
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)
}Session-Management
Verwaltung persistenter Sessions
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)
}Streaming-Antwort
Echtzeit-Streaming-Ausgabe
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!')
}Fehlerbehandlung
API-Fehlertypen und Behandlungsmethoden
AuthenticationError
Ungültiger oder abgelaufener API-Schlüssel
GEMINI_AUTH_ERRORLösung:
Überprüfen Sie, ob der API-Schlüssel korrekt gesetzt ist, stellen Sie sicher, dass der Schlüssel gültig und nicht abgelaufen ist
RateLimitError
Anfragenhäufigkeit überschreitet Grenzen
GEMINI_RATE_LIMITLösung:
Implementieren Sie einen exponentiellen Backoff-Wiederholungsmechanismus oder upgraden Sie auf einen höheren Quota-Plan
ContextTooLargeError
Kontextinhalt überschreitet Modellgrenzen
GEMINI_CONTEXT_TOO_LARGELösung:
Reduzieren Sie die Anzahl der Kontextdateien oder verwenden Sie die Dateizusammenfassungsfunktion
NetworkError
Netzwerkverbindungsprobleme
GEMINI_NETWORK_ERRORLösung:
Überprüfen Sie die Netzwerkverbindung, konfigurieren Sie Proxy-Einstellungen oder erhöhen Sie das Timeout
Nächste Schritte
Setzen Sie Ihre Entwicklungsreise mit diesen Ressourcen fort