日本語

SDKリファレンス

AITracer SDKの詳細なAPI仕様と高度な使い方

インストール

Python

pip install aitracer

要件: Python 3.8以上

PHP

composer require haro/aitracer

要件: PHP 8.0以上

TypeScript / JavaScript

npm install @haro/aitracer
# or
yarn add @haro/aitracer

要件: Node.js 18以上

初期化

AITracer クラス

from aitracer import AITracer

tracer = AITracer(
    api_key="at-xxxx",          # 必須(または環境変数 AITRACER_API_KEY)
    project="my-project",       # プロジェクト名
    enabled=True,               # ログ記録の有効/無効
    sync=False,                 # 同期送信モード
    batch_size=10,              # バッチサイズ
    flush_interval=5.0,         # フラッシュ間隔(秒)
    pii_detection=False,        # PII検出
    pii_action="mask",          # PII検出時のアクション
    base_url="https://api.aitracer.co"  # APIエンドポイント
)

コンストラクタオプション

パラメータ デフォルト 説明
api_key str - AITracer APIキー(必須)
project str None プロジェクト識別子
enabled bool True ログ記録の有効化
sync bool False 同期送信モード(サーバーレス推奨)
batch_size int 10 バッチ送信のサイズ
flush_interval float 5.0 自動フラッシュ間隔(秒)
flush_on_exit bool True 終了時の自動フラッシュ
pii_detection bool False PII自動検出
pii_action str "mask" mask / redact / hash / none
pii_types list ["email", "phone", ...] 検出対象のPIIタイプ

ラッパーメソッド

既存のLLMクライアントをラップして、自動的にログを記録します。

wrap_openai(client)

OpenAIクライアントをラップします。

from openai import OpenAI

client = tracer.wrap_openai(OpenAI())

# 通常通り使用 - 自動でログ記録
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello"}]
)

wrap_anthropic(client)

Anthropicクライアントをラップします。

from anthropic import Anthropic

client = tracer.wrap_anthropic(Anthropic())

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}]
)

wrap_gemini(model)

Google Geminiモデルをラップします。

import google.generativeai as genai

model = tracer.wrap_gemini(genai.GenerativeModel("gemini-pro"))

response = model.generate_content("Hello")

手動ログ

自動ラップを使わず、手動でログを記録します。

log(data)

tracer.log({
    "model": "gpt-4",
    "provider": "openai",
    "input_data": {
        "messages": [{"role": "user", "content": "Hello"}]
    },
    "output_data": {
        "content": "Hi there!"
    },
    "input_tokens": 10,
    "output_tokens": 5,
    "latency_ms": 450,
    "status": "success",
    "metadata": {
        "user_id": "user-123",
        "feature": "chat"
    }
})

ログデータフィールド

フィールド 必須 説明
model str Yes 使用モデル名
provider str Yes openai / anthropic / gemini / other
input_data dict No 入力データ
output_data dict No 出力データ
input_tokens int No 入力トークン数
output_tokens int No 出力トークン数
latency_ms int No レイテンシ(ミリ秒)
status str No success / error
error_message str No エラーメッセージ
metadata dict No カスタムメタデータ(最大10キー)

セッション管理

ユーザーセッション単位でログをグループ化します。

session(session_id, **kwargs)

with tracer.session(
    session_id="session-abc123",
    user_id="user-456",
    metadata={"channel": "web"}
) as session:

    # セッション内のすべてのリクエストが自動でグループ化
    response1 = client.chat.completions.create(...)
    response2 = client.chat.completions.create(...)

    # フィードバックを記録
    session.thumbs_up()      # 最後のレスポンスに高評価
    session.thumbs_down()    # 最後のレスポンスに低評価
    session.feedback("Great response!")  # テキストフィードバック

セッションオプション

パラメータ 説明
session_id str セッション識別子(必須)
user_id str ユーザー識別子
metadata dict カスタムメタデータ

アプリユーザー追跡

アプリユーザー機能を使うと、あなたのAIアプリケーションのエンドユーザー単位で利用状況を追跡できます。ユーザーごとのコスト・使用量を把握し、課金設計や利用制限に活用できます。

Starterプラン以上で利用可能
アプリユーザー分析機能はStarterプラン以上でご利用いただけます。

user_id の指定方法

セッション開始時に user_id を指定する方法が推奨です。

# 推奨: セッションでuser_idを指定
with tracer.session(
    session_id="session-abc123",
    user_id="user-456",       # あなたのアプリのユーザーID
) as session:
    # このセッション内の全リクエストが user-456 に紐づく
    response = client.chat.completions.create(...)

メタデータでの指定

セッションを使わない場合は、リクエストごとにメタデータで指定できます。

# メタデータでuser_idを指定
response = client.chat.completions.create(
    model="gpt-4",
    messages=[...],
    extra_body={
        "aitracer_metadata": {
            "user_id": "user-456"
        }
    }
)

# または set_metadata でグローバルに設定
tracer.set_metadata({"user_id": "user-456"})
response = client.chat.completions.create(...)

ダッシュボードでの確認

指定した user_id は、ダッシュボードの「アプリユーザー」メニューで集計・分析できます。

  • ユーザー一覧:全ユーザーのリクエスト数・コスト・トークン数・エラー数
  • ユーザー詳細:モデル別使用量・最近のログ・統計情報
  • ユーザー検索:user_idでログを検索・フィルタリング

詳細はダッシュボードの使い方 - アプリユーザー分析をご覧ください。

トレース

複数のAPI呼び出しを1つのトレースにグループ化します。

trace(trace_id)

with tracer.trace("request-123") as trace:
    # 複数のAPI呼び出しが同じトレースに属する
    response1 = client.chat.completions.create(...)
    response2 = client.chat.completions.create(...)

    # メタデータを追加
    trace.set_metadata({
        "user_id": "user-456",
        "feature": "summarization"
    })

    # タグを追加
    trace.add_tag("production")
    trace.add_tag("high-priority")

フラッシュ

バッファされたログを即座に送信します。

flush()

# 手動でフラッシュ
tracer.flush()

# Lambda / Cloud Functions の終了前に呼び出し推奨
def handler(event, context):
    try:
        response = client.chat.completions.create(...)
        return response
    finally:
        tracer.flush()  # 必ずフラッシュ
サーバーレス環境での注意
Lambda / Cloud Functions では sync=True を設定するか、終了前に必ず flush() を呼び出してください。

エラーハンドリング

SDKはアプリケーションに影響を与えないよう設計されています。

from aitracer.exceptions import AITracerError, APIError, RateLimitError

try:
    tracer.log({...})
except RateLimitError:
    # レート制限に達した
    pass
except APIError as e:
    # API通信エラー
    print(f"API Error: {e}")
except AITracerError:
    # その他のエラー
    pass

デフォルトでは、SDKのエラーはログ記録の失敗を意味するだけで、アプリケーションの動作には影響しません。