blockentropy / ml-client

Machine Learning Clients for Open Source Infra
8 stars 3 forks source link

Server crashes with unsupported regex characters #18

Open ManilShrestha opened 4 months ago

ManilShrestha commented 4 months ago

Structured generation is currently supported in ml-client through Outlines.

Regex structured generation with unsupported regex characters causes the server to crash.

Here is an example:

import time
messages = [
    SystemMessage(
        content="You are a helpful assistant."
    ),
    HumanMessage(
        content="What are the characteristics of an amoeba?"
    )
]
first_chunk = True
output = ""
for chunk in llm.stream(messages, extra_body={"outlines_type":"regex", "regex": r"\{(?:[^{}\n\r]|(?R))*\}"}):
    if first_chunk: 
        first_chunk = False
    print(chunk.content, end="", flush=True)

Error:

Reset server due to Unknown group-extension: 'R' (Context: '(?R))\}' information. How can I assist you today? Traceback (most recent call last): File "/home/ms5267@drexel.edu/blockentropy/ml-client/llm_exl2_dynamic_gen.py", line 440, in process_prompts filters = [RegexFilter(outlines_dict["regex"], hf_tokenizer)] File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/outlines/integrations/exllamav2.py", line 127, in init fsm = RegexGuide(regex_string=regex_string, tokenizer=tokenizer) File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/outlines/fsm/guide.py", line 145, in init ) = create_states_mapping(regex_string, tokenizer) ... ... ... File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/patterns.py", line 507, in conc parts.append(self.obj()) File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/utils/simple_parser.py", line 38, in w return m(self, args, kwargs) File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/patterns.py", line 514, in obj return self.group() File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/utils/simple_parser.py", line 38, in w return m(self, *args, *kwargs) File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/patterns.py", line 519, in group return self.extension_group() File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/utils/simple_parser.py", line 38, in w return m(self, args, kwargs) File "/home/ms5267@drexel.edu/anaconda3/envs/bellm/lib/python3.10/site-packages/interegular/patterns.py", line 582, in extension_group raise InvalidSyntax(

The reason is due to 'R' recursive is not supported by Outlines, this should return the same exception to the client instead of crashing the server.

ManilShrestha commented 4 months ago

PR #21 fixes the issue of hung server.

New PR will be created for communicating error back to the client machine instead of just printing it on server machine.