@@ -6,14 +6,19 @@ server_gemini_key <- Sys.getenv("GEMINI_API_KEY", "")
66has_server_gemini <- nzchar(server_gemini_key )
77server_gemini_model <- Sys.getenv(" GEMINI_DEFAULT_MODEL" , " gemini-2.5-flash" )
88
9+ .gemini_provider_label <- if (has_server_gemini ) " Gemini" else " Gemini (API Key Required)"
10+ .llm_provider_choices <- c(" OpenAI (API Key Required)" = " openai" , " gemini" )
11+ names(.llm_provider_choices )[2 ] <- .gemini_provider_label
12+ .llm_provider_default <- if (has_server_gemini ) " gemini" else " openai"
13+ .embed_provider_choices <- c(" Sentence Transformers (Python)" = " sentence-transformers" , " OpenAI (API Key Required)" = " openai" , " gemini" )
14+ names(.embed_provider_choices )[3 ] <- .gemini_provider_label
15+ .embed_provider_default <- if (has_server_gemini ) " gemini" else " sentence-transformers"
16+
917shiny :: enableBookmarking(" disable" )
1018
1119.password_input <- function (inputId , label , value = " " , placeholder = NULL ) {
1220 if (isTRUE(has_server_gemini ) && grepl(" gemini" , inputId , ignore.case = TRUE )) {
13- return (tags $ p(
14- style = " color: #475569; font-size: 13px; margin-bottom: 8px;" ,
15- " Usage is free here, supported by the Google Cloud Research program."
16- ))
21+ placeholder <- " Optional — leave blank to use the provided key"
1722 }
1823 pw <- shiny :: passwordInput(inputId , label , value = value , placeholder = placeholder )
1924 pw $ children <- lapply(pw $ children , function (ch ) {
@@ -228,11 +233,8 @@ topic_modeling_ui_content <- function() {
228233 radioButtons(
229234 " stm_label_provider" ,
230235 " AI Provider:" ,
231- choices = c(
232- " OpenAI (API Key Required)" = " openai" ,
233- " Gemini (API Key Required)" = " gemini"
234- ),
235- selected = " openai" ,
236+ choices = .llm_provider_choices ,
237+ selected = .llm_provider_default ,
236238 inline = FALSE
237239 ),
238240 conditionalPanel(
@@ -402,11 +404,8 @@ Focus on incorporating the most significant keywords while following the guideli
402404 radioButtons(
403405 " k_rec_provider" ,
404406 " AI Provider:" ,
405- choices = c(
406- " OpenAI (API Key Required)" = " openai" ,
407- " Gemini (API Key Required)" = " gemini"
408- ),
409- selected = " openai" ,
407+ choices = .llm_provider_choices ,
408+ selected = .llm_provider_default ,
410409 inline = FALSE
411410 ),
412411
@@ -563,11 +562,8 @@ Focus on incorporating the most significant keywords while following the guideli
563562 radioButtons(
564563 " content_provider" ,
565564 " AI Provider:" ,
566- choices = c(
567- " OpenAI (API Key Required)" = " openai" ,
568- " Gemini (API Key Required)" = " gemini"
569- ),
570- selected = " openai" ,
565+ choices = .llm_provider_choices ,
566+ selected = .llm_provider_default ,
571567 inline = FALSE
572568 ),
573569 conditionalPanel(
@@ -650,12 +646,8 @@ Focus on incorporating the most significant keywords while following the guideli
650646 radioButtons(
651647 " topic_embedding_provider" ,
652648 " AI Provider:" ,
653- choices = c(
654- " Sentence Transformers (Python)" = " sentence-transformers" ,
655- " OpenAI (API Key Required)" = " openai" ,
656- " Gemini (API Key Required)" = " gemini"
657- ),
658- selected = " sentence-transformers" ,
649+ choices = .embed_provider_choices ,
650+ selected = .embed_provider_default ,
659651 inline = FALSE
660652 ),
661653
@@ -2616,12 +2608,8 @@ semantic_analysis_ui_content <- function() {
26162608 radioButtons(
26172609 " embedding_provider" ,
26182610 " AI Provider:" ,
2619- choices = c(
2620- " Sentence Transformers (Python)" = " sentence-transformers" ,
2621- " OpenAI (API Key Required)" = " openai" ,
2622- " Gemini (API Key Required)" = " gemini"
2623- ),
2624- selected = " sentence-transformers" ,
2611+ choices = .embed_provider_choices ,
2612+ selected = .embed_provider_default ,
26252613 inline = FALSE
26262614 ),
26272615 conditionalPanel(
@@ -2787,12 +2775,8 @@ semantic_analysis_ui_content <- function() {
27872775 radioButtons(
27882776 " search_embedding_provider" ,
27892777 " AI Provider:" ,
2790- choices = c(
2791- " Sentence Transformers (Python)" = " sentence-transformers" ,
2792- " OpenAI (API Key Required)" = " openai" ,
2793- " Gemini (API Key Required)" = " gemini"
2794- ),
2795- selected = " sentence-transformers"
2778+ choices = .embed_provider_choices ,
2779+ selected = .embed_provider_default
27962780 ),
27972781 conditionalPanel(
27982782 condition = " input.search_embedding_provider == 'sentence-transformers'" ,
@@ -2857,11 +2841,8 @@ semantic_analysis_ui_content <- function() {
28572841 radioButtons(
28582842 " rag_provider" ,
28592843 " AI Provider:" ,
2860- choices = c(
2861- " OpenAI (API Key Required)" = " openai" ,
2862- " Gemini (API Key Required)" = " gemini"
2863- ),
2864- selected = " openai"
2844+ choices = .llm_provider_choices ,
2845+ selected = .llm_provider_default
28652846 ),
28662847 conditionalPanel(
28672848 condition = " input.rag_provider == 'openai'" ,
@@ -3081,11 +3062,8 @@ semantic_analysis_ui_content <- function() {
30813062 radioButtons(
30823063 " cluster_label_provider" ,
30833064 " AI Provider:" ,
3084- choices = c(
3085- " OpenAI (API Key Required)" = " openai" ,
3086- " Gemini (API Key Required)" = " gemini"
3087- ),
3088- selected = " openai" ,
3065+ choices = .llm_provider_choices ,
3066+ selected = .llm_provider_default ,
30893067 inline = FALSE
30903068 ),
30913069
@@ -3191,11 +3169,8 @@ semantic_analysis_ui_content <- function() {
31913169 radioButtons(
31923170 " llm_sentiment_provider" ,
31933171 " AI Provider:" ,
3194- choices = c(
3195- " OpenAI (API Key Required)" = " openai" ,
3196- " Gemini (API Key Required)" = " gemini"
3197- ),
3198- selected = " openai" ,
3172+ choices = .llm_provider_choices ,
3173+ selected = .llm_provider_default ,
31993174 inline = FALSE
32003175 ),
32013176 uiOutput(" llm_sentiment_model_ui" ),
0 commit comments