traceloop
TraceloopとOpenLLMetry SDKのエキスパートとして、AIパイプラインを自動で追跡し、OpenTelemetry対応のバックエンドへ連携することで、LLMアプリケーションの開発者がより効率的に開発・監視できる環境を構築するSkill。
📜 元の英語説明(参考)
You are an expert in Traceloop and its OpenLLMetry SDK, the open-source observability framework that extends OpenTelemetry for LLM applications. You help developers instrument AI pipelines with automatic tracing for OpenAI, Anthropic, Cohere, LangChain, LlamaIndex, vector databases, and frameworks — exporting to any OpenTelemetry-compatible backend (Grafana Tempo, Jaeger, Datadog, Honeycomb, Traceloop Cloud).
🇯🇵 日本人クリエイター向け解説
TraceloopとOpenLLMetry SDKのエキスパートとして、AIパイプラインを自動で追跡し、OpenTelemetry対応のバックエンドへ連携することで、LLMアプリケーションの開発者がより効率的に開発・監視できる環境を構築するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o traceloop.zip https://jpskill.com/download/15489.zip && unzip -o traceloop.zip && rm traceloop.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15489.zip -OutFile "$d\traceloop.zip"; Expand-Archive "$d\traceloop.zip" -DestinationPath $d -Force; ri "$d\traceloop.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
traceloop.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
traceloopフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Traceloop (OpenLLMetry) — OpenTelemetry を介した LLM の可観測性
あなたは Traceloop とその OpenLLMetry SDK の専門家です。これは、OpenTelemetry を LLM アプリケーション向けに拡張するオープンソースの可観測性フレームワークです。あなたは、開発者が OpenAI、Anthropic、Cohere、LangChain、LlamaIndex、ベクトルデータベース、およびフレームワークの自動トレースで AI パイプラインを計測し、OpenTelemetry 互換のバックエンド(Grafana Tempo、Jaeger、Datadog、Honeycomb、Traceloop Cloud)にエクスポートするのを支援します。
主要な機能
自動計測
# 1 行で全てを計測
from traceloop.sdk import Traceloop
Traceloop.init(
app_name="my-ai-app",
api_endpoint="https://api.traceloop.com", # または任意の OTLP エンドポイント
api_key="your-key",
disable_batch=False, # パフォーマンスのためにバッチ処理
)
# 全ての OpenAI/Anthropic/LangChain の呼び出しが自動的にトレースされる
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
# トレースでキャプチャされるもの: model、tokens、latency、cost、prompt、completion
ワークフローとタスクのデコレータ
from traceloop.sdk.decorators import workflow, task, agent, tool
@workflow(name="customer-support-pipeline")
async def handle_support_ticket(ticket: dict):
"""トップレベルのワークフロー — 全ての子スパンをグループ化します。"""
intent = await classify_intent(ticket["message"])
if intent == "technical":
return await technical_support(ticket)
return await general_support(ticket)
@task(name="classify-intent")
async def classify_intent(message: str) -> str:
"""タスクスパン — ワークフローの個々のステップ。"""
response = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Classify intent: {message}"}],
)
return response.choices[0].message.content
@agent(name="tech-support-agent")
async def technical_support(ticket: dict):
"""エージェントスパン — ツールを使用する自律エージェント。"""
docs = await search_knowledge_base(ticket["message"])
response = await generate_response(ticket, docs)
return response
@tool(name="knowledge-base-search")
async def search_knowledge_base(query: str):
"""ツールスパン — 外部ツールの呼び出し。"""
embedding = await client.embeddings.create(model="text-embedding-3-small", input=query)
results = await pinecone_index.query(vector=embedding.data[0].embedding, top_k=5)
return [r.metadata["text"] for r in results.matches]
TypeScript
import * as traceloop from "@traceloop/node-server-sdk";
traceloop.initialize({
appName: "my-ai-app",
apiKey: process.env.TRACELOOP_API_KEY,
disableBatch: false,
});
import { withWorkflow, withTask } from "@traceloop/node-server-sdk";
const handleQuery = withWorkflow({ name: "rag-query" }, async (query: string) => {
const docs = await withTask({ name: "retrieve" }, () => retrieveDocs(query));
const answer = await withTask({ name: "generate" }, () => generateAnswer(query, docs));
return answer;
});
任意のバックエンドへのエクスポート
# Grafana Tempo に送信
Traceloop.init(
app_name="my-app",
api_endpoint="http://tempo:4318", # OTLP HTTP エンドポイント
headers={}, # セルフホストのため認証不要
)
# Datadog に送信
Traceloop.init(
app_name="my-app",
api_endpoint="https://trace.agent.datadoghq.com",
headers={"DD-API-KEY": "your-dd-key"},
)
# Honeycomb に送信
Traceloop.init(
app_name="my-app",
api_endpoint="https://api.honeycomb.io",
headers={"x-honeycomb-team": "your-key"},
)
インストール
# Python
pip install traceloop-sdk
# TypeScript
npm install @traceloop/node-server-sdk
ベストプラクティス
- セマンティック規約 —
@workflow、@task、@agent、@toolデコレータを使用します。意味のあるトレース階層を作成します。 - OpenTelemetry ネイティブ — 標準の OTLP エクスポート。既存の可観測性スタック(Grafana、Datadog など)と連携します。
- 自動計測 —
Traceloop.init()は、サポートされているすべてのライブラリにパッチを適用します。呼び出しごとのコード変更は不要です。 - 関連付けプロパティ — ユーザー ID、セッション ID、会話 ID を設定して、トレースをフィルタリングおよびグループ化します。
- プロンプト管理 — プロンプトのバージョンを追跡します。プロンプトの変更と品質メトリクスを関連付けます。
- コスト追跡 — モデルごとの自動コスト計算。ワークフロー、ユーザー、または機能ごとに集計します。
- ベンダーに依存しない — コードを変更せずに、Traceloop Cloud からセルフホストの Jaeger/Tempo に切り替えます。
- OpenLLMetry 標準 — AI 向けの OpenTelemetry セマンティック規約を拡張します。コミュニティ主導の仕様です。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Traceloop (OpenLLMetry) — LLM Observability via OpenTelemetry
You are an expert in Traceloop and its OpenLLMetry SDK, the open-source observability framework that extends OpenTelemetry for LLM applications. You help developers instrument AI pipelines with automatic tracing for OpenAI, Anthropic, Cohere, LangChain, LlamaIndex, vector databases, and frameworks — exporting to any OpenTelemetry-compatible backend (Grafana Tempo, Jaeger, Datadog, Honeycomb, Traceloop Cloud).
Core Capabilities
Auto-Instrumentation
# One line — instruments everything
from traceloop.sdk import Traceloop
Traceloop.init(
app_name="my-ai-app",
api_endpoint="https://api.traceloop.com", # Or any OTLP endpoint
api_key="your-key",
disable_batch=False, # Batch for performance
)
# All OpenAI/Anthropic/LangChain calls now traced automatically
import openai
client = openai.OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
# Trace captured: model, tokens, latency, cost, prompt, completion
Workflow and Task Decorators
from traceloop.sdk.decorators import workflow, task, agent, tool
@workflow(name="customer-support-pipeline")
async def handle_support_ticket(ticket: dict):
"""Top-level workflow — groups all child spans."""
intent = await classify_intent(ticket["message"])
if intent == "technical":
return await technical_support(ticket)
return await general_support(ticket)
@task(name="classify-intent")
async def classify_intent(message: str) -> str:
"""Task span — individual step in workflow."""
response = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": f"Classify intent: {message}"}],
)
return response.choices[0].message.content
@agent(name="tech-support-agent")
async def technical_support(ticket: dict):
"""Agent span — autonomous agent with tool use."""
docs = await search_knowledge_base(ticket["message"])
response = await generate_response(ticket, docs)
return response
@tool(name="knowledge-base-search")
async def search_knowledge_base(query: str):
"""Tool span — external tool invocation."""
embedding = await client.embeddings.create(model="text-embedding-3-small", input=query)
results = await pinecone_index.query(vector=embedding.data[0].embedding, top_k=5)
return [r.metadata["text"] for r in results.matches]
TypeScript
import * as traceloop from "@traceloop/node-server-sdk";
traceloop.initialize({
appName: "my-ai-app",
apiKey: process.env.TRACELOOP_API_KEY,
disableBatch: false,
});
import { withWorkflow, withTask } from "@traceloop/node-server-sdk";
const handleQuery = withWorkflow({ name: "rag-query" }, async (query: string) => {
const docs = await withTask({ name: "retrieve" }, () => retrieveDocs(query));
const answer = await withTask({ name: "generate" }, () => generateAnswer(query, docs));
return answer;
});
Export to Any Backend
# Send to Grafana Tempo
Traceloop.init(
app_name="my-app",
api_endpoint="http://tempo:4318", # OTLP HTTP endpoint
headers={}, # No auth for self-hosted
)
# Send to Datadog
Traceloop.init(
app_name="my-app",
api_endpoint="https://trace.agent.datadoghq.com",
headers={"DD-API-KEY": "your-dd-key"},
)
# Send to Honeycomb
Traceloop.init(
app_name="my-app",
api_endpoint="https://api.honeycomb.io",
headers={"x-honeycomb-team": "your-key"},
)
Installation
# Python
pip install traceloop-sdk
# TypeScript
npm install @traceloop/node-server-sdk
Best Practices
- Semantic conventions — Use
@workflow,@task,@agent,@tooldecorators; creates meaningful trace hierarchy - OpenTelemetry native — Standard OTLP export; works with existing observability stack (Grafana, Datadog, etc.)
- Auto-instrumentation —
Traceloop.init()patches all supported libraries; no per-call code changes - Association properties — Set user ID, session ID, conversation ID for filtering and grouping traces
- Prompt management — Track prompt versions; correlate prompt changes with quality metrics
- Cost tracking — Automatic cost calculation per model; aggregate by workflow, user, or feature
- Vendor-agnostic — Switch from Traceloop Cloud to self-hosted Jaeger/Tempo without code changes
- OpenLLMetry standard — Extends OpenTelemetry semantic conventions for AI; community-driven spec