Skip to content

Commit abcfdd1

Browse files
committed
Better judge layer parsing
1 parent c9c5463 commit abcfdd1

File tree

1 file changed

+19
-16
lines changed

1 file changed

+19
-16
lines changed

interpreter/core/llm/run_function_calling_llm.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ def run_function_calling_llm(llm, request_params):
4242
code = ""
4343
function_call_detected = False
4444

45+
accumulated_review = ""
46+
review_category = None
47+
4548
for chunk in llm.completions(**request_params):
4649
if "choices" not in chunk or len(chunk["choices"]) == 0:
4750
# This happens sometimes
@@ -55,22 +58,22 @@ def run_function_calling_llm(llm, request_params):
5558
if function_call_detected:
5659
# More content after a code block? This is a code review by a judge layer.
5760
# 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+
}
7477

7578
else:
7679
yield {"type": "message", "content": delta["content"]}

0 commit comments

Comments
 (0)