6
6
import sys
7
7
import os
8
8
import mimetypes
9
+ import re
9
10
mimetypes .add_type ('application/javascript' , '.js' )
10
11
mimetypes .add_type ('application/javascript' , '.mjs' )
11
12
@@ -113,9 +114,22 @@ def check_available_models():
113
114
114
115
return json .dumps (results )
115
116
117
+ def sanitize_model_error (error_message : str ) -> str :
118
+ """Sanitize model API error messages before sending to client."""
119
+ # HTML escape the message
120
+ message = html .escape (error_message )
121
+
122
+ # Remove any potential API keys that might be in the error
123
+ message = re .sub (r'(api[-_]?key|api[-_]?token)[=:]\s*[^\s&]+' , r'\1=<redacted>' , message , flags = re .IGNORECASE )
124
+
125
+ # Keep only the essential error info
126
+ if len (message ) > 500 : # Truncate very long messages
127
+ message = message [:500 ] + "..."
128
+
129
+ return message
130
+
116
131
@agent_bp .route ('/test-model' , methods = ['GET' , 'POST' ])
117
132
def test_model ():
118
-
119
133
if request .is_json :
120
134
logger .info ("# code query: " )
121
135
content = request .get_json ()
@@ -125,7 +139,7 @@ def test_model():
125
139
logger .info (content )
126
140
127
141
client = get_client (content ['model' ])
128
-
142
+
129
143
try :
130
144
response = client .get_completion (
131
145
messages = [
@@ -145,11 +159,10 @@ def test_model():
145
159
}
146
160
except Exception as e :
147
161
logger .info (f"Error: { e } " )
148
- error_message = str (e )
149
162
result = {
150
163
"model" : content ['model' ],
151
164
"status" : 'error' ,
152
- "message" : error_message ,
165
+ "message" : sanitize_model_error ( str ( e )) ,
153
166
}
154
167
else :
155
168
result = {'status' : 'error' }
0 commit comments