From ae9afb386f8b84b901cb6f63a34d6a5e2687066b Mon Sep 17 00:00:00 2001 From: Oni-giri Date: Wed, 30 Jul 2025 18:03:08 +0300 Subject: [PATCH 1/5] import fix in base.py --- outlines/models/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outlines/models/base.py b/outlines/models/base.py index 4b948a56d..2ad0407f3 100644 --- a/outlines/models/base.py +++ b/outlines/models/base.py @@ -117,7 +117,7 @@ def __call__( The response generated by the model. """ - from outlines import Generator + from outlines.generator import Generator return Generator(self, output_type, backend)(model_input, **inference_kwargs) From b5bc1e8d4124632344b7ecc5ae90181359a3a9bc Mon Sep 17 00:00:00 2001 From: Oni-giri Date: Wed, 30 Jul 2025 19:52:47 +0300 Subject: [PATCH 2/5] add formating to match output_type --- outlines/models/transformers.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/outlines/models/transformers.py b/outlines/models/transformers.py index 2b8fca13e..5b84711ed 100644 --- a/outlines/models/transformers.py +++ b/outlines/models/transformers.py @@ -4,7 +4,8 @@ from collections import defaultdict from functools import singledispatchmethod -from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union +from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union, get_args, get_origin, Literal +import re from outlines.inputs import Audio, Chat, Image, Video from outlines.models.base import Model, ModelTypeAdapter @@ -302,8 +303,9 @@ def generate( """ prompts, inputs = self._prepare_model_inputs(model_input, False) + print(output_type == List[Literal["Paris", "London", "Rome", "Berlin"]]) logits_processor = self.type_adapter.format_output_type(output_type) - + print(output_type) generated_ids = self._generate_output_seq( prompts, inputs, @@ -317,7 +319,17 @@ def generate( if num_samples == 1 and len(generated_ids.shape) == 2: generated_ids = generated_ids.squeeze(0) - return self._decode_generation(generated_ids) + values = self._decode_generation(generated_ids) + origin = get_origin(output_type) + + if isinstance(values, str) and origin is List: + print("here") + match = re.match(r"\[([^\]]*)\]", values) + if match: + items = [item.strip().strip('"').strip("'") for item in match.group(1).split(",") if item.strip()] + values = items + + return values def generate_batch( self, From 56018b72c6e537ef0d07f891b963bf13b5ec763e Mon Sep 17 00:00:00 2001 From: Oni-giri Date: Thu, 31 Jul 2025 18:21:33 +0300 Subject: [PATCH 3/5] revert previous changes --- outlines/models/transformers.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/outlines/models/transformers.py b/outlines/models/transformers.py index 5b84711ed..7cd63219f 100644 --- a/outlines/models/transformers.py +++ b/outlines/models/transformers.py @@ -4,8 +4,7 @@ from collections import defaultdict from functools import singledispatchmethod -from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union, get_args, get_origin, Literal -import re +from typing import TYPE_CHECKING, Any, List, Optional, Tuple, Union from outlines.inputs import Audio, Chat, Image, Video from outlines.models.base import Model, ModelTypeAdapter @@ -303,7 +302,6 @@ def generate( """ prompts, inputs = self._prepare_model_inputs(model_input, False) - print(output_type == List[Literal["Paris", "London", "Rome", "Berlin"]]) logits_processor = self.type_adapter.format_output_type(output_type) print(output_type) generated_ids = self._generate_output_seq( @@ -319,17 +317,7 @@ def generate( if num_samples == 1 and len(generated_ids.shape) == 2: generated_ids = generated_ids.squeeze(0) - values = self._decode_generation(generated_ids) - origin = get_origin(output_type) - - if isinstance(values, str) and origin is List: - print("here") - match = re.match(r"\[([^\]]*)\]", values) - if match: - items = [item.strip().strip('"').strip("'") for item in match.group(1).split(",") if item.strip()] - values = items - - return values + return self._decode_generation(generated_ids) def generate_batch( self, From 2e214af0ea5989518c58e676da2f9629dcab3783 Mon Sep 17 00:00:00 2001 From: Oni-giri Date: Thu, 31 Jul 2025 19:11:00 +0300 Subject: [PATCH 4/5] update to_regex to add quotation marks on values --- outlines/types/dsl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/outlines/types/dsl.py b/outlines/types/dsl.py index 548c837ff..4af1c6257 100644 --- a/outlines/types/dsl.py +++ b/outlines/types/dsl.py @@ -827,7 +827,7 @@ def to_regex(term: Term) -> str: """ if isinstance(term, String): - return re.escape(term.value) + return f'"{re.escape(term.value)}"' if term.value not in "[]" else re.escape(term.value) elif isinstance(term, Regex): return f"({term.pattern})" elif isinstance(term, JsonSchema): From 42b412cbc051d1a5269084cf147ff83a323d9f87 Mon Sep 17 00:00:00 2001 From: Oni-giri Date: Thu, 31 Jul 2025 19:20:38 +0300 Subject: [PATCH 5/5] cleanup print --- outlines/models/transformers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/outlines/models/transformers.py b/outlines/models/transformers.py index 7cd63219f..a67426096 100644 --- a/outlines/models/transformers.py +++ b/outlines/models/transformers.py @@ -303,7 +303,6 @@ def generate( """ prompts, inputs = self._prepare_model_inputs(model_input, False) logits_processor = self.type_adapter.format_output_type(output_type) - print(output_type) generated_ids = self._generate_output_seq( prompts, inputs,