Skip to content

kkawailab/typeagent-py-templates

Repository files navigation

typeagent_py テンプレート集

Guidoが作成したStructured RAG実装「typeagent_py」のテンプレートとユーティリティ集

📚 概要

このリポジトリには、typeagent_pyを使ったStructured RAGの実装例とユーティリティが含まれています。

Structured RAGとは?

  • クラッシックRAGの課題(検索精度の低さ)を解決
  • グラフ構造・テーブル・JSONスキーマなど構造化された情報を検索対象とする
  • 意味的検索 + 構造的照合により安定した結果を実現
  • Microsoftが提案した技術

typeagent_pyの特徴

  • Guidoによる実験的プロトタイプ
  • Pydanticモデルを検索対象とする
  • 教育目的でコードが読みやすい
  • Agent的な技術の実装例

📦 ファイル構成

.
├── README.md                      # このファイル
├── typeagent_template.py          # 基本テンプレート(Python)
├── typeagent_template.ipynb       # Google Colab用ノートブック
└── typeagent_utils.py             # 実用的なユーティリティ

🚀 クイックスタート

1. インストール

pip install typeagent==0.3.0

2. 環境変数の設定

export OPENAI_API_KEY="your-api-key-here"
export OPENAI_MODEL="gpt-4o-mini"

3. 基本的な使い方

import asyncio
from typeagent_template import sample_basic

# 基本サンプルの実行
asyncio.run(sample_basic())

📖 各ファイルの説明

typeagent_template.py

基本的な使用例を含むテンプレートスクリプト

含まれるサンプル:

  • サンプル1: 基本的な使用例
  • サンプル2: 会議議事録の管理
  • サンプル3: プロジェクト管理
  • サンプル4: カスタマーサポート履歴

実行方法:

python typeagent_template.py

typeagent_template.ipynb

Google Colaboratory用のノートブック形式テンプレート

特徴:

  • セルごとに実行可能
  • 段階的に学習できる構成
  • カスタムデータで試せるセル付き

使い方:

  1. Google Colabにアップロード
  2. 左側の鍵アイコンからOPENAI_API_KEYを設定
  3. 各セルを順番に実行

typeagent_utils.py

実用的なユーティリティクラスとヘルパー関数

主要クラス:

1. ConversationImporter

様々な形式から会話データをインポート

from typeagent_utils import ConversationImporter

# JSONから
dialog = ConversationImporter.from_json("data.json")

# CSVから
dialog = ConversationImporter.from_csv("data.csv")

# テキストファイルから
dialog = ConversationImporter.from_text("data.txt")

2. ConversationExporter

会話データを各種形式にエクスポート

from typeagent_utils import ConversationExporter

dialog = [("Alice", "こんにちは"), ("Bob", "やあ")]

# JSONへ
ConversationExporter.to_json(dialog, "output.json")

# CSVへ
ConversationExporter.to_csv(dialog, "output.csv")

# テキストへ
ConversationExporter.to_text(dialog, "output.txt")

3. EnhancedRAGManager

拡張機能付きRAGマネージャー

機能:

  • クエリログの自動記録
  • 統計情報の取得
  • バッチ処理
  • ファイルからの直接インポート
import asyncio
from typeagent_utils import EnhancedRAGManager

async def main():
    # 初期化
    rag = EnhancedRAGManager("mydb.db", log_queries=True)
    await rag.initialize()
    
    # ファイルから追加
    await rag.add_dialog_from_file("data.json")
    
    # バッチクエリ
    questions = ["質問1", "質問2", "質問3"]
    results = await rag.batch_query(questions)
    
    # 統計表示
    rag.print_statistics()
    
    # ログ保存
    rag.save_query_log("log.json")

asyncio.run(main())

4. InteractiveRAGSession

対話型セッション

from typeagent_utils import InteractiveRAGSession, EnhancedRAGManager
import asyncio

async def main():
    rag = EnhancedRAGManager("mydb.db")
    await rag.initialize()
    
    # データ追加...
    
    # 対話セッション開始
    session = InteractiveRAGSession(rag)
    await session.start()

asyncio.run(main())

対話セッションのコマンド:

  • 質問を入力: 通常の質問を入力
  • stats: 統計情報を表示
  • save: クエリログを保存
  • exit, quit, q: セッション終了

5. SampleDataGenerator

テスト用サンプルデータ生成

from typeagent_utils import SampleDataGenerator

# 会議議事録のサンプル
meeting_data = SampleDataGenerator.generate_meeting_minutes(5)

# カスタマーサポート履歴のサンプル
support_data = SampleDataGenerator.generate_customer_support(5)

💡 使用例

例1: JSONファイルからデータをインポートして検索

import asyncio
from typeagent_utils import EnhancedRAGManager

async def example1():
    # 準備
    rag = EnhancedRAGManager("example1.db")
    await rag.initialize()
    
    # JSONファイルからインポート
    await rag.add_dialog_from_file("meeting_log.json")
    
    # 質問
    answer = await rag.query("今月の売上目標は?")
    print(answer)

asyncio.run(example1())

例2: 対話型セッションで使う

import asyncio
from typeagent_utils import EnhancedRAGManager, InteractiveRAGSession

async def example2():
    rag = EnhancedRAGManager("example2.db")
    await rag.initialize()
    
    # データ追加
    dialog = [
        ("Alice", "プロジェクトは順調です"),
        ("Bob", "来週リリース予定です")
    ]
    await rag.add_dialog(dialog)
    
    # 対話セッション
    session = InteractiveRAGSession(rag)
    await session.start()

asyncio.run(example2())

例3: バッチ処理と統計

import asyncio
from typeagent_utils import EnhancedRAGManager, SampleDataGenerator

async def example3():
    rag = EnhancedRAGManager("example3.db", log_queries=True)
    await rag.initialize()
    
    # サンプルデータ生成
    data = SampleDataGenerator.generate_meeting_minutes(10)
    await rag.add_dialog(data)
    
    # バッチクエリ
    questions = [
        "売上目標について誰が報告した?",
        "マーケティング施策は?",
        "次回ミーティングの予定は?"
    ]
    
    results = await rag.batch_query(questions, verbose=True)
    
    # 統計表示
    rag.print_statistics()
    
    # ログ保存
    rag.save_query_log("query_log.json")

asyncio.run(example3())

📋 データフォーマット

JSON形式

[
  {
    "speaker": "Alice",
    "text": "こんにちは"
  },
  {
    "speaker": "Bob",
    "text": "やあ、元気?"
  }
]

CSV形式

speaker,text
Alice,こんにちは
Bob,やあ、元気?

テキスト形式

Alice: こんにちは
Bob: やあ、元気?

🎯 活用シーン

  • 会議議事録の管理: 会議内容を検索可能な形で保存
  • プロジェクト情報の整理: タスク、期限、担当者の管理
  • カスタマーサポート: 問い合わせ履歴の検索
  • 社内ナレッジベース: FAQ、手順書の構造化
  • チャットログ分析: Slackなどのログから情報抽出

⚠️ 注意事項

  • OpenAI APIキーが必要です
  • 実験的プロトタイプのため、本番環境での使用は慎重に
  • 機密情報は外部サービスに流れるため注意
  • データベースファイル(.db)はローカルに保存されます

🔗 参考リンク

📝 ライセンス

このテンプレート集は教育目的で作成されています。 typeagent_py本体のライセンスに従ってください。

🤝 貢献

改善案やバグ報告は歓迎します。


作成日: 2025年10月24日
対応バージョン: typeagent==0.3.0

About

Guidoが作ったStructured RAG実装「typeagent_py」のテンプレート集

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors