1717
1818# TODO: full log file
1919
20+ MAX_PROMPT_LENGTH = 2048
21+
2022
2123async def generate_prompts (
2224 prompts : list [str ] | AsyncGenerator ,
@@ -43,7 +45,10 @@ def multi_modality_spec(llm_spec):
4345
4446async def process_prompt (
4547 request_factory , prompt , tokens , module_name , refusals , errors
46- ):
48+ ) -> tuple [int , bool ]:
49+ """
50+ Process a single prompt and update the token count and failure status.
51+ """
4752 try :
4853 response = await request_factory .fn (prompt = prompt )
4954 if response .status_code == 422 :
@@ -52,11 +57,9 @@ async def process_prompt(
5257 return tokens , True
5358
5459 if response .status_code >= 400 :
55- raise httpx .HTTPStatusError (
56- f"HTTP { response .status_code } { response .content = } " ,
57- request = response .request ,
58- response = response ,
59- )
60+ logger .error (f"HTTP { response .status_code } { response .content = } " )
61+ errors .append ((module_name , prompt , response .status_code , response .text ))
62+ return tokens , True
6063 response_text = response .text
6164 tokens += len (response_text .split ())
6265
@@ -150,6 +153,7 @@ async def perform_single_shot_scan(
150153 cost = cost ,
151154 progress = round (progress , 2 ),
152155 failureRate = round (failure_rate * 100 , 2 ),
156+ prompt = prompt [:MAX_PROMPT_LENGTH ],
153157 ).model_dump_json ()
154158
155159 if optimize and len (failure_rates ) >= 5 :
@@ -183,7 +187,9 @@ async def perform_single_shot_scan(
183187 except Exception as e :
184188 logger .exception ("Scan failed" )
185189 yield ScanResult .status_msg (f"Scan failed: { str (e )} " )
186- raise e
190+ # raise e
191+ finally :
192+ yield ScanResult .status_msg ("Scan completed." )
187193
188194
189195async def perform_many_shot_scan (
@@ -281,6 +287,7 @@ async def perform_many_shot_scan(
281287 cost = cost ,
282288 progress = round (progress , 2 ),
283289 failureRate = round (failure_rate * 100 , 2 ),
290+ prompt = prompt [:MAX_PROMPT_LENGTH ],
284291 ).model_dump_json ()
285292
286293 if optimize and len (failure_rates ) >= 5 :
0 commit comments