はじめに
前回の記事では、Roo-Clineを使って既存のMCPサーバーを設定・リファクタリングする方法をご紹介しました。今回は、AMATERASUのLiteLLMサーバーを活用して、Google Cloud Platform (GCP)のVertex AIのGemini 2.0をOpenAI形式で使用する方法をご紹介します。
Roo-Cline 開発効率化ガイド Part.4:既存MCPサーバーの設定とリファクタリング 🛠️
はじめに前回の記事では、Roo-Clineを使って自然言語指示だけでMCPサーバーを作成・デプロイする方法をご紹介しました。今回は、その続編として既存のMCPサーバーを設定し、さらにリファクタリングを行う方法をご紹介します。実際のプロジェク...
この方法のメリットは以下の通りです:
- レートリミットの緩和
- GCPの無料クレジット(約4万円)で実質無料で試せる
- OpenAI互換APIとして使用可能
セットアップ手順
1. GCPプロジェクトの設定
まず、GCPでプロジェクトを作成し、必要な認証情報を取得します:
- Google Cloud Consoleにアクセス
- 新しいプロジェクトを作成
- Vertex AI APIを有効化
- サービスアカウントキーを作成・ダウンロード
2. LiteLLMサーバーの構築
必要なファイルを用意します:
.env
ファイルの作成:
# LiteLLM設定
LITELLM_MASTER_KEY="sk-1234"
LITELLM_SALT_KEY="sk-1234"
# サービスアカウント設定
GOOGLE_APPLICATION_CREDENTIALS="/app/vertex-ai-key.json"
GOOGLE_PROJECT_ID="your-project-id"
-
docker-compose.yml
の設定:version: "3.11" services: litellm: image: ghcr.io/berriai/litellm:main-latest volumes: - ./config.yaml:/app/config.yaml - ./vertex-ai-key.json:/app/vertex-ai-key.json command: - "--config=/app/config.yaml" - "--debug" ports: - "4000:4000" environment: DATABASE_URL: "postgresql://llmproxy:dbpassword9090@db:5432/litellm" STORE_MODEL_IN_DB: "True" env_file: - .env
-
config.yaml
でGeminiモデルを設定:model_list: - model_name: Vertex_AI/gemini-2.0-flash-exp litellm_params: model: vertex_ai/gemini-2.0-flash-exp vertex_project: "os.environ/GOOGLE_PROJECT_ID" vertex_location: "us-central1"
3. サーバーの起動
docker-compose up -d
テストスクリプトの実装
以下のPythonスクリプトを使用して、Vertex AIの各モデルをテストできます:
import openai
from loguru import logger
import sys
import time
from art import text2art
def print_banner():
"""アプリケーションバナーを表示"""
art = text2art("Vertex AI", font='rnd-large')
logger.info("\n\033[94m" + art + "\033[0m")
logger.info("\033[92m" + "=" * 50 + "\033[0m")
logger.info("\033[93mVertex AI Models Testing Tool\033[0m")
logger.info("\033[92m" + "=" * 50 + "\033[0m\n")
class VertexAITester:
def __init__(self, base_url="http://localhost:4000"):
self.client = openai.OpenAI(
api_key="sk-1234", # LiteLLM用のダミーキー
base_url=base_url
)
logger.info(f"OpenAI クライアントを初期化: {base_url}")
# Vertex AIのモデルリスト
self.models = [
"Vertex_AI/gemini-pro",
"Vertex_AI/gemini-2.0-flash-exp",
"Vertex_AI/gemini-1.5-pro-001",
"Vertex_AI/gemini-1.5-pro-002",
"Vertex_AI/gemini-1.5-flash-001",
"Vertex_AI/gemini-1.5-flash-002",
"Vertex_AI/gemini-1.0-pro",
"Vertex_AI/gemini-1.0-pro-001",
"Vertex_AI/gemini-1.0-pro-002",
"Vertex_AI/gemini-1.0-pro-vision-001"
]
self.test_messages = [
{
"role": "user",
"content": "日本の四季について短く説明してください。"
}
]
def test_model(self, model_name: str):
"""各モデルをテストする関数"""
try:
logger.info(f"\n{'-' * 50}")
logger.info(f"{model_name} のテストを開始します")
start_time = time.time()
response = self.client.chat.completions.create(
model=model_name,
messages=self.test_messages,
temperature=0.7,
max_tokens=500
)
response_time = time.time() - start_time
logger.success(f"{model_name} のテストが成功しました")
logger.info(f"応答時間: {response_time:.2f}秒")
logger.info(f"応答内容:\n{response.choices[0].message.content}")
logger.info(f"使用トークン数: {response.usage.total_tokens}")
return True
except Exception as e:
logger.error(f"{model_name} のテスト中にエラーが発生しました: {str(e)}")
return False
def run_all_tests(self):
"""全モデルのテストを実行する"""
logger.info("Vertex AIモデルのテストを開始します")
results = {"success": [], "failed": []}
for model in self.models:
if self.test_model(model):
results["success"].append(model)
logger.info(f"{model}: テスト成功 ✅")
else:
results["failed"].append(model)
logger.error(f"{model}: テスト失敗 ❌")
# テスト結果のサマリーを表示
logger.info("\n" + "=" * 50)
logger.info("テスト結果サマリー")
logger.info(f"成功したモデル数: {len(results['success'])}")
logger.info(f"失敗したモデル数: {len(results['failed'])}")
def main():
"""メイン実行関数"""
try:
print_banner()
base_url = "http://localhost:4000"
tester = VertexAITester(base_url=base_url)
tester.run_all_tests()
except Exception as e:
logger.critical(f"予期せぬエラーが発生しました: {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()
AMATERASU/spellbook/litellm/script/test_vertex_ai.py at main · Sunwood-ai-labs/AMATERASU
Contribute to Sunwood-ai-labs/AMATERASU development by creating an account on GitHub.
まとめ
AMATERASUのLiteLLMサーバーを使用することで:
- Gemini 2.0を効率的に利用可能
- レートリミットを大幅に緩和
- OpenAI互換APIとして様々なツールで使用可能
- GCPの無料クレジットで実質無料でテスト可能
この方法により、Roo-Clineでの開発効率を更に向上させることができます。
コメント