@@ -23,7 +23,9 @@ import com.google.firebase.ai.ai
2323import com.google.firebase.ai.type.GenerativeBackend
2424import com.google.firebase.ai.type.HarmBlockThreshold
2525import com.google.firebase.ai.type.HarmCategory
26+ import com.google.firebase.ai.type.PublicPreviewAPI
2627import com.google.firebase.ai.type.SafetySetting
28+ import com.google.firebase.ai.type.Tool
2729import com.google.firebase.ai.type.content
2830import com.google.firebase.ai.type.generationConfig
2931import javax.inject.Inject
@@ -48,9 +50,16 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
4850 private val _uiState = MutableStateFlow (GeminiChatbotUiState ())
4951 val uiState: StateFlow <GeminiChatbotUiState > = _uiState .asStateFlow()
5052
53+ val url1 = " https://developer.android.com/ai/gemini"
54+ val url2 = " https://developer.android.com/ai/gemini/developer-api"
55+ val url3 = " https://developer.android.com/ai/gemini/live"
56+ val url4 = " https://developer.android.com/ai/vertex-ai-firebase"
57+ val urlContextPrompt = " \n Don't hallucinate, use the webpages documentation to answer: \n $url1 \n $url2 \n $url3 \n $url4 "
58+
59+ @OptIn(PublicPreviewAPI ::class )
5160 private val generativeModel by lazy {
5261 Firebase .ai(backend = GenerativeBackend .googleAI()).generativeModel(
53- " gemini-2.5 -flash" ,
62+ " gemini-3 -flash-preview " ,
5463 generationConfig = generationConfig {
5564 temperature = 0.9f
5665 topK = 32
@@ -66,6 +75,7 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
6675 systemInstruction = content {
6776 text(""" You are a friendly assistant. Keep your response short.""" )
6877 },
78+ tools = listOf (Tool .urlContext())
6979 )
7080 }
7181
@@ -85,7 +95,7 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
8595 )
8696 }
8797
88- val response = chat.sendMessage(message)
98+ val response = chat.sendMessage(message + urlContextPrompt )
8999 val newMessage = response.text?.let {
90100 ChatMessage (
91101 text = it.trim(),
0 commit comments