konoka-iori / gemini-discord-bot

Gemini APIを使った簡易的なDiscordのチャットボット
5 stars 2 forks source link

要約機能の実装 #18

Open konoka-iori opened 7 months ago

konoka-iori commented 7 months ago

概要

すでに投稿されたメッセージをGeminiを使って要約する機能。

2 をベースに少し応用するだけで実装できると思われる。

コンテキストメニューとして機能を実装する。 コンテキストメニューの名前は Summarize the message using Gemini を予定。

目的

長文のメッセージをサクッとDiscord内で要約したい。

影響範囲

bot.py に新しいコンテキストメニューを追加する必要がある。 chat.pysystem_instruction に対応させる必要がある。 必要に応じて model.json にプロンプトを追加する必要があるかも。

タスク

konoka-iori commented 6 months ago

context menu names must be between 1-32 characters と言われてしまったのでコンテキストメニューを Summarize the message に変更

konoka-iori commented 6 months ago

Discord APIの仕様上厳しいかも。 コンテキストメニューだと元のメッセージ情報(作成者や作成日時など)が取得できないため、BOT側からはコマンドの使用者が「どのメッセージに対して Gemini replies to message を実行したのか」がわからない。

Summarize the message では元のメッセージがどれかにより( Gemini replies to message よりも)注目したいので、原文のメッセージリンクをEmbed等に含めたいのだが、コンテキストメニューだと原文のメッセージリンクを取得できない。

例えば、ユーザーAが「こんにちは」というメッセージを送信していたとして、ユーザーBが「こんにちは」に対して Gemini replies to message を使用すると、「こんにちは」という元のメッセージ情報がBOT側から見えず、ユーザーBがBOTに対して「こんにちは」と送信しているように見える。

Gemini replies to messageSummarize the message も、既存のメッセージ内容を取得してGemini APIに投げるものであるが、すでに実装している Gemini replies to message の挙動をよく見ると、BOTはAPIから既存のメッセージ情報を受け取っているのではなく、コマンドの使用者が既存のメッセージの内容をコピペしてBOTに投げてるというふるまいをしているみたい。

うーん、説明がむずかしい 🤔