API Core
Referencia completa de la API Core de Gemini CLI y guía de uso
Módulos API
Módulos y métodos API principales
GeminiClient
Clase cliente API Gemini principal
src/core/gemini.tsconstructor
constructor(config: GeminiConfig)Crear instancia de cliente Gemini
Parámetros:
configGeminiConfigObjeto de configuración del cliente
Ejemplo:
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>Enviar mensaje de chat y obtener respuesta
Parámetros:
messagestringMensaje de entrada del usuario
contextContextInformación de contexto opcional
Retorna:
Promise<ChatResponse>Objeto de respuesta de chat
Ejemplo:
const response = await client.chat('Hello, Gemini!', {
files: ['src/index.ts'],
history: previousMessages
})stream
async stream(message: string, context?: Context): AsyncGenerator<string>Respuesta de chat en streaming
Parámetros:
messagestringMensaje de entrada del usuario
contextContextInformación de contexto opcional
Retorna:
AsyncGenerator<string>Generador de respuesta en streaming
Ejemplo:
for await (const chunk of client.stream('Explain this code')) {
process.stdout.write(chunk)
}SessionManager
Gestor de estado de sesión
src/core/session.tscreateSession
createSession(id?: string): SessionCrear nueva sesión
Parámetros:
idstringID de sesión opcional
Retorna:
SessionObjeto de sesión recién creado
Ejemplo:
const session = sessionManager.createSession('my-session')getSession
getSession(id: string): Session | nullObtener sesión especificada
Parámetros:
idstringID de sesión
Retorna:
Session | nullObjeto de sesión o null
Ejemplo:
const session = sessionManager.getSession('my-session')saveSession
async saveSession(session: Session): Promise<void>Guardar sesión en almacenamiento persistente
Parámetros:
sessionSessionObjeto de sesión a guardar
Ejemplo:
await sessionManager.saveSession(session)
ContextManager
Gestor de procesamiento de contexto
src/core/context.tsaddFile
async addFile(filePath: string): Promise<void>Agregar archivo al contexto
Parámetros:
filePathstringRuta del archivo
Ejemplo:
await contextManager.addFile('src/utils/helper.ts')addDirectory
async addDirectory(dirPath: string, options?: DirOptions): Promise<void>Agregar directorio al contexto
Parámetros:
dirPathstringRuta del directorio
optionsDirOptionsOpciones de escaneo de directorio
Ejemplo:
await contextManager.addDirectory('src/', {
exclude: ['*.test.ts'],
maxDepth: 3
})getContext
getContext(): ContextObtener contexto actual
Retorna:
ContextObjeto de contexto actual
Ejemplo:
const context = contextManager.getContext()
Definiciones de Tipos
Definiciones de tipos TypeScript para la API Core
GeminiConfig
Interfaz de configuración del cliente Gemini
apiKeystringClave API de Google AI
modelstringNombre del modelo a usar, por defecto "gemini-pro"
temperaturenumberTemperatura de generación, entre 0-1
maxTokensnumberNúmero máximo de tokens
timeoutnumberTiempo de espera de solicitud en milisegundos
ChatResponse
Interfaz de respuesta de chat
contentstringContenido de respuesta
usageTokenUsageInformación de uso de tokens
modelstringModelo utilizado
finishReasonstringRazón de finalización
Context
Interfaz de información de contexto
filesFileContext[]Lista de contexto de archivos
historyMessage[]Historial de mensajes
metadataRecord<string, any>Metadatos
Session
Interfaz de sesión
idstringIdentificador único de sesión
messagesMessage[]Historial de mensajes
contextContextContexto de sesión
createdAtDateTiempo de creación
updatedAtDateTiempo de actualización
Ejemplos de Uso
Escenarios comunes de uso de API y ejemplos de código
Chat Básico
Ejemplo de interacción 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)
}
}Contexto de Archivo
Chat con contexto de archivo incluido
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)
}Gestión de Sesión
Gestión de sesiones persistentes
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)
}Respuesta en Streaming
Salida de streaming en tiempo real
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!')
}Manejo de Errores
Tipos de errores de API y métodos de manejo
AuthenticationError
Clave API inválida o expirada
GEMINI_AUTH_ERRORSolución:
Verifique si la clave API está configurada correctamente, asegúrese de que la clave sea válida y no haya expirado
RateLimitError
La frecuencia de solicitudes excede los límites
GEMINI_RATE_LIMITSolución:
Implemente un mecanismo de reintento con backoff exponencial, o actualice a un plan de cuota superior
ContextTooLargeError
El contenido del contexto excede los límites del modelo
GEMINI_CONTEXT_TOO_LARGESolución:
Reduzca el número de archivos de contexto o use la función de resumen de archivos
NetworkError
Problemas de conexión de red
GEMINI_NETWORK_ERRORSolución:
Verifique la conexión de red, configure los ajustes de proxy o aumente el tiempo de espera
Próximos Pasos
Continúa tu viaje de desarrollo con estos recursos