From 6b10f3d2353db632119b570791e3fbaa0bc7c19b Mon Sep 17 00:00:00 2001 From: Tai An Date: Tue, 11 Aug 2026 15:07:58 -0700 Subject: [PATCH 1/2] fix(generative): send AWS stop_sequences through to the gRPC request `GenerativeConfig.aws_bedrock`/`aws_sagemaker` already accept a `stop_sequences` argument and store it on the runtime config, but `_GenerativeAWS._to_grpc` never forwarded it, so the value was silently dropped and never reached the server. The server-side `GenerativeAWS` proto has carried `stop_sequences` across every vendored version (v4216/v5261/v6300), so the field can be wired unconditionally the same way `max_tokens` already is. Also expose `stop_sequences` on the (deprecated) `aws()` factory for parity, and narrow the stale TODO to the two fields the proto still lacks (`top_k`, `top_p`). --- test/collection/test_classes_generative.py | 2 ++ weaviate/collections/classes/generative.py | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/test/collection/test_classes_generative.py b/test/collection/test_classes_generative.py index 5d9496417..db8b95144 100644 --- a/test/collection/test_classes_generative.py +++ b/test/collection/test_classes_generative.py @@ -106,6 +106,7 @@ def test_generative_parameters_images_parsing( target_model="arn:aws:sagemaker:us-west-2:123456789012:model/text-to-image", target_variant="variant-1", temperature=0.5, + stop_sequences=["\n"], )._to_grpc( _GenerativeConfigRuntimeOptions( return_metadata=True, images=[LOGO_ENCODED], image_properties=["image"] @@ -121,6 +122,7 @@ def test_generative_parameters_images_parsing( target_model="arn:aws:sagemaker:us-west-2:123456789012:model/text-to-image", target_variant="variant-1", temperature=0.5, + stop_sequences=base_pb2.TextArray(values=["\n"]), images=base_pb2.TextArray(values=[LOGO_ENCODED]), image_properties=base_pb2.TextArray(values=["image"]), ), diff --git a/weaviate/collections/classes/generative.py b/weaviate/collections/classes/generative.py index d5c1a5de2..b6c5bed1f 100644 --- a/weaviate/collections/classes/generative.py +++ b/weaviate/collections/classes/generative.py @@ -130,9 +130,10 @@ def _to_grpc(self, opts: _GenerativeConfigRuntimeOptions) -> generative_pb2.Gene target_variant=self.target_variant, temperature=self.temperature, max_tokens=self.max_tokens, + stop_sequences=_to_text_array(self.stop_sequences), images=_to_text_array(opts.images), image_properties=_to_text_array(opts.image_properties), - # TODO - add top_k, top_p & stop_sequences here when added to server-side proto + # TODO - add top_k & top_p here when added to server-side proto # Check the latest availble version of `grpc/proto/v1/generative.proto` (see GenerativeAWS) in the server repo ), ) @@ -587,6 +588,7 @@ def aws( target_model: Optional[str] = None, target_variant: Optional[str] = None, temperature: Optional[float] = None, + stop_sequences: Optional[List[str]] = None, ) -> _GenerativeConfigRuntime: """Create a `_GenerativeAWS` object for use when performing dynamic AI generation using the `generative-aws` module. @@ -602,6 +604,7 @@ def aws( target_model: The target model to use. Defaults to `None`, which uses the server-defined default target_variant: The target variant to use. Defaults to `None`, which uses the server-defined default temperature: The temperature to use. Defaults to `None`, which uses the server-defined default + stop_sequences: The stop sequences to use. Defaults to `None`, which uses the server-defined default """ return _GenerativeAWS( model=model, @@ -616,7 +619,7 @@ def aws( temperature=temperature, top_k=None, top_p=None, - stop_sequences=None, + stop_sequences=stop_sequences, ) @staticmethod From 8a6474b2630e52bc1a976d1c84d933cd06277df9 Mon Sep 17 00:00:00 2001 From: Tai An Date: Sat, 15 Aug 2026 12:03:39 -0700 Subject: [PATCH 2/2] refactor(aws): keep stop_sequences off the deprecated aws() factory Per review: revert the stop_sequences addition to the deprecated aws() factory and move test coverage to aws_sagemaker. The core fix (sending stop_sequences through _to_grpc for GenerativeAWS) is unchanged, so aws_bedrock/aws_sagemaker still carry the field to the proto. --- test/collection/test_classes_generative.py | 5 +---- weaviate/collections/classes/generative.py | 4 +--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/test/collection/test_classes_generative.py b/test/collection/test_classes_generative.py index db8b95144..cd4a6768d 100644 --- a/test/collection/test_classes_generative.py +++ b/test/collection/test_classes_generative.py @@ -98,11 +98,9 @@ def test_generative_parameters_images_parsing( ), ), ( - GenerativeConfig.aws( + GenerativeConfig.aws_sagemaker( endpoint="http://localhost:8080", - model="text-to-image", region="us-west-2", - service="sagemaker", target_model="arn:aws:sagemaker:us-west-2:123456789012:model/text-to-image", target_variant="variant-1", temperature=0.5, @@ -116,7 +114,6 @@ def test_generative_parameters_images_parsing( return_metadata=True, aws=generative_pb2.GenerativeAWS( endpoint="http://localhost:8080", - model="text-to-image", region="us-west-2", service="sagemaker", target_model="arn:aws:sagemaker:us-west-2:123456789012:model/text-to-image", diff --git a/weaviate/collections/classes/generative.py b/weaviate/collections/classes/generative.py index b6c5bed1f..2a6ec96ee 100644 --- a/weaviate/collections/classes/generative.py +++ b/weaviate/collections/classes/generative.py @@ -588,7 +588,6 @@ def aws( target_model: Optional[str] = None, target_variant: Optional[str] = None, temperature: Optional[float] = None, - stop_sequences: Optional[List[str]] = None, ) -> _GenerativeConfigRuntime: """Create a `_GenerativeAWS` object for use when performing dynamic AI generation using the `generative-aws` module. @@ -604,7 +603,6 @@ def aws( target_model: The target model to use. Defaults to `None`, which uses the server-defined default target_variant: The target variant to use. Defaults to `None`, which uses the server-defined default temperature: The temperature to use. Defaults to `None`, which uses the server-defined default - stop_sequences: The stop sequences to use. Defaults to `None`, which uses the server-defined default """ return _GenerativeAWS( model=model, @@ -619,7 +617,7 @@ def aws( temperature=temperature, top_k=None, top_p=None, - stop_sequences=stop_sequences, + stop_sequences=None, ) @staticmethod