1515 */
1616package com.android.ai.samples.geminichatbot
1717
18+ import androidx.compose.material3.TooltipState
1819import androidx.lifecycle.ViewModel
1920import androidx.lifecycle.viewModelScope
2021import com.android.ai.uicomponent.ChatMessage
@@ -23,7 +24,9 @@ import com.google.firebase.ai.ai
2324import com.google.firebase.ai.type.GenerativeBackend
2425import com.google.firebase.ai.type.HarmBlockThreshold
2526import com.google.firebase.ai.type.HarmCategory
27+ import com.google.firebase.ai.type.PublicPreviewAPI
2628import com.google.firebase.ai.type.SafetySetting
29+ import com.google.firebase.ai.type.Tool
2730import com.google.firebase.ai.type.content
2831import com.google.firebase.ai.type.generationConfig
2932import javax.inject.Inject
@@ -48,9 +51,16 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
4851 private val _uiState = MutableStateFlow (GeminiChatbotUiState ())
4952 val uiState: StateFlow <GeminiChatbotUiState > = _uiState .asStateFlow()
5053
54+ val url1 = " https://developer.android.com/ai/gemini"
55+ val url2 = " https://developer.android.com/ai/gemini/developer-api"
56+ val url3 = " https://developer.android.com/ai/gemini/live"
57+ val url4 = " https://developer.android.com/ai/vertex-ai-firebase"
58+ val urlContextPrompt = " \n Don't hallucinate, use the webpages documentation to answer: \n $url1 \n $url2 \n $url3 \n $url4 "
59+
60+ @OptIn(PublicPreviewAPI ::class )
5161 private val generativeModel by lazy {
5262 Firebase .ai(backend = GenerativeBackend .googleAI()).generativeModel(
53- " gemini-2.5 -flash" ,
63+ " gemini-3 -flash-preview " ,
5464 generationConfig = generationConfig {
5565 temperature = 0.9f
5666 topK = 32
@@ -66,6 +76,7 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
6676 systemInstruction = content {
6777 text(""" You are a friendly assistant. Keep your response short.""" )
6878 },
79+ tools = listOf (Tool .urlContext())
6980 )
7081 }
7182
@@ -85,7 +96,7 @@ class GeminiChatbotViewModel @Inject constructor() : ViewModel() {
8596 )
8697 }
8798
88- val response = chat.sendMessage(message)
99+ val response = chat.sendMessage(message + urlContextPrompt )
89100 val newMessage = response.text?.let {
90101 ChatMessage (
91102 text = it.trim(),
0 commit comments