use serde::{ Serialize, Deserialize };
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct SearchGroundingConfig
{
pub search_engine : SearchEngine,
pub max_results : usize,
pub snippet_length : usize,
pub enable_safe_search : bool,
pub language_preference : Option< String >,
}
impl Default for SearchGroundingConfig
{
#[ inline ]
fn default() -> Self
{
Self
{
search_engine : SearchEngine::Google,
max_results : 10,
snippet_length : 200,
enable_safe_search : true,
language_preference : Some( "en".to_string() ),
}
}
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub enum SearchEngine
{
Google,
Bing,
Custom
{
endpoint : String,
api_key : String,
},
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct GroundedResponse
{
pub response : String,
pub sources : Vec< SearchSource >,
pub confidence_score : f64,
pub search_metadata : SearchMetadata,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct SearchSource
{
pub url : String,
pub title : String,
pub snippet : String,
pub relevance_score : f64,
}
#[ derive( Debug, Clone, Serialize, Deserialize ) ]
pub struct SearchMetadata
{
pub query : String,
pub total_results : usize,
pub search_time_ms : u64,
pub engine_used : String,
}