日本語

プロジェクト管理ガイド

SDKでのプロジェクト指定方法とベストプラクティス

プロジェクトとは

プロジェクトは、AITracerでログを論理的にグループ化するための仕組みです。プロジェクトを使うことで:

  • ログの分離:環境別・機能別・チーム別にログを整理
  • コスト分析:プロジェクト単位でコストを把握
  • アラート設定:プロジェクトごとに異なるアラートルールを設定
  • アクセス制御:チームメンバーにプロジェクト単位で権限を付与
プロジェクトは無料プランでも利用可能
すべてのプランでプロジェクト機能を利用できます。プロジェクト数に制限はありません。

SDKでのプロジェクト指定

Python

from aitracer import AITracer

# コンストラクタでプロジェクトを指定
tracer = AITracer(
    api_key="at-xxxx",
    project="my-chatbot-production"
)

# 以降のすべてのログがこのプロジェクトに記録される
client = tracer.wrap_openai(OpenAI())

PHP

<?php
use AITracer\AITracer;

// コンストラクタでプロジェクトを指定
$tracer = new AITracer([
    'api_key' => 'at-xxxx',
    'project' => 'my-chatbot-production'
]);

$client = $tracer->wrapOpenAI(OpenAI::client($apiKey));

TypeScript

import { AITracer } from '@haro/aitracer';

// コンストラクタでプロジェクトを指定
const tracer = new AITracer({
  apiKey: 'at-xxxx',
  projectId: 'my-chatbot-production'
});

環境変数での設定

環境変数を使うと、コードを変更せずに環境ごとにプロジェクトを切り替えられます。

環境変数

変数名 説明
AITRACER_API_KEY APIキー at-xxxx...
AITRACER_PROJECT プロジェクト名 my-chatbot-production

.env ファイルの例

# 本番環境 (.env.production)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-production

# ステージング環境 (.env.staging)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-staging

# 開発環境 (.env.development)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-development

環境変数を使ったコード

from aitracer import AITracer

# 環境変数から自動で読み込む(パラメータ省略可)
tracer = AITracer()

# または明示的に環境変数から取得
import os
tracer = AITracer(
    api_key=os.getenv("AITRACER_API_KEY"),
    project=os.getenv("AITRACER_PROJECT")
)
推奨:環境変数を使う
コードにプロジェクト名をハードコードせず、環境変数で管理することで、同じコードを複数環境で使い回せます。

プロジェクトの動的切り替え

同一アプリケーション内で、状況に応じてプロジェクトを切り替えることもできます。

リクエスト単位でプロジェクトを指定

# 手動ログの場合、リクエスト単位でプロジェクトを指定可能
tracer.log({
    "model": "gpt-4",
    "provider": "openai",
    "project": "special-feature",  # このログだけ別プロジェクトに
    "input_data": {...},
    "output_data": {...}
})

複数のTracerインスタンスを使う

from aitracer import AITracer
from openai import OpenAI

# プロジェクトごとにTracerを作成
tracer_chat = AITracer(project="chatbot")
tracer_search = AITracer(project="search-feature")
tracer_summary = AITracer(project="summarization")

# 機能ごとに異なるクライアントを使用
chat_client = tracer_chat.wrap_openai(OpenAI())
search_client = tracer_search.wrap_openai(OpenAI())
summary_client = tracer_summary.wrap_openai(OpenAI())

with文でプロジェクトを一時的に切り替え

# デフォルトプロジェクト
tracer = AITracer(project="main-app")
client = tracer.wrap_openai(OpenAI())

# 通常のリクエスト(main-app に記録)
response = client.chat.completions.create(...)

# 一時的にプロジェクトを変更
with tracer.project("experimental-feature"):
    # このブロック内のログは experimental-feature に記録
    response = client.chat.completions.create(...)

# ブロック外では元のプロジェクトに戻る
response = client.chat.completions.create(...)  # main-app に記録

設計パターン

プロジェクトの設計方法は、チームの規模やアプリケーションの構成によって異なります。代表的なパターンを紹介します。

環境別パターン

開発・ステージング・本番などの環境ごとにプロジェクトを分離。最もシンプルで一般的。

myapp-development
myapp-staging
myapp-production

機能別パターン

アプリケーションの機能ごとにプロジェクトを分離。機能単位でのコスト分析に有効。

chatbot
search
summarization
translation

チーム別パターン

開発チームごとにプロジェクトを分離。チーム単位での予算管理に有効。

team-alpha
team-beta
team-gamma

複合パターン

環境×機能など、複数の軸を組み合わせ。大規模プロジェクト向け。

chatbot-production
chatbot-staging
search-production
search-staging

パターン選択の指針

状況 推奨パターン 理由
小規模チーム、単一アプリ 環境別 シンプルで管理しやすい
複数機能を持つアプリ 機能別 or 複合 機能ごとのコスト把握が可能
複数チームで開発 チーム別 or 複合 チーム単位での予算管理
マイクロサービス構成 サービス別 + 環境別 サービスごとの監視が可能

ベストプラクティス

1. 命名規則を統一する

プロジェクト名は一貫した命名規則で付けましょう。

# 良い例:ケバブケースで統一
my-chatbot-production
my-chatbot-staging
search-api-production

# 避けるべき例:命名規則がバラバラ
MyChatBot
my_chatbot_staging
searchAPI-prod

2. 環境変数を活用する

プロジェクト名をコードにハードコードせず、環境変数で管理しましょう。

# 悪い例:ハードコード
tracer = AITracer(project="my-chatbot-production")

# 良い例:環境変数
tracer = AITracer(project=os.getenv("AITRACER_PROJECT"))

3. 本番と開発を必ず分ける

最低限、本番環境と開発環境は別プロジェクトにしましょう。

  • 開発時のテストログが本番データに混ざらない
  • 本番のコスト・パフォーマンスを正確に把握できる
  • 本番用のアラートが開発ログで発火しない

4. メタデータと組み合わせる

プロジェクトで大分類、メタデータで詳細分類という使い分けが効果的です。

# プロジェクト:アプリ+環境で大分類
tracer = AITracer(project="chatbot-production")

# メタデータ:詳細な属性を付与
response = client.chat.completions.create(
    model="gpt-4",
    messages=[...],
    extra_body={
        "aitracer_metadata": {
            "user_id": "user-123",
            "feature": "customer-support",
            "version": "2.1.0"
        }
    }
)

5. プロジェクトごとにアラートを設定

本番環境のプロジェクトには必ずアラートを設定しましょう。

  • エラー率が5%を超えたら通知
  • 月間コストが予算の80%に達したら警告
  • P95レイテンシが閾値を超えたら通知
プロジェクト名の変更に注意
一度記録されたログのプロジェクトは変更できません。プロジェクト名を変更する場合は、新しいプロジェクトとして記録されます。

ダッシュボードでの管理

プロジェクトの作成

  1. ダッシュボードにログイン
  2. 左メニューの「プロジェクト」をクリック
  3. 「+ 新規プロジェクト」をクリック
  4. プロジェクト名と説明を入力
  5. 「作成」をクリック

プロジェクト設定

設定項目 説明
名前・説明 プロジェクトの識別情報
デフォルトアラート プロジェクト作成時に自動設定するアラート
データ保持期間 ログの保持期間(Enterpriseのみカスタム可)
アクセス権限 チームメンバーのアクセス権限

プロジェクトでフィルタリング

ダッシュボードの各画面で、プロジェクトをフィルターとして使用できます。

  • ホーム:プロジェクト別の統計を表示
  • ログ:プロジェクトでログを絞り込み
  • 分析:プロジェクト別のコスト・パフォーマンス分析
  • アラート:プロジェクト固有のアラートルール
ダッシュボードで作成しなくても使える
SDKでプロジェクト名を指定すると、そのプロジェクトが自動的に作成されます。ダッシュボードでの事前作成は必須ではありません。