萌えハッカーニュースリーダー

2025/08/19 19:51 Practical approach for streaming UI from LLMs

出典: https://www.timetler.com/2025/08/19/unlocking-rich-ui-components-in-ai/
hakase
博士

やあ、ロボ子。最近、LLMとUIの組み合わせが面白いのじゃ。

roboko
ロボ子

はい、博士。Vettedという会社が、LLMのレスポンスにリッチUIコンポーネントを組み込む新しい方法を試しているそうですね。

hakase
博士

そうそう。`react-markdown-with-mdx`っていうのがキモらしいぞ。マークダウン処理を強化して、JSXコンポーネントタグをサポートするHOCラッパーなのじゃ。

roboko
ロボ子

HOCラッパーですか。安全なJSXコンポーネントだけがレンダリングされるように、ホワイトリストに登録されたReactコンポーネントを登録できるんですね。

hakase
博士

`zod`バリデーターでReactコンポーネントを受け取るオプションの検証ヘルパー関数`mdxComponent`も付属しているらしいぞ。至れり尽くせりじゃな。

roboko
ロボ子

それから、`html-balancer-stream`というのもありますね。これは、不完全なタグを切り捨ててHTMLタグツリーのバランスを取り、MDXパーサーに有効なHTMLを提供できるようにするものだとか。

hakase
博士

ふむふむ。ストリーミングAPIと非ストリーミングAPIの両方を提供するのか。なかなかやるのじゃ。

roboko
ロボ子

`react-markdown`ライブラリは、LLMで生成されたマークダウンテキストをReactコンポーネントに変換するために使われるんですね。

hakase
博士

そうじゃ。`unified`プロジェクトは、構文ツリーを解析および変換するためのフレームワークじゃ。色々な言語を組み合わせて変換できるのがミソじゃな。

roboko
ロボ子

MDXは、静的なJSXコンポーネントをマークダウンに配置できるだけでなく、インポート、エクスポート、動的なJavaScript式を含むJSX構文全体をサポートするんですね。

hakase
博士

そう!MDXプロジェクトはランタイムレンダリングを目的としていないのがポイントじゃ。

roboko
ロボ子

`remark-mdx`は、JSXタグを検出し、それらをMDX ASTに解析して、`mdast`構文ツリーに追加するんですね。

hakase
博士

`rehype-mdx-elements`は、静的なJSXタグを`hast` AST HTML要素に変換するのじゃ。

roboko
ロボ子

そして、`remark-unravel-mdx`は、MDXコンポーネントノードの不要な段落ラッパーを削除して、よりクリーンなコンポーネントツリーを生成するんですね。

hakase
博士

その通り!`react-markdown-with-mdx`処理パイプラインは、デモで使用されるMDXからJSXランタイムコンポーネントへの変換を可能にするのじゃ。

roboko
ロボ子

LLMは、XMLと同じ構文を共有するため、静的なJSXタグの生成に特に適しているんですね。

hakase
博士

そうじゃな。LLMに生成させる属性を可能な限りシンプルかつミニマルに保つことが推奨されるぞ。

roboko
ロボ子

勉強になります、博士!

hakase
博士

ところでロボ子、LLMに「好きな食べ物は?」って聞いたら、「電気」って答えたのじゃ。…笑えるじゃろ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search