UNPKG

cyber-mysql-openai

Version:

Intelligent natural language to SQL translator with self-correction capabilities using OpenAI and MySQL

111 lines (110 loc) 3.83 kB
import { CyberMySQLOpenAIConfig, TranslationResult, SQLResult, NaturalResponseOptions, CacheStats } from '../types'; import { SupportedLanguage } from '../utils/i18n'; /** * Clase principal que proporciona la funcionalidad para traducir * lenguaje natural a SQL y ejecutar consultas */ export declare class CyberMySQLOpenAI { private openai; private dbManager; private logger; private responseFormatter; private maxReflections; private openaiModel; private i18n; private cache; private cacheEnabled; /** * Constructor de la clase CyberMySQLOpenAI * @param config - Configuración de la librería */ constructor(config?: Partial<CyberMySQLOpenAIConfig>); /** * Procesa una consulta en lenguaje natural, la traduce a SQL y la ejecuta * @param prompt - Consulta en lenguaje natural * @param options - Opciones adicionales * @returns Resultado de la consulta */ query(prompt: string, options?: NaturalResponseOptions): Promise<TranslationResult>; /** * Ejecuta una consulta SQL directamente * @param sql - Consulta SQL * @param options - Opciones adicionales * @returns Resultado de la consulta */ executeSQL(sql: string, options?: NaturalResponseOptions): Promise<SQLResult>; /** * Cierra la conexión a la base de datos */ close(): Promise<void>; /** * Cambia el idioma de las respuestas * @param language - Idioma a establecer ('es' | 'en') */ setLanguage(language: SupportedLanguage): void; /** * Obtiene el idioma actual * @returns Idioma actual */ getLanguage(): SupportedLanguage; /** * Genera SQL a partir de lenguaje natural usando OpenAI * @param prompt - Consulta en lenguaje natural * @param schema - Esquema de la base de datos * @param requestId - ID de la solicitud para logging * @returns Consulta SQL generada */ private generateSQL; /** * Intenta corregir una consulta SQL fallida mediante reflexión * @param prompt - Consulta original en lenguaje natural * @param sql - Consulta SQL que falló * @param errorMessage - Mensaje de error * @param schema - Esquema de la base de datos * @param requestId - ID de la solicitud para logging * @returns Resultado después de intentar corregir */ private reflectAndFix; /** * Genera una reflexión sobre un error en una consulta SQL * @param prompt - Consulta original en lenguaje natural * @param sql - Consulta SQL que falló * @param errorMessage - Mensaje de error * @param schema - Esquema de la base de datos * @param requestId - ID de la solicitud para logging * @returns Reflexión y SQL corregido */ private generateReflection; /** * Genera un hash del esquema de la base de datos para usar como clave de cache * @param schema - Esquema de la base de datos * @returns Hash del esquema */ private generateSchemaHash; /** * Obtiene estadísticas del cache * @returns Estadísticas del cache o null si está deshabilitado */ getCacheStats(): CacheStats | null; /** * Limpia el cache completamente */ clearCache(): void; /** * Invalida entradas del cache relacionadas con una tabla específica * @param tableName - Nombre de la tabla * @returns Número de entradas invalidadas */ invalidateCacheByTable(tableName: string): number; /** * Habilita o deshabilita el cache dinámicamente * @param enabled - Estado del cache */ setCacheEnabled(enabled: boolean): void; /** * Verifica si el cache está habilitado * @returns Estado del cache */ isCacheEnabled(): boolean; } export default CyberMySQLOpenAI;