Tip: Mới bắt đầu với Failproof AI Observability? Trang này là tài liệu tham khảo SDK event hoàn chỉnh.
Cài đặt
SDK được phân phối cho khách hàng dưới dạng wheel riêng tư thay vì từ một public package index. Quá trình onboarding của bạn bao gồm cách lấy, cài đặt và pin nó — liên hệ với Failproof AI của bạn nếu bạn cần quyền truy cập. Sau khi cài đặt, hãy xác nhận bạn có nó:Bắt đầu nhanh
Instrumenting một cuộc gọi thực tế
Trong thực tế, bạn sẽ bao quanh code agent hiện có của mình. Đặt một model call giữamodel_request trước và model_response sau, để hai event này bao phủ yêu cầu thực tế và Failproof AI Observability có thể ghép chúng lại:
tool_use và tool_result, sử dụng lại một tool_call_id trên toàn cặp.
Đây là hình ảnh những events này khi chúng đến dashboard, được mã hóa màu theo loại và có thể lọc theo environment, agent, và session:

configure()
event.* nào. An toàn khi bỏ qua; các giá trị mặc định hoạt động ngay lập tức. Tất cả các argument là keyword-only; truyền chúng theo tên như hình trên.
Khi base_dir là None (mặc định), SDK đọc $AGENTEYE_HOME nếu được đặt, nếu không sẽ quay lại ~/.agenteye. Điều này phù hợp với cách phân giải của collector, vì vậy một biến env AGENTEYE_HOME duy nhất sẽ cấu hình event spool được chia sẻ cho cả SDK và collector.
Environment
Gắn nhãn mọi event với một environment deployment (production, staging, qa, canary, v.v.). Đặt nó một lần; SDK sẽ tự động gắn nó vào mọi event.
Tùy chọn 1: thông qua configure():
configure(environment=...) thắng biến environment. Nếu không có cái nào được đặt, mặc định là "dev".
Giá trị environment xuất hiện như một bộ lọc hạng nhất trong dashboard và được lưu trữ trên máy chủ để truy vấn nhanh.
Warning: Giá trị Environment không được chứa dấu phẩy,theo nghĩa đen. Bộ lọc dashboard sử dụng đa lựa chọn được phân tách bằng dấu phẩy trên dây (?environment=prod,staging), vì vậy một environment được đặt tên làprod,bluesẽ bị chia thành hai giá trị. Các events có environments chứa dấu phẩy bị từ chối vào thời điểm tiếp nhận.
Data và quyền riêng tư
SDK chỉ ghi lại các trường bạn truyền một cách rõ ràng. Các prompts, messages, tool inputs và outputs, và model content chỉ được capture vì bạn đã chuyển chúng tới một lệnh gọievent.*. Không có gì được đọc từ process hoặc captured ngầm. Bất kỳ trường nào bạn để trống đều bị bỏ qua khỏi event hoàn toàn; nó không được ghi vào disk.
Điều đó làm cho redaction trở thành lựa chọn và trách nhiệm của bạn. Nếu một prompt hoặc tool payload chứa PII hoặc secrets mà bạn không muốn lưu trữ, hãy loại bỏ hoặc che mờ nó trước khi truyền nó tới phương thức event.
Event Reference
Hầu hết các events đến theo cặp start/end chia sẻ một correlation ID:tool_use và tool_result chia sẻ một tool_call_id, hook_triggered và hook_completed chia sẻ một hook_id, và human_wait và human_input chia sẻ một input_id. Phát event bắt đầu, thực hiện công việc, sau đó phát event kết thúc với cùng một ID. Failproof AI Observability sẽ khớp cặp này và tính duration_ms cho bạn, vì vậy bạn không bao giờ truyền duration_ms chính mình.

Tất cả các phương thức cũng chấp nhận
**kwargs tùy ý cho metadata tùy chỉnh (xem Custom Fields).
event.agent_start()
Phát khi một agent bắt đầu công việc.
event.agent_end()
Phát khi một agent hoàn thành công việc.
event.tool_use()
Phát khi một agent gọi một tool. Cặp với tool_result; SDK tự động tính duration_ms.
event.tool_result()
Phát khi một tool trả về. Tương quan với tool_use thông qua tool_call_id.
event.model_request()
Phát ngay trước khi gửi một prompt tới một LLM.
messages chấp nhận cả content content thông thường hoặc Anthropic-style list-of-blocks content. Các sampling params (temperature, max_tokens, v.v.) có thể được truyền dưới dạng extra kwargs.
event.model_response()
Phát khi LLM trả về một response.
content chấp nhận cả một string thông thường (generic providers) hoặc một danh sách các content blocks theo kiểu Anthropic. Tool calls sống bên trong content dưới dạng blocks {"type": "tool_use", ...}, không có trường tool_calls riêng.
event.hook_triggered()
Phát khi một hook kích hoạt. Cặp với hook_completed; SDK tự động tính duration_ms.
event.hook_completed()
Phát khi một hook hoàn thành. Tương quan với hook_triggered thông qua hook_id.
event.error()
Phát khi một lỗi không được xử lý xảy ra.
Human-in-the-Loop Events
Các human-in-the-loop events mang lại sự giám sát trong những thời điểm một người bước vào quá trình thực thi của agent (chờ phê duyệt, cung cấp input, tạm dừng hoặc dừng agent). Chúng cho phép bạn đo lường con người mất bao lâu để phản hồi (SDK tự động tínhduration_ms trên các paired events), audit người nào đã tạm dừng hoặc ngắt agent, và xây dựng các quy trình phê duyệt và giám sát hiển thị trong dashboard.
event.human_wait()
Phát khi agent tạm dừng thực thi để chờ một con người cung cấp input. Cặp với human_input; SDK tự động tính duration_ms (con người mất bao lâu để phản hồi).
event.human_input()
Phát khi một con người cung cấp input và agent tiếp tục. Tương quan với human_wait thông qua input_id. duration_ms được tự động tính và không được truyền bởi người gọi.
event.human_pause()
Phát khi một con người chủ động tạm dừng agent (ví dụ: thông qua một điều khiển dashboard). Agent bị tạm dừng nhưng không bị chấm dứt.
event.human_interrupt()
Phát khi một con người chủ động dừng agent giữa quá trình thực thi. Không giống như human_pause, công việc của agent bị chấm dứt thay vì tạm dừng.
Custom Fields
Bất kỳ extra keyword argument nào được thêm vào event sau các trường tiêu chuẩn:timestamp, type, và environment được dành riêng và sẽ tăng ValueError (Reserved field names cannot be used as custom fields: [...]) nếu được truyền dưới dạng custom fields. session_id và agent_id là các tham số bắt buộc trên mọi phương thức event và không thể được cung cấp lần thứ hai; Python sẽ tăng TypeError nếu bạn làm. Thay vào đó, hãy đặt environment với configure(environment=...) (hoặc biến AGENTEYE_ENVIRONMENT).
Giữ payloads là structured JSON khi bạn muốn truy vấn các trường của chúng. Các giá trị mà JSON không hỗ trợ về mặt bản địa—như datetimes, UUIDs, decimals, sets, bytes, hoặc model objects—được chuyển đổi thành strings để ghi lại tiếp tục một cách an toàn.
Cách Events Được Ghi
Events được buffer trong process và flushed vào disk mỗiflush_interval giây (mặc định 500 ms). Mỗi flush ghi một file JSONL:
Bước tiếp theo
- Event stream: xem các events này đến live, được mã hóa màu và có thể lọc theo environment, agent, và session.
- Sessions: xem cách các paired events tái cấu trúc mỗi agent run dưới dạng một execution graph và timeline.

