Mục lục
Dự án là gì
Dự án là cơ chế để nhóm log theo logic trong AITracer. Sử dụng dự án để:
- Phân tách log: Sắp xếp log theo môi trường, tính năng, nhóm
- Phân tích chi phí: Nắm bắt chi phí theo đơn vị dự án
- Cài đặt cảnh báo: Cài đặt quy tắc cảnh báo khác nhau cho từng dự án
- Kiểm soát truy cập: Cấp quyền cho thành viên nhóm theo dự án
Chức năng dự án có sẵn trên tất cả các gói. Không giới hạn số lượng dự án.
Chỉ định dự án trong SDK
Python
from aitracer import AITracer
# Chỉ định dự án trong constructor
tracer = AITracer(
api_key="at-xxxx",
project="my-chatbot-production"
)
# Tất cả log sau đó sẽ được ghi vào dự án này
client = tracer.wrap_openai(OpenAI())
PHP
<?php
use AITracer\AITracer;
// Chỉ định dự án trong constructor
$tracer = new AITracer([
'api_key' => 'at-xxxx',
'project' => 'my-chatbot-production'
]);
$client = $tracer->wrapOpenAI(OpenAI::client($apiKey));
TypeScript
import { AITracer } from '@haro/aitracer';
// Chỉ định dự án trong constructor
const tracer = new AITracer({
apiKey: 'at-xxxx',
projectId: 'my-chatbot-production'
});
Cài đặt với biến môi trường
Sử dụng biến môi trường cho phép chuyển đổi dự án theo từng môi trường mà không cần thay đổi code.
Biến môi trường
| Tên biến | Mô tả | Ví dụ |
|---|---|---|
AITRACER_API_KEY |
API key | at-xxxx... |
AITRACER_PROJECT |
Tên dự án | my-chatbot-production |
Ví dụ file .env
# Môi trường sản xuất (.env.production)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-production
# Môi trường staging (.env.staging)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-staging
# Môi trường phát triển (.env.development)
AITRACER_API_KEY=at-xxxx
AITRACER_PROJECT=my-chatbot-development
Code sử dụng biến môi trường
from aitracer import AITracer
# Tự động đọc từ biến môi trường (có thể bỏ qua tham số)
tracer = AITracer()
# Hoặc lấy từ biến môi trường một cách rõ ràng
import os
tracer = AITracer(
api_key=os.getenv("AITRACER_API_KEY"),
project=os.getenv("AITRACER_PROJECT")
)
Thay vì hardcode tên dự án trong code, quản lý bằng biến môi trường cho phép sử dụng cùng code trên nhiều môi trường.
Chuyển đổi dự án động
Bạn cũng có thể chuyển đổi dự án theo tình huống trong cùng một ứng dụng.
Chỉ định dự án theo từng yêu cầu
# Với log thủ công, có thể chỉ định dự án theo yêu cầu
tracer.log({
"model": "gpt-4",
"provider": "openai",
"project": "special-feature", # Chỉ log này vào dự án khác
"input_data": {...},
"output_data": {...}
})
Sử dụng nhiều instance Tracer
from aitracer import AITracer
from openai import OpenAI
# Tạo Tracer cho từng dự án
tracer_chat = AITracer(project="chatbot")
tracer_search = AITracer(project="search-feature")
tracer_summary = AITracer(project="summarization")
# Sử dụng client khác nhau cho từng tính năng
chat_client = tracer_chat.wrap_openai(OpenAI())
search_client = tracer_search.wrap_openai(OpenAI())
summary_client = tracer_summary.wrap_openai(OpenAI())
Chuyển đổi dự án tạm thời với lệnh with
# Dự án mặc định
tracer = AITracer(project="main-app")
client = tracer.wrap_openai(OpenAI())
# Yêu cầu bình thường (ghi vào main-app)
response = client.chat.completions.create(...)
# Thay đổi dự án tạm thời
with tracer.project("experimental-feature"):
# Log trong khối này ghi vào experimental-feature
response = client.chat.completions.create(...)
# Ngoài khối trở về dự án gốc
response = client.chat.completions.create(...) # Ghi vào main-app
Mẫu thiết kế
Cách thiết kế dự án khác nhau tùy theo quy mô nhóm và cấu hình ứng dụng. Sau đây là các mẫu điển hình.
Mẫu theo môi trường
Phân tách dự án theo môi trường như phát triển, staging, sản xuất. Đơn giản và phổ biến nhất.
myapp-staging
myapp-production
Mẫu theo tính năng
Phân tách dự án theo từng tính năng của ứng dụng. Hiệu quả cho phân tích chi phí theo tính năng.
search
summarization
translation
Mẫu theo nhóm
Phân tách dự án theo từng nhóm phát triển. Hiệu quả cho quản lý ngân sách theo nhóm.
team-beta
team-gamma
Mẫu kết hợp
Kết hợp nhiều trục như môi trường x tính năng. Dành cho dự án lớn.
chatbot-staging
search-production
search-staging
Hướng dẫn chọn mẫu
| Tình huống | Mẫu khuyến nghị | Lý do |
|---|---|---|
| Nhóm nhỏ, ứng dụng đơn | Theo môi trường | Đơn giản và dễ quản lý |
| Ứng dụng có nhiều tính năng | Theo tính năng hoặc kết hợp | Có thể nắm bắt chi phí theo tính năng |
| Phát triển với nhiều nhóm | Theo nhóm hoặc kết hợp | Quản lý ngân sách theo nhóm |
| Cấu trúc microservices | Theo dịch vụ + môi trường | Có thể giám sát theo từng dịch vụ |
Phương pháp tốt nhất
1. Thống nhất quy tắc đặt tên
Đặt tên dự án theo quy tắc nhất quán.
# Ví dụ tốt: Thống nhất với kebab-case
my-chatbot-production
my-chatbot-staging
search-api-production
# Ví dụ nên tránh: Quy tắc đặt tên không nhất quán
MyChatBot
my_chatbot_staging
searchAPI-prod
2. Sử dụng biến môi trường
Thay vì hardcode tên dự án trong code, quản lý bằng biến môi trường.
# Ví dụ xấu: Hardcode
tracer = AITracer(project="my-chatbot-production")
# Ví dụ tốt: Biến môi trường
tracer = AITracer(project=os.getenv("AITRACER_PROJECT"))
3. Nhất định phân tách sản xuất và phát triển
Ít nhất, môi trường sản xuất và môi trường phát triển phải là các dự án riêng biệt.
- Log test khi phát triển không lẫn với dữ liệu sản xuất
- Có thể nắm bắt chính xác chi phí và hiệu suất sản xuất
- Cảnh báo sản xuất không kích hoạt bởi log phát triển
4. Kết hợp với metadata
Sử dụng dự án để phân loại lớn, metadata để phân loại chi tiết là hiệu quả.
# Dự án: Phân loại lớn theo ứng dụng + môi trường
tracer = AITracer(project="chatbot-production")
# Metadata: Thêm thuộc tính chi tiết
response = client.chat.completions.create(
model="gpt-4",
messages=[...],
extra_body={
"aitracer_metadata": {
"user_id": "user-123",
"feature": "customer-support",
"version": "2.1.0"
}
}
)
5. Cài đặt cảnh báo cho từng dự án
Nhất định cài đặt cảnh báo cho dự án môi trường sản xuất.
- Thông báo khi tỷ lệ lỗi vượt quá 5%
- Cảnh báo khi chi phí tháng đạt 80% ngân sách
- Thông báo khi độ trễ P95 vượt ngưỡng
Không thể thay đổi dự án của log đã ghi. Khi thay đổi tên dự án, sẽ được ghi như dự án mới.
Quản lý trên Dashboard
Tạo dự án
- Đăng nhập vào Dashboard
- Nhấn "Dự án" trong menu bên trái
- Nhấn "+ Dự án mới"
- Nhập tên dự án và mô tả
- Nhấn "Tạo"
Cài đặt dự án
| Mục cài đặt | Mô tả |
|---|---|
| Tên và mô tả | Thông tin nhận diện dự án |
| Cảnh báo mặc định | Cảnh báo tự động cài đặt khi tạo dự án |
| Thời gian lưu trữ dữ liệu | Thời gian lưu trữ log (chỉ Enterprise có thể tùy chỉnh) |
| Quyền truy cập | Quyền truy cập của thành viên nhóm |
Lọc theo dự án
Bạn có thể sử dụng dự án làm bộ lọc trên các màn hình của dashboard.
- Trang chủ: Hiển thị thống kê theo dự án
- Log: Lọc log theo dự án
- Phân tích: Phân tích chi phí và hiệu suất theo dự án
- Cảnh báo: Quy tắc cảnh báo riêng cho dự án
Khi chỉ định tên dự án trong SDK, dự án sẽ tự động được tạo. Không bắt buộc phải tạo trước trên dashboard.
