Aller au contenu
BeeuniBeeuni
Français
Esc
↑↓naviguer↵ouvrir⌘Japerçu
Sur cette page

Interface générative

Affichez les réponses structurées de l’agent dans votre produit.

Avec Generative UI activée dans le projet, les réponses peuvent inclure des blocs openui dans le Markdown : cartes, comparaisons, listes à cocher, graphiques, plans et onglets. Le texte et le code restent en Markdown.

Installation

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

Installez les dépendances facultatives avant d’importer le parseur ou le moteur React. L’entrée principale du SDK et les hooks React ne les chargent pas.

Points d’entrée

Import API
@beeuni/sdk/genui/fence Détection des blocs sans dépendances facultatives
@beeuni/sdk/genui Parseur, catalogue et conversion Markdown
@beeuni/sdk/genui/react Moteur React sans style imposé et composants HTML par défaut

Afficher un bloc

Détectez le bloc dans votre moteur Markdown avec genuiVersionFromClassName(className). null indique un bloc de code ordinaire. Chargez le moteur à la demande lorsqu’un bloc génératif apparaît.

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}
    />
  );
}

Passez vos composants dans components, ou commencez avec defaultGenuiComponents. Gardez renderMarkdown stable. Mettez streaming à false dès la fermeture de ce bloc, même si la réponse continue.

renderPending peut réserver de l’espace pour les grands éléments inachevés. enabled={false} affiche du Markdown. onSettled rapporte le résultat et la durée une fois par bloc, sans son contenu.

Texte et compatibilité

Utilisez genuiToMarkdown(text) pour une interface textuelle. Les graphiques deviennent des tableaux et les cartes des listes de lieux ; onglets et accordéons se déplient. Pendant le streaming, passez { streaming: true } pour éviter un avis de coupure prématuré.

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

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

Les blocs invalides ou inconnus affichent un contenu de remplacement sans rien exécuter. Mettez le SDK à jour pour les nouveaux types. Les cases cochées restent dans le composant ; Beeuni ne les enregistre ni ne les envoie.

Sécurité

Les blocs contiennent des données, pas du code exécutable. Les liens et images exigent des URL absolues http ou https. L’interface générée ne peut ni exécuter d’outils ni modifier l’état de l’application.

Cette page vous a-t-elle été utile ?