mirror of
https://github.com/openai/codex.git
synced 2026-11-10 21:00:47 +00:00
core: emit responses api call analytics
This commit is contained in:
@@ -42,6 +42,7 @@ use tokio::sync::mpsc;
|
||||
const ANALYTICS_EVENTS_QUEUE_SIZE: usize = 256;
|
||||
const ANALYTICS_EVENTS_TIMEOUT: Duration = Duration::from_secs(10);
|
||||
const ANALYTICS_EVENT_DEDUPE_MAX_KEYS: usize = 4096;
|
||||
const RESPONSES_API_ERROR_MAX_BYTES: usize = 1024;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub(crate) struct AnalyticsEventsQueue {
|
||||
@@ -230,13 +231,14 @@ impl AnalyticsEventsClient {
|
||||
&input.output_items,
|
||||
));
|
||||
let token_usage = input.token_usage;
|
||||
let error = input.error.map(truncate_responses_api_error);
|
||||
let event = CodexResponsesApiCallFact {
|
||||
thread_id: tracking.thread_id,
|
||||
turn_id: tracking.turn_id,
|
||||
responses_id: input.responses_id,
|
||||
turn_responses_call_index: input.turn_responses_call_index,
|
||||
status: input.status,
|
||||
error: input.error,
|
||||
error,
|
||||
started_at: input.started_at,
|
||||
completed_at: input.completed_at,
|
||||
duration_ms: input.duration_ms,
|
||||
@@ -339,6 +341,18 @@ impl AnalyticsEventsClient {
|
||||
}
|
||||
}
|
||||
|
||||
fn truncate_responses_api_error(mut error: String) -> String {
|
||||
if error.len() <= RESPONSES_API_ERROR_MAX_BYTES {
|
||||
return error;
|
||||
}
|
||||
let mut truncate_at = RESPONSES_API_ERROR_MAX_BYTES;
|
||||
while !error.is_char_boundary(truncate_at) {
|
||||
truncate_at -= 1;
|
||||
}
|
||||
error.truncate(truncate_at);
|
||||
error
|
||||
}
|
||||
|
||||
async fn send_track_events(
|
||||
auth_manager: &Arc<AuthManager>,
|
||||
base_url: &str,
|
||||
|
||||
Reference in New Issue
Block a user