@@ -58,7 +58,7 @@ void appendTo(WeaviateProtoGenerative.GenerativeSearch.Builder req) {
5858 }
5959 }
6060
61- public record Single (String prompt , boolean debug , List <GenerativeProvider > providers ) {
61+ public record Single (String prompt , boolean debug , boolean returnMetadata , List <GenerativeProvider > providers ) {
6262 public static Single of (String prompt ) {
6363 return of (prompt , ObjectBuilder .identity ());
6464 }
@@ -68,13 +68,17 @@ public static Single of(String prompt, Function<Builder, ObjectBuilder<Single>>
6868 }
6969
7070 public Single (Builder builder ) {
71- this (builder .prompt , builder .debug , builder .providers );
71+ this (builder .prompt ,
72+ builder .debug ,
73+ builder .returnMetadata ,
74+ builder .providers );
7275 }
7376
7477 public static class Builder implements ObjectBuilder <Single > {
7578 private final String prompt ;
7679 private final List <GenerativeProvider > providers = new ArrayList <>();
7780 private boolean debug = false ;
81+ private boolean returnMetadata = false ;
7882
7983 public Builder (String prompt ) {
8084 this .prompt = prompt ;
@@ -85,6 +89,16 @@ public Builder debug(boolean enable) {
8589 return this ;
8690 }
8791
92+ /**
93+ * Return generative provider metadata alongside the query result. Metadata is
94+ * only available if {@link #generativeProvider(GenerativeProvider)} is set
95+ * explicitly..
96+ */
97+ public Builder metadata (boolean enable ) {
98+ this .returnMetadata = enable ;
99+ return this ;
100+ }
101+
88102 public Builder generativeProvider (GenerativeProvider provider ) {
89103 providers .clear (); // Protobuf allows `repeated` but the server expects there to be 1.
90104 providers .add (provider );
@@ -102,6 +116,7 @@ public void appendTo(WeaviateProtoGenerative.GenerativeSearch.Builder req) {
102116 .map (provider -> {
103117 var proto = WeaviateProtoGenerative .GenerativeProvider .newBuilder ();
104118 provider .appendTo (proto );
119+ proto .setReturnMetadata (returnMetadata );
105120 return proto .build ();
106121 })
107122 .toList ();
@@ -114,7 +129,8 @@ public void appendTo(WeaviateProtoGenerative.GenerativeSearch.Builder req) {
114129 }
115130 }
116131
117- public record Grouped (String prompt , boolean debug , List <String > properties , List <GenerativeProvider > providers ) {
132+ public record Grouped (String prompt , boolean debug , boolean returnMetadata , List <String > properties ,
133+ List <GenerativeProvider > providers ) {
118134 public static Grouped of (String prompt ) {
119135 return of (prompt , ObjectBuilder .identity ());
120136 }
@@ -124,14 +140,20 @@ public static Grouped of(String prompt, Function<Builder, ObjectBuilder<Grouped>
124140 }
125141
126142 public Grouped (Builder builder ) {
127- this (builder .prompt , builder .debug , builder .properties , builder .providers );
143+ this (
144+ builder .prompt ,
145+ builder .debug ,
146+ builder .returnMetadata ,
147+ builder .properties ,
148+ builder .providers );
128149 }
129150
130151 public static class Builder implements ObjectBuilder <Grouped > {
131152 private final String prompt ;
132153 private final List <GenerativeProvider > providers = new ArrayList <>();
133154 private final List <String > properties = new ArrayList <>();
134155 private boolean debug = false ;
156+ private boolean returnMetadata = false ;
135157
136158 public Builder (String prompt ) {
137159 this .prompt = prompt ;
@@ -152,6 +174,16 @@ public Builder generativeProvider(GenerativeProvider provider) {
152174 return this ;
153175 }
154176
177+ /**
178+ * Return generative provider metadata alongside the query result. Metadata is
179+ * only available if {@link #generativeProvider(GenerativeProvider)} is set
180+ * explicitly..
181+ */
182+ public Builder metadata (boolean enable ) {
183+ this .returnMetadata = enable ;
184+ return this ;
185+ }
186+
155187 public Builder debug (boolean enable ) {
156188 this .debug = enable ;
157189 return this ;
@@ -179,6 +211,7 @@ public void appendTo(WeaviateProtoGenerative.GenerativeSearch.Builder req) {
179211 .map (provider -> {
180212 var proto = WeaviateProtoGenerative .GenerativeProvider .newBuilder ();
181213 provider .appendTo (proto );
214+ proto .setReturnMetadata (returnMetadata );
182215 return proto .build ();
183216 })
184217 .toList ();
0 commit comments