たった3行のコードでAITracerを導入できます。所要時間:約5分
まず、AITracerのアカウントを作成し、APIキーを取得します。
at-xxxx...)をコピーお使いの言語に合わせてSDKをインストールしてください。
pip でインストール:
pip install aitracer
Python 3.8 以上が必要です。
Composer でインストール:
composer require haro/aitracer
PHP 8.0 以上が必要です。
npm または yarn でインストール:
# npm
npm install @haro/aitracer
# yarn
yarn add @haro/aitracer
Node.js 18 以上が必要です。
既存のLLMクライアントをAITracerでラップするだけで、自動的にログが記録されます。
from aitracer import AITracer
from openai import OpenAI
tracer = AITracer(api_key="at-xxxx", project="my-project")
client = tracer.wrap_openai(OpenAI())
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello!"}]
)
from aitracer import AITracer
from anthropic import Anthropic
tracer = AITracer(api_key="at-xxxx", project="my-project")
client = tracer.wrap_anthropic(Anthropic())
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}]
)
from aitracer import AITracer
import google.generativeai as genai
tracer = AITracer(api_key="at-xxxx", project="my-project")
model = tracer.wrap_gemini(genai.GenerativeModel("gemini-pro"))
response = model.generate_content("Hello!")
from aitracer.integrations.langchain import AITracerCallbackHandler
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
# LangChainのコールバックハンドラーを設定
handler = AITracerCallbackHandler(api_key="at-xxxx", project="my-project")
llm = ChatOpenAI(model="gpt-4", callbacks=[handler])
response = llm.invoke([HumanMessage(content="Hello!")])
<?php
use AITracer\AITracer;
use OpenAI;
$tracer = new AITracer(['api_key' => 'at-xxxx', 'project' => 'my-project']);
$client = $tracer->wrapOpenAI(OpenAI::client('your-openai-key'));
$response = $client->chat()->create([
'model' => 'gpt-4',
'messages' => [
['role' => 'user', 'content' => 'Hello!']
]
]);
<?php
use AITracer\AITracer;
use Anthropic\Anthropic;
$tracer = new AITracer(['api_key' => 'at-xxxx', 'project' => 'my-project']);
$client = $tracer->wrapAnthropic(Anthropic::client('your-anthropic-key'));
$response = $client->messages()->create([
'model' => 'claude-sonnet-4-20250514',
'max_tokens' => 1024,
'messages' => [
['role' => 'user', 'content' => 'Hello!']
]
]);
<?php
use AITracer\AITracer;
use Gemini\Client as GeminiClient;
$tracer = new AITracer(['api_key' => 'at-xxxx', 'project' => 'my-project']);
$client = $tracer->wrapGemini(GeminiClient::factory()->withApiKey('your-gemini-key')->make());
$response = $client->geminiPro()->generateContent('Hello!');
import { AITracer } from '@haro/aitracer';
import OpenAI from 'openai';
const tracer = new AITracer({ apiKey: 'at-xxxx', projectId: 'my-project' });
const openai = new OpenAI();
const start = Date.now();
const response = await openai.chat.completions.create({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Hello!' }]
});
// ログを記録
await tracer.log({
model: 'gpt-4',
provider: 'openai',
inputData: { messages: [{ role: 'user', content: 'Hello!' }] },
outputData: response.choices[0].message,
inputTokens: response.usage?.prompt_tokens,
outputTokens: response.usage?.completion_tokens,
latencyMs: Date.now() - start
});
import { AITracer } from '@haro/aitracer';
import Anthropic from '@anthropic-ai/sdk';
const tracer = new AITracer({ apiKey: 'at-xxxx', projectId: 'my-project' });
const anthropic = new Anthropic();
const start = Date.now();
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Hello!' }]
});
// ログを記録
await tracer.log({
model: 'claude-sonnet-4-20250514',
provider: 'anthropic',
inputData: { messages: [{ role: 'user', content: 'Hello!' }] },
outputData: response.content,
inputTokens: response.usage.input_tokens,
outputTokens: response.usage.output_tokens,
latencyMs: Date.now() - start
});
AITRACER_API_KEY と AITRACER_PROJECT を設定すれば、パラメータを省略できます。
コードを実行したら、AITracerダッシュボードでログを確認しましょう。
| プロバイダー | メソッド | 対応SDK |
|---|---|---|
| OpenAI | tracer.wrap_openai(client) |
Python, PHP |
| Anthropic | tracer.wrap_anthropic(client) |
Python, PHP |
| Google Gemini | tracer.wrap_gemini(model) |
Python, PHP |
| LangChain | AITracerCallbackHandler |
Python |
| 手動ログ | tracer.log() |
Python, PHP, TypeScript |
初期化時に以下のオプションを指定できます:
| オプション | 型 | 説明 | デフォルト |
|---|---|---|---|
api_key |
string | AITracer APIキー | 環境変数 AITRACER_API_KEY |
project |
string | プロジェクト名(詳細ガイド) | None |
enabled |
bool | ログ記録の有効/無効 | true |
base_url |
string | APIエンドポイント | https://api.aitracer.co |
| オプション | 型 | 説明 | デフォルト |
|---|---|---|---|
sync |
bool | 同期送信モード(Lambda/Cloud Functions推奨) | false |
batch_size |
int | バッチ送信のサイズ(非同期時) | 10 |
flush_interval |
float | 自動フラッシュ間隔(秒、非同期時) | 5.0 |
flush_on_exit |
bool | プロセス終了時に自動フラッシュ | true |
| オプション | 型 | 説明 | デフォルト |
|---|---|---|---|
pii_detection |
bool | PII検出の有効/無効 | false |
pii_action |
string | PII検出時のアクション(mask, redact, hash, none) | mask |
pii_types |
array | 検出対象のPIIタイプ | ["email", "phone", "credit_card", "ssn"] |
from aitracer import AITracer
tracer = AITracer(
api_key="at-xxxx",
project="my-chatbot",
# PII設定
pii_detection=True,
pii_action="mask",
# 送信設定
batch_size=20,
flush_interval=10.0,
# 同期モード(サーバーレス向け)
sync=False
)
sync=True を設定してください。ログの欠損を防げます。
ユーザーセッション単位でログを集約し、会話フローを可視化できます。
# with 文でセッションを管理(自動で開始・終了)
with tracer.session(
session_id="session-abc123",
user_id="user-456",
metadata={"channel": "web", "device": "mobile"}
) as session:
# セッション内の全リクエストが自動でグループ化
response1 = client.chat.completions.create(...)
response2 = client.chat.completions.create(...)
# ユーザーフィードバックを記録
session.thumbs_up() # 最後のレスポンスに対して
# with ブロック終了時に自動でセッション終了
セッション分析機能:
アプリユーザー機能を使うと、あなたのAIアプリケーションのエンドユーザー単位で利用状況を追跡できます。ユーザーごとのコスト・使用量・行動パターンを把握し、課金設計やユーザー体験の改善に活用できます。
セッション開始時に 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"
}
}
)
ダッシュボードの「アプリユーザー」メニューから、ユーザー一覧と詳細を確認できます。
| ユースケース | 説明 |
|---|---|
| 従量課金 | ユーザーごとのAPI使用コストを把握し、課金額を算出 |
| 利用制限 | ヘビーユーザーを特定し、レート制限の設計に活用 |
| エラー調査 | 特定ユーザーで発生するエラーの原因を調査 |
| 体験改善 | レイテンシが高いユーザーの特定と改善 |
詳細はダッシュボードの使い方 - アプリユーザー分析をご覧ください。
複数のAPI呼び出しを1つのトレースにグループ化できます。RAGパイプラインやマルチステップ処理に便利です。
# 複数のAPI呼び出しを1つのトレースにグループ化
with tracer.trace("user-query-123") as trace:
# 最初のAPI呼び出し
response1 = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Summarize this article..."}]
)
# 2番目のAPI呼び出し(同じトレースに属する)
response2 = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Translate: {response1.choices[0].message.content}"}]
)
# メタデータを追加
trace.set_metadata({
"user_id": "user-456",
"feature": "summarization",
"article_id": "article-789"
})
リクエスト単位で任意のメタデータを付与できます。後から検索・フィルタリングに利用できます。
# リクエスト単位でメタデータを付与
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello!"}],
extra_body={
"aitracer_metadata": {
"user_id": "user-456",
"session_id": "session-abc",
"feature": "chat",
"version": "2.0"
}
}
)
メタデータは最大10キーまで、各値は最大1000文字までです。