@@ -42,6 +42,9 @@ def run_function_calling_llm(llm, request_params):
42
42
code = ""
43
43
function_call_detected = False
44
44
45
+ accumulated_review = ""
46
+ review_category = None
47
+
45
48
for chunk in llm .completions (** request_params ):
46
49
if "choices" not in chunk or len (chunk ["choices" ]) == 0 :
47
50
# This happens sometimes
@@ -55,22 +58,22 @@ def run_function_calling_llm(llm, request_params):
55
58
if function_call_detected :
56
59
# More content after a code block? This is a code review by a judge layer.
57
60
# print("Code safety review:", delta["content"])
58
- if delta ["content" ]. strip () == "<SAFE>" :
59
- yield { "type" : "review" , "format" : "safe" , "content" : "" }
60
- elif "<UNSAFE>" in delta [ "content" ] :
61
- content = (
62
- delta [ "content" ]
63
- . replace ( "<UNSAFE>" , "" )
64
- . replace ( "</UNSAFE>" , "" )
65
- )
66
- yield { "type" : "review" , "format" : "unsafe" , "content" : content }
67
- else :
68
- content = (
69
- delta [ "content" ]
70
- . replace ( "<WARNING>" , "" )
71
- . replace ( "</WARNING>" , "" )
72
- )
73
- yield { "type" : "review" , "format" : "warning" , "content" : content }
61
+ accumulated_review += delta ["content" ]
62
+
63
+ if review_category == None :
64
+ if "<UNSAFE>" in accumulated_review :
65
+ review_category = "unsafe"
66
+ if "<WARNING>" in accumulated_review :
67
+ review_category = "warning"
68
+ if "<SAFE>" in accumulated_review :
69
+ review_category = "safe"
70
+
71
+ if review_category != None :
72
+ yield {
73
+ "type" : "review" ,
74
+ "format" : review_category ,
75
+ "content" : delta [ "content" ],
76
+ }
74
77
75
78
else :
76
79
yield {"type" : "message" , "content" : delta ["content" ]}
0 commit comments