Open7
Shopify SidekickのストリーミングでのMarkdownレンダリング
以下記事
Sidekickはこういうの
Markdownが完成するまで生のテキストでレンダリングするのをどう防いでいるかについての記事
Markdown要素の終わりを示すシーケンスに遭遇するまで変換が出来ない
Markdown表現の候補となるシーケンスに遭遇するたびに文字をバッファリングした。
- The parser encounters an unexpected character
- バッファをフラッシュし、シーケンス全体を生のテキストとしてレンダリングします。
- The full Markdown element is complete
- バッファのコンテンツを1つのMarkdown要素シーケンスとしてレンダリング
Typescriptのリファレンス実装も載っている
Async content resolution and multiplexing
We’ve made a tweak to break the tool invocation and output generation out of the main LLM response, to let the initial LLM roundtrip directly respond to the user, with placeholders that get asynchronously populated:
メインのレスポンスと非同期で表示されるプレースホルダー
Server-Sent Eventsを使う
Markdown, as a means of transporting structure, beats JSON and YAML in token counts.
Markdown推し