10
10
from langchain_google_genai import ChatGoogleGenerativeAI
11
11
from langchain_ollama import ChatOllama
12
12
from langchain_openai import AzureChatOpenAI , ChatOpenAI
13
- import gradio as gr
14
13
15
14
from .llm import DeepSeekR1ChatOpenAI , DeepSeekR1ChatOllama
16
15
@@ -29,7 +28,7 @@ def get_llm_model(provider: str, **kwargs):
29
28
if provider not in {"ollama" }:
30
29
api_key = get_config_value (provider , "api_key" , ** kwargs )
31
30
if not api_key :
32
- handle_api_key_error (provider )
31
+ raise MissingAPIKeyError (provider )
33
32
34
33
base_url = get_config_value (provider , "base_url" , ** kwargs )
35
34
model_name = get_config_value (provider , "model" , ** kwargs )
@@ -121,10 +120,24 @@ def get_llm_model(provider: str, **kwargs):
121
120
else :
122
121
raise ValueError (f"Unsupported provider: { provider } " )
123
122
123
+ class MissingAPIKeyError (Exception ):
124
+ """Custom exception raised when an API key is missing."""
125
+ def __init__ (self , provider : str ):
126
+ self .provider = provider
127
+ super ().__init__ (self .message ())
128
+
129
+ def message (self ):
130
+ provider_display = PROVIDER_DISPLAY_NAMES .get (self .provider , self .provider .upper ())
131
+ config = get_provider_config (self .provider )
132
+ env_var = config .get ("api_key_env" )
133
+ return (f"💥 { provider_display } API key not found! 🔑 Please set the "
134
+ f"`{ env_var } ` environment variable or provide it in the UI." )
135
+
124
136
def update_model_dropdown (llm_provider , api_key = None , base_url = None ):
125
137
"""
126
138
Update the model name dropdown with predefined models for the selected provider.
127
139
"""
140
+ import gradio as gr
128
141
# Use API keys from .env if not provided
129
142
if not api_key :
130
143
api_key = get_config_value (llm_provider , "api_key" )
@@ -136,18 +149,6 @@ def update_model_dropdown(llm_provider, api_key=None, base_url=None):
136
149
return gr .Dropdown (choices = MODEL_NAMES [llm_provider ], value = MODEL_NAMES [llm_provider ][0 ], interactive = True )
137
150
return gr .Dropdown (choices = [], value = "" , interactive = True , allow_custom_value = True )
138
151
139
- def handle_api_key_error (provider : str ):
140
- """
141
- Handles the missing API key error by raising a gr.Error with a clear message.
142
- """
143
- provider_display = PROVIDER_DISPLAY_NAMES .get (provider , provider .upper ())
144
- config = get_provider_config (provider )
145
- env_var = config .get ("api_key_env" )
146
- raise gr .Error (
147
- f"💥 { provider_display } API key not found! 🔑 Please set the "
148
- f"`{ env_var } ` environment variable or provide it in the UI."
149
- )
150
-
151
152
def encode_image (img_path ):
152
153
if not img_path :
153
154
return None
@@ -210,5 +211,5 @@ async def capture_screenshot(browser_context):
210
211
)
211
212
encoded = base64 .b64encode (screenshot ).decode ('utf-8' )
212
213
return encoded
213
- except Exception as e :
214
+ except Exception :
214
215
return None
0 commit comments