Skip to content

Commit b79a295

Browse files
Gemini Documentation chatbot with UrlContext
Implement a Gemini Documentation chatbot using the UrlContext API
1 parent 3638799 commit b79a295

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

samples/gemini-chatbot/src/main/java/com/android/ai/samples/geminichatbot/GeminiChatbotViewModel.kt

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import com.google.firebase.ai.ai
2323
import com.google.firebase.ai.type.GenerativeBackend
2424
import com.google.firebase.ai.type.HarmBlockThreshold
2525
import com.google.firebase.ai.type.HarmCategory
26+
import com.google.firebase.ai.type.PublicPreviewAPI
2627
import com.google.firebase.ai.type.SafetySetting
28+
import com.google.firebase.ai.type.Tool
2729
import com.google.firebase.ai.type.content
2830
import com.google.firebase.ai.type.generationConfig
2931
import 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 = "\nDon'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

Comments
 (0)