Skip to content

Commit de35005

Browse files
committed
Handle server {STOP} token
1 parent bebb0b5 commit de35005

File tree

1 file changed

+36
-38
lines changed

1 file changed

+36
-38
lines changed

interpreter/core/async_core.py

Lines changed: 36 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -701,47 +701,45 @@ async def openai_compatible_generator():
701701
async def chat_completion(request: ChatCompletionRequest):
702702
# Convert to LMC
703703

704-
user_messages = []
705-
for message in reversed(request.messages):
706-
if message.role == "user":
707-
user_messages.append(message)
708-
else:
709-
break
710-
user_messages.reverse()
711-
712-
for message in user_messages:
713-
if type(message.content) == str:
714-
async_interpreter.messages.append(
715-
{"role": "user", "type": "message", "content": message.content}
716-
)
717-
if type(message.content) == list:
718-
for content in message.content:
719-
if content["type"] == "text":
720-
async_interpreter.messages.append(
721-
{"role": "user", "type": "message", "content": content}
704+
last_message = request.messages[-1]
705+
706+
if last_message.role != "user":
707+
raise ValueError("Last message must be from the user.")
708+
709+
if last_message.content == "{STOP}":
710+
# Handle special STOP token
711+
return
712+
713+
if type(last_message.content) == str:
714+
async_interpreter.messages.append(last_message)
715+
if type(last_message.content) == list:
716+
for content in last_message.content:
717+
if content["type"] == "text":
718+
async_interpreter.messages.append(
719+
{"role": "user", "type": "message", "content": content}
720+
)
721+
elif content["type"] == "image_url":
722+
if "url" not in content["image_url"]:
723+
raise Exception("`url` must be in `image_url`.")
724+
url = content["image_url"]["url"]
725+
print(url[:100])
726+
if "base64," not in url:
727+
raise Exception(
728+
'''Image must be in the format: "data:image/jpeg;base64,{base64_image}"'''
722729
)
723-
elif content["type"] == "image_url":
724-
if "url" not in content["image_url"]:
725-
raise Exception("`url` must be in `image_url`.")
726-
url = content["image_url"]["url"]
727-
print(url[:100])
728-
if "base64," not in url:
729-
raise Exception(
730-
'''Image must be in the format: "data:image/jpeg;base64,{base64_image}"'''
731-
)
732730

733-
# data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oA...
731+
# data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6oA...
734732

735-
data = url.split("base64,")[1]
736-
format = "base64." + url.split(";")[0].split("/")[1]
737-
async_interpreter.messages.append(
738-
{
739-
"role": "user",
740-
"type": "image",
741-
"format": format,
742-
"content": data,
743-
}
744-
)
733+
data = url.split("base64,")[1]
734+
format = "base64." + url.split(";")[0].split("/")[1]
735+
async_interpreter.messages.append(
736+
{
737+
"role": "user",
738+
"type": "image",
739+
"format": format,
740+
"content": data,
741+
}
742+
)
745743

746744
if request.stream:
747745
return StreamingResponse(

0 commit comments

Comments
 (0)