このプロジェクトは、入力されたプロンプトを分析し、クエリの複雑さに基づいて適切なAIモデル(Claude 3.5 HaikuまたはClaude 3.7 Sonnet)に転送するシステムです。
- Amazon Nova Liteを使用してプロンプトの複雑さを分析
- 分析結果に基づいて適切なClaudeモデルを選択
- Nova Lite呼び出し失敗時のフォールバック処理(デフォルトはSonnet)
- 処理結果(消費トークン数、レスポンスタイムなど)の記録
- 実行結果をマークダウンファイルとして保存
- Python 3.8以上
- AWS アカウントと適切なIAM権限
- AWS CLI設定済み
- リポジトリをクローン
git clone https://github.com/kawabata-mcl/prompt-routing.git
cd prompt-routing
- Python仮想環境(venv)を作成してアクティベート
# Linux/macOS
python -m venv .venv
source .venv/bin/activate
# Windows
python -m venv .venv
.venv\Scripts\activate
- 依存関係をインストール
pip install -r requirements.txt
- AWS認証情報を設定(AWS CLIで設定していない場合)
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1
仮想環境をアクティベートしてから実行してください:
# 仮想環境をアクティベート
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# スクリプトを実行
python prompt_routing.py
プロンプトを入力すると、システムが適切なモデルを選択して応答します。
実行結果は results
フォルダに保存されます。
テストプロンプトは test_prompts.py
ファイルで管理されています。すべてのプロンプトは単一の test_prompts
リストに保存され、コメントでプロンプトの種類が示されています:
# プロンプト集(コメントでHaiku/Sonnetの適性を示します)
test_prompts = [
# 簡単な質問(Haikuに適したプロンプト)
"こんにちは",
"Pythonで1から10までの数字を出力するシンプルなfor文を書いてください",
# 複雑な質問(Sonnetに適したプロンプト)
"""量子コンピューティングが金融市場のアルゴリズム取引に与える影響について、
技術的な観点と倫理的な観点から詳細に分析してください。""",
# カスタム追加用
"""ここに新しいプロンプトを追加できます。
長文の場合は複数行の文字列として記述できます。"""
]
新しいプロンプトを追加するには、test_prompts
リストに直接追加してください。
prompt_routing.py
でプロンプトを処理する方法:
# 動作モード
process_all_prompts = False # Trueに変更するとすべてのプロンプトを順番に処理
if not process_all_prompts:
selected_prompt_index = 0 # 処理するプロンプトのインデックスを指定
process_all_prompts = True
に変更すると、すべてのプロンプトを順番に処理しますselected_prompt_index
を変更して、特定のプロンプトを選択できます
実行結果は以下の形式でマークダウンファイルとして保存されます:
# プロンプト処理結果 - 20240310_123456
## 入力プロンプト
```
入力されたプロンプト
```
## Nova Lite分析結果
- **選択モデル**: Claude 3.7 Sonnet/Claude 3.5 Haiku
- **処理時間**: 0.5秒
- **入力トークン数**: 100
- **出力トークン数**: 10
- **合計トークン数**: 110
- **エラー**: なし
### Nova Lite出力テキスト
```
1 (0=Haiku, 1=Sonnet)
```
### 分類結果
```
sonnet
```
## Claudeモデル実行結果
- **使用モデル**: Claude 3.7 Sonnet/Claude 3.5 Haiku
- **処理時間**: 2.5秒
- **入力トークン数**: 100
- **出力トークン数**: 200
- **合計トークン数**: 300
- **エラー**: なし
## 最終応答
```
Claudeモデルからの応答
```
このプロジェクトには、詳細なログ機能を省略したシンプル版のprompt_routing_simple.py
も含まれています。こちらは対話型のコマンドラインインターフェイスを提供し、プロンプトを入力するごとに即時に処理結果を返します。
特徴:
- コマンドライン上でシンプルな対話式インターフェイスを提供
- プロンプト入力から適切なモデル(HaikuまたはSonnet)を自動選択
- 処理結果をリアルタイムで表示
- ファイル出力機能はなし(ターミナルに直接表示のみ)
使用方法:
# 仮想環境をアクティベート
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
# シンプル版スクリプトを実行
python prompt_routing_simple.py
# プロンプト入力画面が表示されるので、質問や指示を入力
# 終了するには「exit」または「quit」と入力
実行すると、以下のような対話型インターフェイスが起動します:
プロンプトルーティングシステム(シンプル版)
終了するには 'exit' または 'quit' と入力してください
--------------------------------------------------
プロンプトを入力してください: ここに質問や指示を入力
処理中...
選択されたモデル: Claude 3.5 Haiku
回答:
AIからの回答がここに表示されます
--------------------------------------------------