Skip to main content

AITracer SDK - Monitor your AI/LLM applications

Project description

AITracer Python SDK

AIエージェント/LLMアプリの実行ログ・コスト・パフォーマンスを監視するためのPython SDK。

インストール

pip install aitracer

クイックスタート

基本的な使い方

from aitracer import AITracer
from openai import OpenAI

# AITracerを初期化
tracer = AITracer(
    api_key="at-xxxxxxxx",
    project="my-chatbot"
)

# OpenAIクライアントをラップ
client = tracer.wrap_openai(OpenAI())

# 普通に使う(自動でログが送信される)
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}]
)

Anthropic対応

from aitracer import AITracer
from anthropic import Anthropic

tracer = AITracer(
    api_key="at-xxxxxxxx",
    project="my-chatbot"
)

# Anthropicクライアントをラップ
client = tracer.wrap_anthropic(Anthropic())

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

Google Gemini対応

from aitracer import AITracer
import google.generativeai as genai

tracer = AITracer(
    api_key="at-xxxxxxxx",
    project="my-chatbot"
)

# Geminiを設定
genai.configure(api_key="your-google-api-key")
model = genai.GenerativeModel("gemini-1.5-flash")

# Geminiモデルをラップ
model = tracer.wrap_gemini(model)

response = model.generate_content("Hello!")
print(response.text)

ストリーミングも対応しています:

response = model.generate_content("Write a story...", stream=True)
for chunk in response:
    print(chunk.text, end="")

トレース機能

複数のAPI呼び出しをグループ化して追跡できます。

with tracer.trace("user-query-123") as trace:
    # この中のAPI呼び出しは同じtrace_idでグループ化される
    response1 = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Summarize this..."}]
    )

    response2 = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Translate to Japanese..."}]
    )

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

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

ストリーミング対応

ストリーミングレスポンスも自動的にログされます。

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Write a story..."}],
    stream=True
)

for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

# ストリーム完了後に自動的にログが送信される

設定オプション

tracer = AITracer(
    # 必須
    api_key="at-xxxxxxxx",      # または AITRACER_API_KEY 環境変数
    project="my-chatbot",        # または AITRACER_PROJECT 環境変数

    # オプション
    base_url="https://api.aitracer.co",  # APIエンドポイント
    sync=False,                  # True: 同期送信(Lambda用)
    flush_on_exit=True,          # 終了時に未送信ログをフラッシュ
    batch_size=10,               # バッチサイズ
    flush_interval=5.0,          # 自動フラッシュ間隔(秒)
    enabled=True,                # False: ログ無効化(テスト用)
)

Lambda/サーバーレス環境

サーバーレス環境では sync=True を使用してください。

tracer = AITracer(
    api_key="at-xxxxxxxx",
    project="my-lambda",
    sync=True  # 同期送信
)

環境変数

export AITRACER_API_KEY=at-xxxxxxxx
export AITRACER_PROJECT=my-chatbot
# 環境変数から自動で読み込み
tracer = AITracer()

手動ログ

自動ラッパーを使わずに手動でログを送信することもできます。

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

フラッシュとシャットダウン

# 未送信のログを即座に送信
tracer.flush()

# シャットダウン(フラッシュ + リソース解放)
tracer.shutdown()

ライセンス

Copyright (c) 株式会社HARO. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aitracer-0.1.0.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aitracer-0.1.0-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file aitracer-0.1.0.tar.gz.

File metadata

  • Download URL: aitracer-0.1.0.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.2

File hashes

Hashes for aitracer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 de2386e0ef44e34017cc39c2ffd312096cd98928cbc0b503275b66cdf7306f6a
MD5 3daeee07f20ebfbfc23738a285ae84e3
BLAKE2b-256 ca4ce26109220c172bfb32d60bcd249f1fb236c9cb4d29c2c2fdba8c799cff15

See more details on using hashes here.

File details

Details for the file aitracer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: aitracer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.2

File hashes

Hashes for aitracer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 340d52d56505101f652402ee3d0089ad7f36fea60c8cddbe7b687d7f54ca0995
MD5 ef478ed33c56f46278e1fa58cacd1b4b
BLAKE2b-256 dc29ce19e9c64ebf8a91ba3f1d5b4d4f95b7dd5e1c8142e11c813cf5f6f3b09e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page