Skip to content

Instantly share code, notes, and snippets.

@ryogrid
Created May 17, 2025 22:50
Show Gist options
  • Save ryogrid/b900f8bb08921a7e749172560f246d82 to your computer and use it in GitHub Desktop.
Save ryogrid/b900f8bb08921a7e749172560f246d82 to your computer and use it in GitHub Desktop.
Slackログの前処理(ボリューム削減)に使った関数抜粋
def basic_filter_message(username, message_text):
if not message_text or len(message_text) < 8: return False
patterns = [r"^(はい|ええ|うん|OK|了解|承知しました|わかりました|なるほど)$", r"^(ありがとうございます|ありがとう|どうも)$",
r"^(お疲れ様です|おつかれさまです)$", r"^(お願いします|よろしくお願いいたします|よろしくです)$",
r"^(笑|w+|草)$", r"^\s*(スタンプ)\s*$", r"^そうですね$|^ですねー$|^たしかに$"]
for p in patterns:
if re.fullmatch(p, message_text, re.IGNORECASE): return False
return True
# --- プロンプト作成関数 ---
def create_prompt_for_gemini_rag_optimization(chunk_log_data_str, target_reduction_factor_for_prompt):
target_percentage = int(target_reduction_factor_for_prompt * 100)
full_prompt_instructions = """
1. **情報価値の高い発言を優先的に残してください。** 例えば以下のようなものです。
* **技術・ビジネス関連:** 新しい技術、ツール、サービス、専門用語に関する言及や説明、具体的な使用感や評価の共有。ビジネス戦略、市場トレンド、プロジェクトに関する具体的な議論、問題提起、提案、決定事項。
* **知識・ニュース共有:** 共有された記事、ニュース、ブログ、イベントなどの主要な内容、そこから得られる洞察や意見。
* **各ユーザに関する情報:** チャットに参加しているメンバーに関する情報や、その類推に資する内容
* **個人的経験・意見で有益なもの:**
* 特定の課題や状況に対する個人的な成功体験、失敗談、そこから得た教訓やノウハウ。
* おすすめの書籍、ツール、学習方法、リソース、ライフハックなど、他者にも役立つ可能性のある個人的な発見や推薦。
* 特定の事柄に対する個人的な意見や考え方で、議論を深めたり、多様な視点を提供したりするもの。
* チームメンバーのスキルセット、関心事、過去のプロジェクト経験など、今後の協力関係構築やタスク分担に役立ちそうな情報。
* **質問と回答:** 具体的な質問に対して、明確で有用な情報やアドバイスが提供されている箇所。
2. **以下の種類の情報は、その情報が将来的な価値を持つか慎重に評価し、価値が低いと判断される場合に削除または簡略化してください。**
* 単なる挨拶、短い相槌や同意のみの返事 (例: 「はい」「了解です」「確かに」)。ただし、重要な意思決定に対する同意などは文脈を考慮して残す場合があります。
* 内容の薄い感謝の言葉 (例: 「ありがとうございます」のみ)。具体的なフィードバックや次のアクションに繋がる感謝は残す価値があります。
* 感情的なリアクションのみの短い発言 (例: 「すごい!」「笑」「わかるー」)。スタンプや絵文字のみの反応も同様。
* 会話の本筋から大きく逸れ、一時的で他者にとって将来的な参照価値が低いと判断される個人的なやり取りや近況報告。
* 冗長な言い回しや、既に明確に述べられた内容の不必要な繰り返し。
* 他の情報源(URLなど)を参照すれば容易にわかる詳細情報で、本文中に再現する必要性が低いもの(URL自体は残しても良い)。
3. **出力形式:**
* 元の「<ユーザ名>,<発言内容>」の形式を維持してください。各行が一つの発言に対応します。
* ユーザ名は変更しないでください。発言内容のみを編集・削除の対象とします。
* 会話の流れや文脈が、重要な情報(個人的なものも含む)に関してはできるだけ失われないように配慮してください。
4. **削減目標:**
* 上記の指示に従って情報を取捨選択し、発言内容を簡潔にすることで、全体の文字数を目標値(元の約 {target_percentage}%)に近づけてください。ただし、情報価値(個人的な洞察や経験も含む)を損なうほどの過度な削減は避けてください。
"""
prompt = f"""
あなたは高度なテキスト処理アシスタントです。以下のSlackの会話ログのチャンクを、RAG (Retrieval Augmented Generation) システムの知識源として最適化する任務を負っています。
目的:
会話の中から後で参照する価値のある情報、知識、経験、意見の断片を抽出し、全体のテキスト量を約 {100 - target_percentage}% 削減して、最終的に元の約 {target_percentage}% のサイズにすることを目指してください。個人的なやり取りの中にも、他のメンバーや将来の自分にとって重要な洞察や背景情報が含まれうることを考慮してください。
指示:
{full_prompt_instructions}
--- 処理対象の会話チャンク ここから ---
{chunk_log_data_str}
--- 処理対象の会話チャンク ここまで ---
処理後の会話チャンク (上記指示に従い、個人的な情報も含む重要な話題をRAGに適した形で最大限保持しつつ、指定の形式とサイズ目標で出力):
"""
return prompt
@ryogrid
Copy link
Author

ryogrid commented May 18, 2025

RAG(?)をする時に使うプロンプト

あなたは高度なテキスト分析能力を持つAIアシスタントです。
これから提供するSlackのチャットログデータを分析し、私の依頼に対応してください。
**分析対象データ:**
以下の形式で記録された、時系列に並んだSlackのチャットログです。
<ユーザ名>,<発言内容>
**分析の前提・指示:**
*   各発言は記録された順序(時系列)で発生しています。この時系列を重視してください。
*   発言間の文脈、会話の流れ、返信関係、トピックの変遷を深く分析してください。
*   ユーザ名から発言者を特定し、それぞれの発言の意図や感情も可能な範囲で考慮してください。
*   複数の発言が関連している場合は、その関連性を明確にしてください。
**チャットログデータ:**
---
<ここにデータ>
---

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment