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.ts
constructor
constructor(config: GeminiConfig)
Crear instancia de cliente Gemini
Parámetros:
config
GeminiConfigObjeto 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:
message
stringMensaje de entrada del usuario
context
ContextInformació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:
message
stringMensaje de entrada del usuario
context
ContextInformació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.ts
createSession
createSession(id?: string): Session
Crear nueva sesión
Parámetros:
id
stringID de sesión opcional
Retorna:
Session
Objeto de sesión recién creado
Ejemplo:
const session = sessionManager.createSession('my-session')
getSession
getSession(id: string): Session | null
Obtener sesión especificada
Parámetros:
id
stringID de sesión
Retorna:
Session | null
Objeto 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:
session
SessionObjeto de sesión a guardar
Ejemplo:
await sessionManager.saveSession(session)
ContextManager
Gestor de procesamiento de contexto
src/core/context.ts
addFile
async addFile(filePath: string): Promise<void>
Agregar archivo al contexto
Parámetros:
filePath
stringRuta 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:
dirPath
stringRuta del directorio
options
DirOptionsOpciones de escaneo de directorio
Ejemplo:
await contextManager.addDirectory('src/', { exclude: ['*.test.ts'], maxDepth: 3 })
getContext
getContext(): Context
Obtener contexto actual
Retorna:
Context
Objeto 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
apiKey
stringClave API de Google AI
model
stringNombre del modelo a usar, por defecto "gemini-pro"
temperature
numberTemperatura de generación, entre 0-1
maxTokens
numberNúmero máximo de tokens
timeout
numberTiempo de espera de solicitud en milisegundos
ChatResponse
Interfaz de respuesta de chat
content
stringContenido de respuesta
usage
TokenUsageInformación de uso de tokens
model
stringModelo utilizado
finishReason
stringRazón de finalización
Context
Interfaz de información de contexto
files
FileContext[]Lista de contexto de archivos
history
Message[]Historial de mensajes
metadata
Record<string, any>Metadatos
Session
Interfaz de sesión
id
stringIdentificador único de sesión
messages
Message[]Historial de mensajes
context
ContextContexto de sesión
createdAt
DateTiempo de creación
updatedAt
DateTiempo 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_ERROR
Solució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_LIMIT
Solució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_LARGE
Solució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_ERROR
Solució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