in generativeai-android-sample/app/src/main/kotlin/com/google/ai/sample/GenerativeAiViewModelFactory.kt [29:75]
override fun <T : ViewModel> create(
viewModelClass: Class<T>,
extras: CreationExtras
): T {
val config = generationConfig {
temperature = 0.7f
}
return with(viewModelClass) {
when {
isAssignableFrom(SummarizeViewModel::class.java) -> {
// Initialize a GenerativeModel with the `gemini-flash` AI model
// for text generation
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash-latest",
apiKey = BuildConfig.apiKey,
generationConfig = config
)
SummarizeViewModel(generativeModel)
}
isAssignableFrom(PhotoReasoningViewModel::class.java) -> {
// Initialize a GenerativeModel with the `gemini-flash` AI model
// for multimodal text generation
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash-latest",
apiKey = BuildConfig.apiKey,
generationConfig = config
)
PhotoReasoningViewModel(generativeModel)
}
isAssignableFrom(ChatViewModel::class.java) -> {
// Initialize a GenerativeModel with the `gemini-flash` AI model for chat
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash-latest",
apiKey = BuildConfig.apiKey,
generationConfig = config
)
ChatViewModel(generativeModel)
}
else ->
throw IllegalArgumentException("Unknown ViewModel class: ${viewModelClass.name}")
}
} as T
}