@ -485,7 +485,7 @@ async fn run_generation_inner(
// Log the LLM call
// Log the LLM call
if let Ok ( ref resp ) = result {
if let Ok ( ref resp ) = result {
let resp_str = serde_json ::to_string_pretty ( resp ) . unwrap_or_default ( ) ;
let resp_str = serde_json ::to_string_pretty ( resp ) . unwrap_or_default ( ) ;
crate ::db ::llm_call_log ::insert ( & pool , uid , jid , "classify_summarize" , & mdl , & sys , & usr , & resp_str , duration as i32 ). await . ok ( ) ;
crate ::db ::llm_call_log ::insert ( & pool , uid , jid , "classify_summarize" , & mdl , & sys , & usr , & resp_str , duration as i32 , Some ( & url ) ). await . ok ( ) ;
}
}
( url , su , title , result )
( url , su , title , result )
@ -569,7 +569,7 @@ async fn run_generation_inner(
let llm_start = std ::time ::Instant ::now ( ) ;
let llm_start = std ::time ::Instant ::now ( ) ;
let raw_results = provider . call_llm ( & model_websearch , & sys_prompt , & usr_prompt , & search_schema ) . await ? ;
let raw_results = provider . call_llm ( & model_websearch , & sys_prompt , & usr_prompt , & search_schema ) . await ? ;
let llm_duration = llm_start . elapsed ( ) . as_millis ( ) as u64 ;
let llm_duration = llm_start . elapsed ( ) . as_millis ( ) as u64 ;
log_llm_call ( & state . pool , user_id , job_id , "search" , & model_websearch , & sys_prompt , & usr_prompt , & raw_results , llm_duration ). await ;
log_llm_call ( & state . pool , user_id , job_id , "search" , & model_websearch , & sys_prompt , & usr_prompt , & raw_results , llm_duration , None ). await ;
emit_progress ( tx , "parsing" , "Analyse des resultats..." , 75 ) ;
emit_progress ( tx , "parsing" , "Analyse des resultats..." , 75 ) ;
let parsed = parse_llm_output ( & raw_results , & user_categories ) ? ;
let parsed = parse_llm_output ( & raw_results , & user_categories ) ? ;
@ -759,11 +759,13 @@ async fn log_llm_call(
user_prompt : & str ,
user_prompt : & str ,
response : & serde_json ::Value ,
response : & serde_json ::Value ,
duration_ms : u64 ,
duration_ms : u64 ,
article_url : Option < & str > ,
) {
) {
let response_str = serde_json ::to_string_pretty ( response ) . unwrap_or_default ( ) ;
let response_str = serde_json ::to_string_pretty ( response ) . unwrap_or_default ( ) ;
db ::llm_call_log ::insert (
db ::llm_call_log ::insert (
pool , user_id , job_id , call_type , model ,
pool , user_id , job_id , call_type , model ,
system_prompt , user_prompt , & response_str , duration_ms as i32 ,
system_prompt , user_prompt , & response_str , duration_ms as i32 ,
article_url ,
)
)
. await
. await
. ok ( ) ; // Don't fail synthesis if logging fails
. ok ( ) ; // Don't fail synthesis if logging fails