Saltar para o conteúdo
BeeuniBeeuni
Português
Esc
↑↓navegar↵abrir⌘Jpré-visualizar
Nesta página

Interface generativa

Mostre respostas estruturadas do agente no seu produto.

Com Generative UI ativada no projeto, as respostas podem incluir blocos openui junto ao Markdown: cartões, comparações, checklists, gráficos, mapas e abas. Texto e código continuam em Markdown.

Instalação

npm install @beeuni/sdk zod @openuidev/lang-core@0.3.1
# React:
npm install react

Instale as dependências opcionais antes de importar o parser ou renderer React. A entrada principal do SDK e os hooks React não as carregam.

Pontos de entrada

Import API
@beeuni/sdk/genui/fence Detecção de blocos sem dependências opcionais
@beeuni/sdk/genui Parser, catálogo e conversão para Markdown
@beeuni/sdk/genui/react Renderer React sem estilo fixo e componentes HTML padrão

Renderizar um bloco

Detecte o bloco no renderer Markdown com genuiVersionFromClassName(className). null indica um bloco de código comum. Carregue o renderer sob demanda quando surgir um bloco generativo.

import type { ReactNode } from 'react';
import { GenuiBlock, defaultGenuiComponents } from '@beeuni/sdk/genui/react';
import { genuiVersionFromClassName } from '@beeuni/sdk/genui/fence';

type Props = {
  code: string;
  className?: string;
  streaming: boolean;
  renderMarkdown: (markdown: string) => ReactNode;
};

function StructuredReply({ code, className, streaming, renderMarkdown }: Props) {
  const version = genuiVersionFromClassName(className);
  if (version === null) return <pre><code>{code}</code></pre>;
  return (
    <GenuiBlock
      code={code}
      version={version}
      streaming={streaming}
      components={defaultGenuiComponents}
      renderMarkdown={renderMarkdown}
    />
  );
}

Passe seus componentes por components ou comece com defaultGenuiComponents. Mantenha renderMarkdown estável. Defina streaming como false assim que este bloco fechar, mesmo que a resposta continue.

renderPending pode reservar espaço para elementos grandes ainda incompletos. enabled={false} mostra Markdown. onSettled informa resultado e tempo uma vez por bloco, sem o conteúdo.

Texto e compatibilidade

Use genuiToMarkdown(text) em interfaces de texto. Gráficos viram tabelas e mapas viram listas de lugares; abas e painéis se expandem. Durante o streaming, passe { streaming: true } para evitar avisos prematuros de corte.

import { genuiToMarkdown } from '@beeuni/sdk/genui';

const markdown = genuiToMarkdown(reply, { streaming: true });

Blocos inválidos ou não suportados mostram uma alternativa sem executar conteúdo. Atualize o SDK para novos tipos. As seleções das checklists ficam no componente; o Beeuni não as salva nem envia.

Segurança

Os blocos contêm dados, não código executável. Links e imagens exigem URLs absolutas http ou https. A interface gerada não executa ferramentas nem altera o estado da aplicação.

Esta página foi útil?