Personalizar gráficos no Snowflake Intelligence¶
O Snowflake Intelligence gera gráficos automaticamente a partir dos seus dados. É possível personalizar esses gráficos, controlando cores, fontes, tipos de gráfico e muito mais, adicionando configurações ao seu agente ou exibição semântica.
Visão geral¶
A personalização funciona em dois níveis:
Nível do agente: Aplica-se a todos os gráficos em todas as exibições semânticas associadas ao agente. Use este para padrões globais, como cores e fontes da marca.
Nível da exibição semântica: Aplica-se somente aos gráficos gerados a partir dessa exibição semântica específica. Use este para regras específicas de coluna e preferências de tipo de gráfico específicas do domínio.
Em cada nível, dois mecanismos estão disponíveis:
vega_template: Uma especificação JSON do`Vega-Lite <https://vega.github.io/vega-lite/>`_ parcial que é mesclada deterministicamente em todos os gráficos gerados. Use isso para tudo o que deve sempre ser aplicado.
Instruções em texto livre: Orientações em linguagem natural inseridas no prompt de geração do gráfico. OLLM se esforça ao máximo para segui-las, mas não há garantia de que elas serão seguidas.
Nota
Quando o agente e a exibição semântica definem um vega_template, o modelo do agente é aplicado primeiro, e o da exibição semântica é aplicado em segundo lugar. Em caso de chaves conflitantes, a exibição semântica prevalece.
Personalização no nível do agente¶
Adicione um bloco <chart_customization> dentro de instructions.orchestration na configuração do seu agente. Você pode combinar temas de fonte e uma paleta padrão global:
Use o nível do agente para:
Paleta de cores da marca
Tema visual padrão (fontes, plano de fundo)
Preferências de estilo entre domínios
Padrões de formatação de números ou moedas
Evite mapeamentos de cores específicos de coluna no nível do agente. Os nomes das colunas diferem entre as exibições semânticas e são ignorados silenciosamente quando não encontrados.
Personalização no nível da exibição semântica¶
Adicione um bloco <chart_customization> dentro do campo module_custom_instructions.sql_generation do seu arquivo YAML de exibição semântica. Esse campo tem precedência sobre o campo custom_instructions legado quando ambos estão definidos.
Use o nível da exibição semântica para:
Mapeamentos de cores por coluna
Regras de tipo de gráfico específicas do domínio
Formatação específica da métrica
Substituição de padrões no nível do agente
Use com cautela: os modelos afetam todos os gráficos¶
vega_template é mesclado em todos os gráficos gerados nesse nível. Não há filtragem por pergunta ou por tipo de gráfico. Se você adicionar uma substituição encoding.y no nível do agente, ela se aplicará a gráficos de barras, gráficos de linhas, gráficos de dispersão e gráficos de pizza.
Antes de adicionar um modelo, considere:
Escopo: Os modelos no nível do agente afetam todos os gráficos em todas as exibições semânticas. Prefira o nível de exibição semântica quando uma regra for específica para um domínio ou conjunto de dados.
Codificações curinga: Uma codificação de modelo que omite
field(por exemplo,"y": {"axis": {"format": "..."}}) se aplica ao eixoyde todos os gráficos, independentemente da coluna plotada. Usefieldpara fixá-lo a uma coluna específica quando a exibição semântica for conhecida.Substituições de marca: Definir
"mark": "line"no nível do agente força todos os gráficos a serem uma linha, incluindo aqueles em que o LLM escolheria corretamente um gráfico de barras ou de pizza. Substituamarkapenas no nível da exibição semântica em que você tem conhecimento de domínio sobre os dados.Matrizes de transformação: Uma transformação
calculateno modelo (por exemplo,_color) é injetada na matriztransformde cada gráfico. Se os dados não contiverem a coluna referenciada, o Vega-Lite produz silenciosamente valoresnullpara o campo calculado.
Em caso de dúvida, comece no nível da exibição semântica e promova para o nível do agente somente após confirmar que a regra é segura para todos os gráficos.
Para validar um modelo antes de implantá-lo, cole uma especificação de gráfico representativa (com seu vega_template já mesclado) no Vega Editor. O editor exibe avisos e erros em tempo real no console. Um modelo válido não deve gerar avisos. Problemas comuns detectados dessa forma: nomes de propriedades inválidos, incompatibilidades de tipo, expressões calculate inacessíveis e erros de configuração de escala.
Fontes¶
As configurações de fonte são controladas pelo bloco config em vega_template. Todas as propriedades de fonte são aplicadas globalmente ao gráfico e afetam todos os gráficos gerados, independentemente dos dados.
Nota
Use famílias de fontes genéricas CSS para obter máxima compatibilidade. Os gráficos no Snowflake Intelligence são renderizados em dois contextos: na UI de navegador do Snowsight (lado do cliente, as fontes dependem do OS e do navegador do usuário) e no lado do servidor em um contêiner Linux para validação e exportação de imagens. Fontes nomeadas como Arial ou Georgia podem não estar instaladas no contêiner do lado do servidor. As famílias genéricas CSS sempre são resolvidas corretamente em ambos os contextos:
Família genérica |
Resolve como |
|---|---|
|
Arial (Windows/macOS), DejaVu Sans ou Liberation Sans (Linux) |
|
Times New Roman (Windows/macOS), DejaVu Serif ou Liberation Serif (Linux) |
|
Courier New (Windows/macOS), DejaVu Sans Mono ou Liberation Mono (Linux) |
Se você precisa de uma fonte de marca personalizada, ela deve ser instalada no contêiner de renderização do lado do servidor e servida por meio de CSS @font-face no Snowsight.
Propriedades comuns da fonte config:
Propriedade |
Onde se aplica |
|---|---|
|
Título do gráfico |
|
Rótulos de marcação dos eixos |
|
Títulos dos eixos (por exemplo, «Receita») |
|
Cabeçalhos de múltiplos pequenos/facetas |
|
Rótulos dos valores da legenda |
|
Título da legenda |
|
Marcas de texto (anotações) |
Você também pode definir uma cor background global junto com as fontes:
Cores¶
Instruções do LLM (flexíveis)¶
A maneira mais simples de aplicar regras de cores é descrevê-las em texto livre. O LLM interpreta essas instruções da melhor maneira possível.
Use isso para obter orientações rápidas e aproximadas sobre cores quando valores hexadecimais exatos não forem necessários.
Mapeamento de valores exatos com _color¶
Mapeie valores de colunas específicos para cores hexadecimais exatas usando uma transformação calculate. Valores não listados recebem uma cadeia de caracteres vazia, e o Vega-Lite os renderiza com o próprio valor padrão.
Use isso quando precisar de cores exatas e garantidas para cada valor conhecido.
Nota
A transformação _color e o bloco encoding.color são sempre mesclados no gráfico, independentemente da coluna escolhida pelo LLM para colorir. Isso significa:
O mapeamento só funciona corretamente quando o canal de cor do gráfico usa a mesma coluna referenciada na expressão
calculate(por exemplo,STATUS). Se o LLM atribuir cor a uma coluna diferente, o campo_colorestará presente nos dados, mas as cores não corresponderão.Apenas uma coluna pode ser selecionada por modelo.
Valores fixados com fallback de paleta¶
Fixe cores para valores-chave e deixe que o restante seja atribuído automaticamente a partir de uma paleta. Use "merge": "extend" para preservar as escolhas de cores existentes do LLM e adicione apenas novos mapeamentos.
Os valores de dados que não estão em domain recebem automaticamente a próxima cor disponível de scheme. Após a designação, scheme é removido da especificação final.
Nomes de esquemas compatíveis: tableau10, tableau20, category10, category20, category20b, category20c, dark2, paired, pastel1, pastel2, set1, set2, set3, accent.
Desativando o estilo do Snowsight¶
Por padrão, o Snowflake Intelligence aplica ajustes de tema da UI do Snowsight sobre o gráfico gerado. Para desativar e renderizar o gráfico exatamente como especificado em vega_template, defina ui-merge como "none" em usermeta:
Isso é útil quando você deseja controle completo sobre a saída visual, por exemplo, ao aplicar um tema de marca personalizado, e não deseja que o Snowsight substitua cores, fontes ou planos de fundo.
Nota
ui-merge é interpretado pelo renderizador do lado do cliente do Snowsight, não pelo back-end do orquestrador. Isso não tem efeito sobre a especificação do gráfico produzida pelo mecanismo de mesclagem. Isso controla apenas como o Snowsight aplica o próprio tema sobre a especificação final ao exibir o gráfico no navegador.
Formatação de números e moedas (experimental)¶
É possível formatar os rótulos dos eixos e das legendas usando ` cadeias de caracteres de formato D3 <https://d3js.org/d3-format>`_ por meio de vega_template. Isso é útil para garantir a consistência dos símbolos de moeda, casas decimais ou sufixos SI em todos os gráficos.
Defina axis.format para eixos quantitativos (x, y) e legend.format para legendas de cor/tamanho:
Nota
axis.format é aplicado pelo Vega-Lite somente quando o tipo de dados do canal é "quantitative". Se o LLM inferir um tipo diferente (por exemplo, "ordinal" para um ano ou ID de coluna), a cadeia de caracteres de formato será ignorada silenciosamente. Essa é uma limitação aceita da abordagem do vega_template, pois a mesclagem é aplicada sem inspecionar os tipos inferidos.
Solução alternativa: Force o tipo explicitamente no modelo (modo override):
Isso garante que o formato seja aplicado, mas pode afetar outras renderizações dependentes do tipo (marcações dos eixos, agrupamento).
Cadeias de caracteres de formato D3 comuns:
Formato |
Exemplo de saída |
Use para |
|---|---|---|
|
$1,234,567 |
Valores em dólares, sem decimais |
|
$1,234,567.89 |
Valores em dólares, com 2 decimais |
|
1,234,567 |
Números inteiros grandes com separador de milhares |
|
42.3% |
Porcentagens |
|
1.2M |
Números grandes com prefixo SI |
|
3.14 |
2 casas decimais fixas |
Para aplicar a formatação a todos os canais quantitativos no nível do agente (sem saber o nome específico da coluna):
Use "merge": "extend" para que o formato seja adicionado apenas aos canais que o LLM já preencheu, sem sobrescrever as configurações de field ou type.
Modos de mesclagem¶
Controle como o vega_template interage com o gráfico gerado pelo LLM definindo "usermeta": {"merge": "<mode>"} dentro do modelo.
Modo |
Comportamento |
|---|---|
|
Os valores do modelo sobrescrevem o gráfico. Use quando precisar impor uma configuração específica. |
|
Os valores existentes do gráfico são preservados. Novas chaves e entradas de escala adicionais são inseridas. Use quando quiser adicionar ao gráfico sem substituir o que o LLM escolheu. |
Regras que se aplicam a ambos os modos:
O bloco
datanunca é sobrescrito.As substituições de codificação se aplicam somente quando o
fielddo modelo corresponde aofielddo gráfico ou o modelo omite ofield.Após a mesclagem, as entradas de domínio não presentes nos dados reais são removidas automaticamente.
Exemplo: forçar um gráfico de linhas