rusty_gemini/
grounding.rs1use serde::{Deserialize, Serialize};
2
3use crate::content::Content;
4
5#[derive(Debug, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct GroundingAtrribution {
8 pub source_id: AtrributionSourceId,
9 pub content: Content,
10}
11
12#[derive(Debug, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct GroundingMetadata {
15 pub grounding_chunk: GroundingChunk,
16 pub grounding_supports: Vec<GroundingSupport>,
17 pub web_search_queries: Vec<String>,
18 pub search_entry_point: Option<SearchEntryPoint>,
19 pub retrieval_metadata: RetrievalMetadata,
20}
21
22#[derive(Debug, Deserialize)]
23#[serde(rename_all = "camelCase")]
24pub enum AtrributionSourceId {
25 #[serde(rename_all = "camelCase")]
26 GroundingPassageId {
27 passage_id: String,
28 part_index: String,
29 },
30 SemanticRetrieverChunk {
31 source: String,
32 chunk: String,
33 },
34}
35
36#[derive(Debug, Deserialize)]
37pub struct SemanticRetrieverChunk {
38 pub source: String,
39 pub chunk: String,
40}
41
42#[derive(Debug, Deserialize)]
43pub enum GroundingChunk {
44 #[serde(rename = "web")]
46 Web {
47 uri: String,
49 title: String,
51 },
52}
53
54#[derive(Debug, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct GroundingSupport {
57 pub grounding_chunk_indices: Vec<i32>,
58 pub confidence_scores: Vec<f64>,
59 pub segment: Segment,
60}
61
62#[derive(Debug, Deserialize)]
63#[serde(rename_all = "camelCase")]
64pub struct SearchEntryPoint {
65 pub rendered_content: String,
66 pub sdk_blob: Option<String>,
67}
68
69#[derive(Debug, Deserialize)]
70#[serde(rename_all = "camelCase")]
71pub struct RetrievalMetadata {
72 pub google_search_dynamic_retrieval_score: Option<f64>,
73}
74
75#[derive(Debug, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct Segment {
78 pub part_index: i32,
79 pub start_index: i32,
80 pub end_index: i32,
81 pub text: String,
82}
83
84#[derive(Debug, Serialize, Clone)]
85#[serde(rename_all = "camelCase")]
86pub struct GoogleSearchRetrieval {
87 pub dynamic_retrieval_config: DynamicRetrievalConfig,
88}
89
90#[derive(Debug, Serialize, Clone)]
91#[serde(rename_all = "camelCase")]
92pub struct DynamicRetrievalConfig {
93 pub mode: Mode,
94 pub dynamic_threshold: Option<f32>,
95}
96
97#[derive(Debug, Serialize, Clone)]
98pub enum Mode {
99 ModeUnspecified,
100 ModeDynamic,
101}