Controles de IA NOVO
O HarbourBuilder e o primeiro IDE xBase com componentes de IA integrados. Arraste componentes de IA para o seu formulario, configure uma chave de API e interaja com os modelos de linguagem mais poderosos do mundo.
O componente TOllama conecta-se a uma instancia local do Ollama -- nenhuma chave de API e necessaria, totalmente privado, funciona offline. Perfeito para desenvolvimento e ambientes corporativos.
Visao Geral dos Componentes de IA
| Componente | ID CT | Fornecedor | Tipo |
|---|---|---|---|
TOpenAI | 46 | OpenAI | API na Nuvem |
TGemini | 47 | API na Nuvem | |
TClaude | 48 | Anthropic | API na Nuvem |
TDeepSeek | 49 | DeepSeek | API na Nuvem |
TGrok | 50 | xAI | API na Nuvem |
TOllama | 51 | Ollama | Servidor Local |
TTransformer | 52 | Local | Modelo no Dispositivo |
TWhisper | 110 | OpenAI/Local | Fala para Texto |
TEmbeddings | 111 | Diversos | Embeddings Vetoriais |
Propriedades Comuns (todos os controles de IA)
| Propriedade | Tipo | Descricao |
|---|---|---|
cApiKey | String | Chave de autenticacao da API |
cModel | String | Nome do modelo (ex. "gpt-4o", "claude-sonnet-4-20250514") |
nTemperature | Numerico | Criatividade (0,0 = deterministico, 2,0 = criativo) |
nMaxTokens | Numerico | Comprimento maximo da resposta |
cSystemPrompt | String | Instrucoes do sistema para a IA |
lStream | Logico | Ativar respostas em streaming (token por token) |
Eventos Comuns
| Evento | Parametros | Descricao |
|---|---|---|
OnResponse | cResponse | Resposta completa recebida |
OnStream | cToken | Cada token durante streaming |
OnError | cError, nCode | Ocorreu erro na API |
OnTokenCount | nPrompt, nCompletion | Relatorio de uso de tokens |
Metodos Comuns
| Metodo | Parametros | Descricao |
|---|---|---|
:Chat( cMessage ) | String | Enviar mensagem de chat, dispara OnResponse |
:Complete( cPrompt ) | String | Completacao de texto |
:Embed( cText ) | String | Obter vetor de embedding |
TOpenAI CT = 46
Conectar a API da 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( "Explique as classes do Harbour" )
TGemini CT = 47
Conectar a API do Google Gemini.
Modelo padrao: gemini-2.5-flash
TClaude CT = 48
Conectar a API do Anthropic Claude.
Modelo padrao: claude-sonnet-4-20250514
TDeepSeek CT = 49
Conectar a API do DeepSeek. Excelente para geracao de codigo.
Modelo padrao: deepseek-chat
TGrok CT = 50
Conectar a API do xAI Grok.
Modelo padrao: grok-3
TOllama CT = 51
Conectar a instancia local do Ollama. Nenhuma chave de API necessaria.
| Propriedade | Tipo | Padrao | Descricao |
|---|---|---|---|
cHost | String | "localhost" | Host do servidor Ollama |
nPort | Numerico | 11434 | Porta do servidor Ollama |
cModel | String | "llama3" | Nome do modelo local |
oAI := TOllama():New() oAI:cModel := "codellama" oAI:OnStream := { |cToken| oOutput:Text += cToken } oAI:Chat( "Escreva uma funcao Harbour para ordenar um array" )
TTransformer CT = 52
Componente de arquitetura transformer completa. Treine, ajuste fino e execute inferencia localmente.
| Propriedade | Tipo | Padrao | Descricao |
|---|---|---|---|
nLayers | Numerico | 6 | Numero de camadas encoder/decoder |
nHeads | Numerico | 8 | Numero de cabecas de atencao |
nEmbedDim | Numerico | 512 | Dimensao do embedding (d_model) |
nFFDim | Numerico | 2048 | Dimensao feed-forward |
nVocabSize | Numerico | 50257 | Tamanho do vocabulario |
nMaxSeqLen | Numerico | 512 | Comprimento maximo da sequencia |
nDropout | Numerico | 0.1 | Taxa de dropout |
cWeightsFile | String | "" | Caminho dos pesos pre-treinados |
lCausal | Logico | .T. | Usar mascara causal (modo decoder) |
| Evento | Descricao |
|---|---|
OnAttention | Acessar pesos de atencao para visualizacao |
OnGenerate | Token gerado durante inferencia |
OnTrainStep | Etapa de treinamento concluida (com perda) |
OnLoss | Valor de perda computado |
Veja a pasta samples/projects/transformer/ para 7 exemplos completos:
visualizador de atencao, gerador de texto, treinamento do zero, explorador de tokenizer,
analisador de sentimentos, tradutor e um guia completo "Attention Is All You Need".
TWhisper CT = 110
Transcricao de fala para texto usando o modelo Whisper da OpenAI ou implementacoes locais do Whisper. Converta arquivos de audio e entrada de microfone em tempo real para texto.
| Propriedade | Tipo | Padrao | Descricao |
|---|---|---|---|
cAudioFile | String | "" | Caminho do arquivo de audio para transcricao |
cLanguage | String | "en" | Codigo do idioma (ex. "en", "es", "fr") |
cModel | String | "whisper-1" | Tamanho do modelo (tiny, base, small, medium, large) |
lTranslate | Logico | .F. | Traduzir para o ingles |
nTask | Numerico | 0 | 0=transcrever, 1=traduzir |
| Evento | Descricao |
|---|---|
OnTranscription | Transcricao completa recebida |
OnSegment | Cada segmento transcrito (com timestamps) |
OnError | Ocorreu erro na transcricao |
oWhisper := TWhisper():New() oWhisper:cAudioFile := "gravacao.wav" oWhisper:cLanguage := "pt" oWhisper:OnTranscription := { |cText| oMemo:Text := cText } oWhisper:Transcribe()
TEmbeddings CT = 111
Gere embeddings vetoriais para busca por similaridade de texto, busca semantica, agrupamento e recuperacao. Suporta diversos fornecedores, incluindo OpenAI, Ollama e modelos locais.
| Propriedade | Tipo | Padrao | Descricao |
|---|---|---|---|
cModel | String | "text-embedding-ada-002" | Nome do modelo de embedding |
nDimensions | Numerico | 1536 | Numero de dimensoes do vetor |
cMetric | String | "cosine" | Medida de similaridade (cosine, euclidean, dotproduct) |
aVectors | Array | {} | Vetores de embedding em cache |
| Metodo | Parametros | Descricao |
|---|---|---|
:Embed( cText ) | String | Gerar embedding para texto, retorna array |
:Similarity( aVec1, aVec2 ) | Arrays | Calcular similaridade entre vetores |
:Index( cText, cId ) | Strings | Adicionar texto ao indice vetorial com ID |
:Search( cQuery, nTop ) | String, Numero | Pesquisar vetores indexados, retorna top N |
| Evento | Descricao |
|---|---|
OnEmbed | Embedding gerado (com array de vetor) |
OnSearch | Resultados da pesquisa recebidos (com similaridades) |
OnError | Ocorreu erro no embedding |
oEmb := TEmbeddings():New() oEmb:cModel := "text-embedding-ada-002" // Indexar alguns documentos oEmb:Index( "HarbourBuilder e um IDE visual", "doc1" ) oEmb:Index( "Linguagem xBase para apps de banco de dados", "doc2" ) // Pesquisar oEmb:OnSearch := { |aResults| ShowResults( aResults ) } oEmb:Search( "ambiente de desenvolvimento visual", 5 )
Use o TEmbeddings para construir um motor de busca semantica: indexe seus documentos, depois pesquise por significado em vez de palavras-chave. Perfeito para bases de conhecimento e FAQs.