Referência
Principais propriedades & métodos
Os membros que você usa com mais frequência.
Um provedor precisa das units de IA da edição Enterprise ou All-Access, ou do pacote sgcAI, e elas são somente Windows. O parser embutido responde em todas as plataformas, sem provedor. A unit compila quando SGC_HTML está definido, o que o sgcVer.inc não faz para Android e iOS, e o sgcHTML é um pacote autônomo, vendido de forma independente do sgcWebSockets.
Onde atribuí-lo
AIAssistant existe em TsgcHTMLComponent_Grid, TsgcHTMLComponent_DataTable, TsgcHTMLComponent_PivotTable, TsgcHTMLComponent_Form e TsgcHTMLComponent_InlineAIPrompt. AIQueryEnabled existe no grid, na tabela de dados e no pivot: ele renderiza a barra de consulta, o chip de interpretação e o controle de limpeza. O formulário não tem AIQueryEnabled, ele usa o assistente para a colagem inteligente, e o InlineAIPrompt o usa para a sua resposta. Enquanto nenhum assistente estiver atribuído, um grid não renderiza nenhum markup de IA.
O que sai da máquina
Uma pergunta de grid ou pivot envia os nomes das colunas, os títulos, os tipos e até três valores de exemplo por coluna, cada um cortado em 40 caracteres. Nada além disso, independentemente da permissão. As linhas só saem pelas chamadas que tratam de linhas, e somente quando AllowRowDataToProvider é True, o que não é o padrão: SuggestColumnValues e Summarize então devolvem False e não enviam nada, e MaxRows limita o que elas podem carregar. A colagem inteligente envia o texto que uma pessoa colou e o nome, o rótulo e o tipo de cada campo, e nenhum valor do formulário.
A validação é a fronteira
Tudo o que um provedor devolve é tratado como texto hostil. Todo nome de coluna precisa corresponder à sua lista de permissões, pelo nome exato e sem distinção de maiúsculas e minúsculas. Todo operador precisa ser um dos 13 de TsgcHTMLAIOperator, todo agregado um entre sum, count, avg, min e max, e todo valor é convertido pelo tipo da sua coluna: um valor que não converte descarta a operação inteira. Um estilo de destaque precisa ser um entre primary, secondary, success, danger, warning, info, light ou dark. Os limites são ajustados a MaxLimit, há no máximo 32 filtros, 32 ordenações e 32 destaques, os caracteres de controle são removidos, e tudo o que for desconhecido é descartado em silêncio. Se nada sobreviver, o conjunto inteiro é limpo, inclusive a explicação. Uma prompt injection produz um conjunto vazio ou parcial, nunca uma exceção.
O modelo de operações
TsgcHTMLGridOps guarda Filters, Sorts, Highlights, GroupBy, Limit e Explanation. TsgcHTMLPivotOps guarda Rows, Columns, Measure, Aggregate e Explanation. TsgcHTMLAIColumns é a lista de permissões: Add(aName, aDataType, aCaption) para cada coluna, com AddSample para os exemplos. As duas classes de operações oferecem IsEmpty, ToText e ToJSON, e FromJSON é a fronteira completa somente quando você passa as colunas, então revalide tudo o que for lido de volta de um navegador contra a lista de permissões ativa.
Escolhendo um provedor
Provider é um entre aiprOpenAI (o padrão), aiprAnthropic, aiprGemini, aiprDeepSeek, aiprOllama, aiprGrok e aiprMistral, os sete de TsgcAIChatProvider em sgcAI_Chat. Defina APIKey ou BaseUrl e o assistente passa a ter um TsgcAI_Chat próprio, configurado a partir de Provider, APIKey, Model (vazio mantém o padrão do chat) e BaseUrl. Ou atribua o seu próprio componente de chat a Chat, que só é declarado onde as units de IA são compiladas. Cada chamada pede uma saída estruturada que segue um esquema JSON, e o seu chat é restaurado depois. HasProvider informa em qual caso você está.
Fallback baseado em regras
Sem um provedor, o assistente responde com o seu próprio parser, e UseRuleBasedFallback (ativado por padrão) permite que ele responda também a uma chamada de provedor que falhou. Ele lê cláusulas da forma coluna operador valor unidas por and ou por uma vírgula, além de sort by, group by, top N, between A and B e highlight, e, para um pivot, as linhas, as colunas e o agregado. Aceita as grafias usuais em inglês de cada operador e qualquer um dos separadores decimais. Uma pergunta que ele não entende não produz nenhuma operação e a página mantém as suas linhas. SuggestColumnValues e Summarize não têm fallback.
SmartPaste(aText, aFields, aValues) mapeia o texto colado para um conjunto de campos. Defina SmartPasteEnabled em TsgcHTMLComponent_Form e ele renderiza uma zona de colagem; ProcessSmartPaste(aText) entrega o texto ao assistente, escreve o que voltou nos campos pelo nome e os marca como preenchidos por IA, com um pequeno badge no rótulo. O parser baseado em regras a atende sem provedor, e as quebras de linha sobrevivem à viagem até o servidor.
Assistente de coluna
SuggestColumnValues(aPrompt, aRows, aValues) aciona o assistente de coluna do grid. Uma coluna cujo AIMode não é acOff renderiza um controle de sugestão, ProcessAIColumnValues(aColumnName) pede um valor por linha visível em uma única chamada, e as respostas viram AIProposals com um controle Accept e um Reject. A biblioteca não escreve nada: uma proposta aceita dispara OnAIColumnValues e a sua aplicação a persiste. A chamada envia linhas, então exige um provedor e AllowRowDataToProvider ligado.
Configurações e eventos de resposta
Language define o idioma do texto livre, e vazio significa a localidade da requisição. CacheMinutes (5) responde uma pergunta idêntica sobre um conjunto de colunas idêntico a partir do cache, e ClearCache o esvazia. MaxLimit (1000) não pode ser elevado acima de 1000. OnBeforeQuery(Sender, aPrompt, aAllow) vê o prompt inteiro antes de cada chamada ao provedor e a bloqueia quando você define aAllow como False. Nenhum método levanta exceção: uma falha do provedor chega a OnAIError(Sender, E, aHandled).
Contrato do host
Não há rota HTTP. Cada controle é um formulário data-sgc-ws-send e a sua aplicação despacha por action: gridAIQuery, gridAIClear, gridAIColumn, gridAIAccept, gridAIReject, pivotAIQuery, pivotAIClear, formSmartPaste e as quatro ações do prompt inline. Responda com o componente renderizado de novo como um fragmento out of band. Um conjunto de componentes é um usuário, então use um por sessão, e mantenha no servidor a autorização do que uma ação faz.