Controles de IA NUEVO
HarbourBuilder es el primer IDE xBase con componentes de IA integrados. Coloque componentes de IA en su formulario, establezca una clave de API e interactue con los modelos de lenguaje mas potentes del mundo.
El componente TOllama se conecta a una instancia local de Ollama — no necesita clave de API, es totalmente privado y funciona sin conexion. Perfecto para desarrollo y entornos empresariales.
Resumen de Componentes de IA
| Componente | CT ID | Proveedor | Tipo |
|---|---|---|---|
TOpenAI | 46 | OpenAI | API en la Nube |
TGemini | 47 | API en la Nube | |
TClaude | 48 | Anthropic | API en la Nube |
TDeepSeek | 49 | DeepSeek | API en la Nube |
TGrok | 50 | xAI | API en la Nube |
TOllama | 51 | Ollama | Servidor Local |
TTransformer | 52 | Local | Modelo en Dispositivo |
TWhisper | 110 | OpenAI/Local | Voz a Texto |
TEmbeddings | 111 | Varios | Vecores de Incrustacion |
Propiedades Comunes (todos los controles de IA)
| Propiedad | Tipo | Descripcion |
|---|---|---|
cApiKey | String | Clave de autenticacion API |
cModel | String | Nombre del modelo (ej. "gpt-4o", "claude-sonnet-4-20250514") |
nTemperature | Numerico | Creatividad (0.0 = determinista, 2.0 = creativo) |
nMaxTokens | Numerico | Longitud maxima de respuesta |
cSystemPrompt | String | Instrucciones del sistema para la IA |
lStream | Logico | Habilitar respuestas en flujo (token por token) |
Eventos Comunes
| Evento | Parametros | Descripcion |
|---|---|---|
OnResponse | cResponse | Respuesta completa recibida |
OnStream | cToken | Cada token durante el flujo |
OnError | cError, nCode | Error de API ocurrido |
OnTokenCount | nPrompt, nCompletion | Informe de uso de tokens |
Metodos Comunes
| Metodo | Parametros | Descripcion |
|---|---|---|
:Chat( cMessage ) | String | Enviar un mensaje de chat, dispara OnResponse |
:Complete( cPrompt ) | String | Completacion de texto |
:Embed( cText ) | String | Obtener vector de incrustacion |
TOpenAI CT = 46
Conectar a la API de OpenAI (GPT-4o, GPT-4, GPT-3.5).
oAI := TOpenAI():New() oAI:cApiKey := "sk-..." oAI:cModel := "gpt-4o" oAI:OnResponse := { |cResp| oMemo:Text := cResp } oAI:Chat( "Explicar las clases de Harbour" )
TGemini CT = 47
Conectar a la API de Google Gemini.
Modelo predeterminado: gemini-2.5-flash
TClaude CT = 48
Conectar a la API de Anthropic Claude.
Modelo predeterminado: claude-sonnet-4-20250514
TDeepSeek CT = 49
Conectar a la API de DeepSeek. Excelente para generacion de codigo.
Modelo predeterminado: deepseek-chat
TGrok CT = 50
Conectar a la API de xAI Grok.
Modelo predeterminado: grok-3
TOllama CT = 51
Conectar a una instancia local de Ollama. No requiere clave de API.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cHost | String | "localhost" | Host del servidor Ollama |
nPort | Numerico | 11434 | Puerto del servidor Ollama |
cModel | String | "llama3" | Nombre del modelo local |
oAI := TOllama():New() oAI:cModel := "codellama" oAI:OnStream := { |cToken| oOutput:Text += cToken } oAI:Chat( "Escribir una funcion Harbour para ordenar un arreglo" )
TTransformer CT = 52
Componente de arquitectura transformer completa. Entrene, ajuste y ejecute inferencia localmente.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
nLayers | Numerico | 6 | Numero de capas de codificador/decodificador |
nHeads | Numerico | 8 | Numero de cabezales de atencion |
nEmbedDim | Numerico | 512 | Dimension de incrustacion (d_model) |
nFFDim | Numerico | 2048 | Dimension de avance (feed-forward) |
nVocabSize | Numerico | 50257 | Tamano del vocabulario |
nMaxSeqLen | Numerico | 512 | Longitud maxima de secuencia |
nDropout | Numerico | 0.1 | Tasa de dropout |
cWeightsFile | String | "" | Ruta de pesos preentrenados |
lCausal | Logico | .T. | Usar mascara causal (modo decodificador) |
| Evento | Descripcion |
|---|---|
OnAttention | Acceder a los pesos de atencion para visualizacion |
OnGenerate | Token generado durante inferencia |
OnTrainStep | Paso de entrenamiento completado (con perdida) |
OnLoss | Valor de perdida calculado |
Vea la carpeta samples/projects/transformer/ para 7 ejemplos completos: visualizador de atencion, generador de texto, entrenamiento desde cero, explorador de tokenizador, analizador de sentimientos, traductor y un recorrido completo de "Attention Is All You Need".
TWhisper CT = 110
Transcripcion de voz a texto usando el modelo Whisper de OpenAI o implementaciones locales de Whisper. Convierte archivos de audio y entrada de microfono en tiempo real a texto.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cAudioFile | String | "" | Ruta al archivo de audio para transcripcion |
cLanguage | String | "en" | Codigo de idioma (ej. "en", "es", "fr") |
cModel | String | "whisper-1" | Tamano del modelo (tiny, base, small, medium, large) |
lTranslate | Logico | .F. | Traducir al ingles |
nTask | Numerico | 0 | 0=transcribir, 1=traducir |
| Evento | Descripcion |
|---|---|
OnTranscription | Transcripcion completa recibida |
OnSegment | Cada segmento de transcripcion (con marcas de tiempo) |
OnError | Error de transcripcion ocurrido |
oWhisper := TWhisper():New() oWhisper:cAudioFile := "grabacion.wav" oWhisper:cLanguage := "es" oWhisper:OnTranscription := { |cText| oMemo:Text := cText } oWhisper:Transcribe()
TEmbeddings CT = 111
Generar vectores de incrustacion para busqueda de similitud de texto, busqueda semantica, agrupamiento y recuperacion. Soporta multiples proveedores incluyendo OpenAI, Ollama y modelos locales.
| Propiedad | Tipo | Valor predet. | Descripcion |
|---|---|---|---|
cModel | String | "text-embedding-ada-002" | Nombre del modelo de incrustacion |
nDimensions | Numerico | 1536 | Cantidad de dimensiones del vector |
cMetric | String | "cosine" | Medida de similitud (cosine, euclidean, dotproduct) |
aVectors | Array | {} | Vectores de incrustacion en cache |
| Metodo | Parametros | Descripcion |
|---|---|---|
:Embed( cText ) | String | Generar incrustacion para texto, devuelve arreglo |
:Similarity( aVec1, aVec2 ) | Arreglos | Calcular similitud entre vectores |
:Index( cText, cId ) | Strings | Anadir texto al indice de vectores con ID |
:Search( cQuery, nTop ) | String, Numero | Buscar vectores indexados, devuelve top N |
| Evento | Descripcion |
|---|---|
OnEmbed | Incrustacion generada (con arreglo de vector) |
OnSearch | Resultados de busqueda recibidos (con similitudes) |
OnError | Error de incrustacion ocurrido |
oEmb := TEmbeddings():New() oEmb:cModel := "text-embedding-ada-002" // Indexar algunos documentos oEmb:Index( "HarbourBuilder es un IDE visual", "doc1" ) oEmb:Index( "Lenguaje xBase para aplicaciones de base de datos", "doc2" ) // Buscar oEmb:OnSearch := { |aResults| ShowResults( aResults ) } oEmb:Search( "entorno de desarrollo visual", 5 )
Use TEmbeddings para construir un motor de busqueda semantica: indexe sus documentos, luego busque por significado en lugar de palabras clave. Perfecto para bases de conocimiento y preguntas frecuentes.