< back

Summary by AI 機能をブログに実装した

"Summary by AI" 機能をブログに実装した。Large Language Model (LLM) の実験としての意味合いが強い。

技術としては、Cloudflare Workers AI をデプロイして、HTTP リクエストで結果を取得している。モデルとしては Meta が開発している Llama2 で、パラメータ数は 7 Billion。執筆時点では @cf/meta/llama-2-7b-chat-fp16 を利用している。Gatsby を利用しており、ブログページをビルドする際に取得できる Markdown ファイルの中身を渡している。長文の日本語記事の場合にはうまく動かないが、Cloudflare Workers AI がベータ版ということでしょうがない。

試行錯誤の末、Large Language Model に渡しているプロンプトは以下の通り。

{
  role: 'user',
  content: `
    This is a blog post in raw markdown format: ${reqBody}.
    Summarize this post as concise as possible.
    You must limit responses to 5 sentences or less.
  `
},

このプロントに辿り着くまでが曲者で、Prompt Engineering とはよくいったものだ。基本 Llama2 の内部構造はブラックボックスなので、上手くいくプロンプトを試行錯誤していく必要がある。経験則(ヒューリスティック)を紡ぎ出していくまさにその過程だ。バグの原因を完全に特定した上で解決策を実装するプログラミングの世界とは、また別の世界観である。中身がブラックボックスであることを前提に、実践を通じてより良い答えを探していく。「完璧な答え」という明確な到達点があるのではない点も興味深い。「前回の出力より良さそう」という客観的価値観に基づいてモデルを評価する。これでは人間の認知バイアスの入り込む隙間が大いにあるのではないか、という懸念を抱かざるを得ない。

November 20, 2023

Recommended

  1. Semantic Search をブログに実装した

    Semantic Search をブログに実装した。VectorDB (Pinecone) の実験としての意味合いが強い。 技術構成を紹介する。まずはインデックスの更新フローについて。Markdown ファイルで入稿したブログ記事から、Gatsby でビルド時にメタデータを抽出する。メタデータとしては、記事の URL…
  2. "読む"に集中できるブログにするために

    このブログでは、技術ネタから日常のエッセイまで、幅広いトピックを執筆している。読者の方にとって新しい気づきや発見がある、斜め上からの独自の考察を含んだ、知識を与えるだけではない文章を発信し続けていきたい。そして、その文章を読んで、立ち止まって考えたり、批判したり議論したりしながら、読者と一緒に成長していける書き手であ…
  3. 個人ブログを支える技術 2023 年版

    最近、立て続けにこの個人ブログ (kenwagatsuma.com) のリファクタリングやアップデートを行った。その備忘録。 基本戦略としては "Simple is the best"。長年開発してきて積もり積もった技術負債や不要な要件をバッサリ切り落とした。 Cloudflare Pages への移行 一番大きい変…