FLINTERS Engineer's Blog

FLINTERSのエンジニアによる技術ブログ

人間がごちゃごちゃ話した結果を AI にまとめてもらう

こんにちは河内です。 世間では ChatGPT や新しい bing が大人気ですね! 私もとてもワクワクしながら日々楽しんでいます。

ここ最近は ChatGPT を始めとする LLM (Large Langage Model、大規模言語モデル) のアプリケーション活用がすごい勢いで進んでいます。 まさに日進月歩という言葉がふさわしいでしょう。

LLM の有効な活用方法のひとつとして、文章要約があります。 我々人間はついつい長い文章を書いてしまいますが、読む側にとってはダラダラと長い文章は苦痛です。 そんなときは LLM にまとめてもらいましょう! 今回は、長々と続いてしまったSlackのスレッドをまとめる slack bot を作ってみました。

プロンプトは あなたの仕事が劇的に変わる!? チャットAI使いこなし最前線 - YouTube の動画で教えてもらったものを少しだけ変更して次のようにしています。

# 命令書:
あなたはプロの編集者です。
以下の制約条件と入力文をもとに、最高の要約を出力してください。

# 制約条件:
・文字数は300文字程度。
・小学生にもわかりやすく完結に。
・重要なキーワードを取り残さない。
・ときにユーモアを交える。

# 入力文:

${text}

# 出力文:

「入力文」のところには、slack の API を使ってスレッドの書き込みを読み込んで並べます*1。 Prompt が完成したら、OpenAI の API を呼び出します。 Slack との接続は長くなるので省略しますが、OpenAI API 呼び出し部はJavaScript 用のライブラリが用意されているので、たったこれだけです。

const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

const response = await openai.createCompletion({
        model,
        prompt,
        temperature: 0.7,
        max_tokens: 400,
        top_p: 1,
        frequency_penalty: 0,
        presence_penalty: 0,
});

実際に試してみると、なかなか良い感じのまとめをしてくれます。 まとめの質がわるいなと思ったときには、プロンプトを調整してあげることで出力をコントロールできます。

今使っているプロンプトは「ときにユーモアを交える」というのが効いているのか、terraform の state がおかしくなってなんとか解消までこぎつけたスレッドをまとめてもらったときに

「とりあえずapplyしてみる」なんて勇気がいるよね!

と煽ってきたりします。お茶目ですね!

今回は slack のスレッドをまとめてもらいましたが、Jira チケットの内容からタイトルをつけてもらうなどもきっと得意だと思います。

まとめ

それではここまでの内容を OpenAI API にまとめてもらいましょう (以下は実際に上の文章を入力して得られた出力です)。

LLM の文章要約は、長くなりがちな文章をスマートにまとめてくれる便利なツールです。今回は、slack botを使ってスレッド内容をまとめる実験をしました。プロンプトを変更することで、terraform の state がおかしくなったときには煽ってくれるなど、ときにユーモアを交えたまとめをしてくれることが確認できました。Jira チケットの内容からタイトルをつけてもらうなど、活用範囲は様々。LLM はまだまだ便利な使い方が見つかるでしょう!

*1:実際にはトークン数制限があるので、あまりに長いスレッドは対応できていません。分割して要約し、要約の要約をつくればいけると思いますが。