Tích hợp AITracer chỉ với 3 dòng code. Thời gian cần thiết: khoảng 5 phút
Trước tiên, tạo tài khoản AITracer và lấy API key của bạn.
at-xxxx...)Cài đặt SDK cho ngôn ngữ lập trình của bạn.
Cài đặt bằng pip:
pip install aitracer
Yêu cầu Python 3.8 trở lên.
Cài đặt bằng Composer:
composer require haro/aitracer
Yêu cầu PHP 8.0 trở lên.
Cài đặt bằng npm hoặc yarn:
# npm
npm install @haro/aitracer
# yarn
yarn add @haro/aitracer
Yêu cầu Node.js 18 trở lên.
Chỉ cần bọc LLM client hiện tại của bạn với AITracer để tự động ghi log tất cả các yêu cầu.
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
# Thiết lập callback handler cho 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!' }]
});
// Ghi log yêu cầu
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!' }]
});
// Ghi log yêu cầu
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 và AITRACER_PROJECT, bạn có thể bỏ qua các tham số này.
Sau khi chạy code, kiểm tra dashboard AITracer để xác nhận log của bạn.
| Nhà cung cấp | Phương thức | SDK hỗ trợ |
|---|---|---|
| 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 |
| Ghi log thủ công | tracer.log() |
Python, PHP, TypeScript |
Bạn có thể chỉ định các tùy chọn sau khi khởi tạo:
| Tùy chọn | Kiểu | Mô tả | Mặc định |
|---|---|---|---|
api_key |
string | API key AITracer | Biến môi trường AITRACER_API_KEY |
project |
string | Tên dự án (hướng dẫn chi tiết) | None |
enabled |
bool | Bật/tắt ghi log | true |
base_url |
string | API endpoint | https://api.aitracer.co |
| Tùy chọn | Kiểu | Mô tả | Mặc định |
|---|---|---|---|
sync |
bool | Chế độ đồng bộ (khuyến nghị cho Lambda/Cloud Functions) | false |
batch_size |
int | Kích thước batch khi gửi bất đồng bộ | 10 |
flush_interval |
float | Khoảng thời gian tự động flush (giây, chế độ bất đồng bộ) | 5.0 |
flush_on_exit |
bool | Tự động flush khi thoát tiến trình | true |
| Tùy chọn | Kiểu | Mô tả | Mặc định |
|---|---|---|---|
pii_detection |
bool | Bật/tắt phát hiện PII | false |
pii_action |
string | Hành động khi phát hiện PII (mask, redact, hash, none) | mask |
pii_types |
array | Loại PII cần phát hiện | ["email", "phone", "credit_card", "ssn"] |
from aitracer import AITracer
tracer = AITracer(
api_key="at-xxxx",
project="my-chatbot",
# Cài đặt PII
pii_detection=True,
pii_action="mask",
# Cài đặt gửi
batch_size=20,
flush_interval=10.0,
# Chế độ đồng bộ (cho serverless)
sync=False
)
sync=True cho môi trường serverless để tránh mất log.
Tổng hợp log theo phiên người dùng để trực quan hóa luồng hội thoại.
# Sử dụng lệnh with để quản lý phiên (tự động bắt đầu/kết thúc)
with tracer.session(
session_id="session-abc123",
user_id="user-456",
metadata={"channel": "web", "device": "mobile"}
) as session:
# Tất cả yêu cầu trong phiên tự động được nhóm lại
response1 = client.chat.completions.create(...)
response2 = client.chat.completions.create(...)
# Ghi nhận phản hồi người dùng
session.thumbs_up() # Cho phản hồi cuối cùng
# Phiên tự động kết thúc khi thoát khỏi with block
Tính năng phân tích phiên:
Tính năng Người dùng ứng dụng cho phép bạn theo dõi mức sử dụng ở cấp người dùng cuối của ứng dụng AI. Hiểu chi phí, mức sử dụng và mô hình hành vi theo từng người dùng để cải thiện chiến lược tính phí và trải nghiệm người dùng.
Khi bắt đầu phiên với user_id, tất cả log của người dùng đó sẽ tự động được tổng hợp.
# Chỉ định người dùng trong phiên (khuyến nghị)
with tracer.session(
session_id="session-abc123",
user_id="user-456", # ID người dùng của ứng dụng bạn
) as session:
# Tất cả yêu cầu trong phiên này được liên kết với user-456
response = client.chat.completions.create(...)
Ngoài ra, bạn có thể chỉ định theo từng yêu cầu qua metadata.
# Chỉ định user_id trong metadata
response = client.chat.completions.create(
model="gpt-4",
messages=[...],
extra_body={
"aitracer_metadata": {
"user_id": "user-456"
}
}
)
Truy cập menu "Người dùng ứng dụng" trong dashboard để xem danh sách và chi tiết người dùng.
| Trường hợp sử dụng | Mô tả |
|---|---|
| Tính phí theo mức sử dụng | Theo dõi chi phí API theo người dùng để tính toán số tiền tính phí |
| Giới hạn tỷ lệ | Xác định người dùng nặng và thiết kế chính sách giới hạn tỷ lệ |
| Điều tra lỗi | Điều tra nguyên nhân lỗi cho người dùng cụ thể |
| Cải thiện trải nghiệm | Xác định người dùng có độ trễ cao và cải thiện trải nghiệm của họ |
Để biết thêm chi tiết, xem Hướng dẫn Dashboard - Phân tích người dùng ứng dụng.
Nhóm nhiều cuộc gọi API vào một trace duy nhất. Hữu ích cho RAG pipeline và xử lý nhiều bước.
# Nhóm nhiều cuộc gọi API vào một trace duy nhất
with tracer.trace("user-query-123") as trace:
# Cuộc gọi API đầu tiên
response1 = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Summarize this article..."}]
)
# Cuộc gọi API thứ hai (thuộc cùng trace)
response2 = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Translate: {response1.choices[0].message.content}"}]
)
# Thêm metadata
trace.set_metadata({
"user_id": "user-456",
"feature": "summarization",
"article_id": "article-789"
})
Đính kèm metadata tùy ý vào mỗi yêu cầu để tìm kiếm và lọc sau này.
# Đính kèm metadata theo yêu cầu
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"
}
}
)
Metadata hỗ trợ tối đa 10 key, mỗi giá trị giới hạn 1000 ký tự.