@@ -57,7 +57,7 @@ public static IChatClient BuildIChatClient(
5757 this PredictionServiceClientBuilder builder ,
5858 IServiceProvider ? provider = null , string ? defaultModelId = null )
5959 {
60- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
60+ builder = builder . WithAssemblyVersionHeader ( ) ;
6161
6262 PredictionServiceClient client = provider is not null ?
6363 builder . Build ( provider ) :
@@ -83,7 +83,7 @@ public static async Task<IChatClient> BuildIChatClientAsync(
8383 IServiceProvider ? provider = null , string ? defaultModelId = null ,
8484 CancellationToken cancellationToken = default )
8585 {
86- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
86+ builder = builder . WithAssemblyVersionHeader ( ) ;
8787
8888 PredictionServiceClient client = await ( provider is not null ?
8989 builder . BuildAsync ( provider , cancellationToken ) :
@@ -126,7 +126,7 @@ public static IEmbeddingGenerator<string, Embedding<float>> BuildIEmbeddingGener
126126 this PredictionServiceClientBuilder builder ,
127127 IServiceProvider ? provider = null , string ? defaultModelId = null )
128128 {
129- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
129+ builder = builder . WithAssemblyVersionHeader ( ) ;
130130
131131 PredictionServiceClient client = provider is not null ?
132132 builder . Build ( provider ) :
@@ -152,7 +152,7 @@ public static async Task<IEmbeddingGenerator<string, Embedding<float>>> BuildIEm
152152 IServiceProvider ? provider = null , string ? defaultModelId = null ,
153153 CancellationToken cancellationToken = default )
154154 {
155- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
155+ builder = builder . WithAssemblyVersionHeader ( ) ;
156156
157157 PredictionServiceClient client = await ( provider is not null ?
158158 builder . BuildAsync ( provider , cancellationToken ) :
@@ -194,7 +194,7 @@ public static IImageGenerator BuildIImageGenerator(
194194 this PredictionServiceClientBuilder builder ,
195195 IServiceProvider ? provider = null , string ? defaultModelId = null )
196196 {
197- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
197+ builder = builder . WithAssemblyVersionHeader ( ) ;
198198
199199 PredictionServiceClient client = provider is not null ?
200200 builder . Build ( provider ) :
@@ -220,7 +220,7 @@ public static async Task<IImageGenerator> BuildIImageGeneratorAsync(
220220 IServiceProvider ? provider = null , string ? defaultModelId = null ,
221221 CancellationToken cancellationToken = default )
222222 {
223- GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
223+ builder = builder . WithAssemblyVersionHeader ( ) ;
224224
225225 PredictionServiceClient client = await ( provider is not null ?
226226 builder . BuildAsync ( provider , cancellationToken ) :
@@ -303,4 +303,42 @@ public static AITool AsAITool(this Tool tool)
303303
304304 return usage ;
305305 }
306+
307+ private static PredictionServiceClientBuilder WithAssemblyVersionHeader ( this PredictionServiceClientBuilder builder )
308+ {
309+ GaxPreconditions . CheckNotNull ( builder , nameof ( builder ) ) ;
310+ var newBuilder = MemberwiseCloneBuilder ( ) ;
311+ newBuilder . Settings = newBuilder . Settings ? . Clone ( ) ?? new PredictionServiceSettings ( ) ;
312+ newBuilder . Settings . VersionHeaderBuilder . AppendAssemblyVersion ( "gccl" , typeof ( VertexAIExtensions ) ) ;
313+ return newBuilder ;
314+
315+ // This is a shallow copy.
316+ PredictionServiceClientBuilder MemberwiseCloneBuilder ( ) => new PredictionServiceClientBuilder
317+ {
318+ ApiKey = builder . ApiKey ,
319+ CallInvoker = builder . CallInvoker ,
320+ ChannelCredentials = builder . ChannelCredentials ,
321+ Credential = builder . Credential ,
322+ #pragma warning disable CS0618 // Type or member is obsolete
323+ CredentialsPath = builder . CredentialsPath ,
324+ #pragma warning restore CS0618 // Type or member is obsolete
325+ Endpoint = builder . Endpoint ,
326+ GoogleCredential = builder . GoogleCredential ,
327+ GrpcAdapter = builder . GrpcAdapter ,
328+ GrpcChannelOptions = builder . GrpcChannelOptions ,
329+ #pragma warning disable CS0618 // Type or member is obsolete
330+ JsonCredentials = builder . JsonCredentials ,
331+ #pragma warning restore CS0618 // Type or member is obsolete
332+ Logger = builder . Logger ,
333+ QuotaProject = builder . QuotaProject ,
334+ Scopes = builder . Scopes ,
335+ Settings = builder . Settings ,
336+ #pragma warning disable CS0618 // Type or member is obsolete
337+ TokenAccessMethod = builder . TokenAccessMethod ,
338+ #pragma warning restore CS0618 // Type or member is obsolete
339+ UniverseDomain = builder . UniverseDomain ,
340+ UseJwtAccessWithScopes = builder . UseJwtAccessWithScopes ,
341+ UserAgent = builder . UserAgent ,
342+ } ;
343+ }
306344}
0 commit comments