diff --git a/src/collections/config/types/generative.ts b/src/collections/config/types/generative.ts index d275f201..8e32d634 100644 --- a/src/collections/config/types/generative.ts +++ b/src/collections/config/types/generative.ts @@ -93,6 +93,14 @@ export type GenerativeGoogleConfig = { topP?: number; }; +export type GenerativeXAIConfig = { + baseURL?: string; + maxTokens?: number; + model?: string; + temperature?: number; + topP?: number; +}; + export type GenerativeConfig = | GenerativeAnthropicConfig | GenerativeAnyscaleConfig @@ -106,6 +114,7 @@ export type GenerativeConfig = | GenerativeOllamaConfig | GenerativeOpenAIConfig | GenerativePaLMConfig + | GenerativeXAIConfig | Record | undefined; @@ -133,6 +142,8 @@ export type GenerativeConfigType = G extends 'generative-anthropic' ? GenerativeOpenAIConfig : G extends GenerativePalm ? GenerativePaLMConfig + : G extends 'generative-xai' + ? GenerativeXAIConfig : G extends 'none' ? undefined : Record | undefined; @@ -153,5 +164,6 @@ export type GenerativeSearch = | 'generative-ollama' | 'generative-openai' | GenerativePalm + | 'generative-xai' | 'none' | string; diff --git a/src/collections/configure/generative.ts b/src/collections/configure/generative.ts index d4ee3154..0ba5c3b4 100644 --- a/src/collections/configure/generative.ts +++ b/src/collections/configure/generative.ts @@ -12,6 +12,7 @@ import { GenerativeOllamaConfig, GenerativeOpenAIConfig, GenerativePaLMConfig, + GenerativeXAIConfig, ModuleConfig, } from '../config/types/index.js'; import { @@ -27,6 +28,7 @@ import { GenerativeOllamaConfigCreate, GenerativeOpenAIConfigCreate, GenerativePaLMConfigCreate, + GenerativeXAIConfigCreate, } from '../index.js'; export default { @@ -263,4 +265,20 @@ export default { config, }; }, + /** + * Create a `ModuleConfig<'generative-xai', GenerativeXAIConfig | undefined>` object for use when performing AI generation using the `generative-xai` module. + * + * See the [documentation](https://weaviate.io/developers/weaviate/model-providers/xai/generative) for detailed usage. + * + * @param {GenerativeXAIConfigCreate} [config] The configuration for the `generative-xai` module. + * @returns {ModuleConfig<'generative-xai', GenerativeXAIConfig | undefined>} The configuration object. + */ + xai: ( + config?: GenerativeXAIConfigCreate + ): ModuleConfig<'generative-xai', GenerativeXAIConfig | undefined> => { + return { + name: 'generative-xai', + config, + }; + }, }; diff --git a/src/collections/configure/types/generative.ts b/src/collections/configure/types/generative.ts index ccf22ec6..87ef3dae 100644 --- a/src/collections/configure/types/generative.ts +++ b/src/collections/configure/types/generative.ts @@ -8,6 +8,7 @@ import { GenerativeNvidiaConfig, GenerativeOllamaConfig, GenerativePaLMConfig, + GenerativeXAIConfig, } from '../../index.js'; export type GenerativeOpenAIConfigBaseCreate = { @@ -55,6 +56,8 @@ export type GenerativeOpenAIConfigCreate = GenerativeOpenAIConfigBaseCreate & { export type GenerativePaLMConfigCreate = GenerativePaLMConfig; +export type GenerativeXAIConfigCreate = GenerativeXAIConfig; + export type GenerativeConfigCreate = | GenerativeAnthropicConfigCreate | GenerativeAnyscaleConfigCreate @@ -68,6 +71,7 @@ export type GenerativeConfigCreate = | GenerativeOllamaConfigCreate | GenerativeOpenAIConfigCreate | GenerativePaLMConfigCreate + | GenerativeXAIConfigCreate | Record | undefined; @@ -93,6 +97,8 @@ export type GenerativeConfigCreateType = G extends 'generative-anthropic' ? GenerativeOpenAIConfigCreate : G extends 'generative-palm' ? GenerativePaLMConfigCreate + : G extends 'generative-xai' + ? GenerativeXAIConfigCreate : G extends 'none' ? undefined : Record | undefined; diff --git a/src/collections/configure/unit.test.ts b/src/collections/configure/unit.test.ts index 36a9ce6b..e75cd518 100644 --- a/src/collections/configure/unit.test.ts +++ b/src/collections/configure/unit.test.ts @@ -10,6 +10,7 @@ import { GenerativeMistralConfig, GenerativeOllamaConfig, GenerativeOpenAIConfig, + GenerativeXAIConfig, ModuleConfig, VectorConfigCreate, } from '../types/index.js'; @@ -1816,6 +1817,34 @@ describe('Unit testing of the generative factory class', () => { }); }); + it('should create the correct GenerativeXAIConfig type with required & default values', () => { + const config = configure.generative.xai(); + expect(config).toEqual>({ + name: 'generative-xai', + config: undefined, + }); + }); + + it('should create the correct GenerativeXAIConfig type with all values', () => { + const config = configure.generative.xai({ + baseURL: 'base-url', + maxTokens: 100, + model: 'model', + temperature: 0.5, + topP: 0.8, + }); + expect(config).toEqual>({ + name: 'generative-xai', + config: { + baseURL: 'base-url', + maxTokens: 100, + model: 'model', + temperature: 0.5, + topP: 0.8, + }, + }); + }); + it('should create the correct GeneratGoogleConfig type with required & default values', () => { const config = configure.generative.google(); expect(config).toEqual>({ diff --git a/src/collections/generate/config.ts b/src/collections/generate/config.ts index 2f5eb714..e6ecf97c 100644 --- a/src/collections/generate/config.ts +++ b/src/collections/generate/config.ts @@ -13,6 +13,7 @@ import { GenerativeNvidiaConfigRuntime, GenerativeOllamaConfigRuntime, GenerativeOpenAIConfigRuntime, + GenerativeXAIConfigRuntime, } from '../index.js'; export const generativeParameters = { @@ -277,4 +278,23 @@ export const generativeParameters = { : undefined, }; }, + /** + * Create a `ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-xai` module. + * + * See the [documentation](https://weaviate.io/developers/weaviate/model-providers/xai/generative) for detailed usage. + */ + xai: ( + config?: GenerativeXAIConfigRuntime + ): ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined> => { + const { baseURL, ...rest } = config || {}; + return { + name: 'generative-xai', + config: config + ? { + ...rest, + baseUrl: baseURL, + } + : undefined, + }; + }, }; diff --git a/src/collections/generate/mock.test.ts b/src/collections/generate/mock.test.ts index d4a0c025..444901ef 100644 --- a/src/collections/generate/mock.test.ts +++ b/src/collections/generate/mock.test.ts @@ -158,6 +158,8 @@ describe('Mock testing of generate with runtime config', () => { generativeParameters.ollama(model), generativeParameters.openAI(), generativeParameters.openAI(model), + generativeParameters.xai(), + generativeParameters.xai(model), ]; tests.forEach((conf) => { diff --git a/src/collections/generate/unit.test.ts b/src/collections/generate/unit.test.ts index 54ecb335..0b8a47bd 100644 --- a/src/collections/generate/unit.test.ts +++ b/src/collections/generate/unit.test.ts @@ -277,4 +277,37 @@ describe('Unit testing of the generativeParameters factory methods', () => { }); }); }); + + describe('xai', () => { + it('with defaults', () => { + const config = generativeParameters.xai(); + expect(config).toEqual< + ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined> + >({ + name: 'generative-xai', + config: undefined, + }); + }); + it('with values', () => { + const config = generativeParameters.xai({ + baseURL: 'http://localhost:8080', + maxTokens: 100, + model: 'model', + temperature: 0.5, + topP: 0.9, + }); + expect(config).toEqual< + ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined> + >({ + name: 'generative-xai', + config: { + baseUrl: 'http://localhost:8080', + maxTokens: 100, + model: 'model', + temperature: 0.5, + topP: 0.9, + }, + }); + }); + }); }); diff --git a/src/collections/types/generate.ts b/src/collections/types/generate.ts index edd16e71..a330002a 100644 --- a/src/collections/types/generate.ts +++ b/src/collections/types/generate.ts @@ -24,8 +24,10 @@ import { GenerativeOllamaMetadata, GenerativeOpenAI as GenerativeOpenAIGRPC, GenerativeOpenAIMetadata, + GenerativeXAI as GenerativeXAIGRPC, + GenerativeXAIMetadata, } from '../../proto/v1/generative.js'; -import { ModuleConfig } from '../index.js'; +import { GenerativeXAIConfig, ModuleConfig } from '../index.js'; import { GroupByObject, GroupByResult, WeaviateGenericObject, WeaviateNonGenericObject } from './query.js'; export type GenerativeGenericObject< @@ -134,7 +136,8 @@ export type GenerativeConfigRuntime = | ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined> | ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined> | ModuleConfig<'generative-ollama', GenerativeConfigRuntimeType<'generative-ollama'> | undefined> - | ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>>; + | ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>> + | ModuleConfig<'generative-xai', GenerativeConfigRuntimeType<'generative-xai'> | undefined>; export type GenerativeConfigRuntimeType = G extends 'generative-anthropic' ? Omit @@ -160,6 +163,8 @@ export type GenerativeConfigRuntimeType = G extends 'generative-anthropic' ? Omit : G extends 'generative-openai' ? Omit & { isAzure?: false } + : G extends 'generative-xai' + ? Omit : G extends 'none' ? undefined : Record | undefined; @@ -191,6 +196,8 @@ export type GenerativeMetadata = ? GenerativeOllamaMetadata : R['name'] extends 'generative-openai' ? GenerativeOpenAIMetadata + : R['name'] extends 'generative-xai' + ? GenerativeXAIMetadata : never : never; @@ -312,3 +319,5 @@ export type GenerativeOpenAIConfigRuntime = { resourceName?: string | undefined; deploymentId?: string | undefined; }; + +export type GenerativeXAIConfigRuntime = GenerativeXAIConfig; diff --git a/src/proto/v1/generative.ts b/src/proto/v1/generative.ts index fe0805fa..25e750c9 100644 --- a/src/proto/v1/generative.ts +++ b/src/proto/v1/generative.ts @@ -52,6 +52,7 @@ export interface GenerativeProvider { databricks?: GenerativeDatabricks | undefined; friendliai?: GenerativeFriendliAI | undefined; nvidia?: GenerativeNvidia | undefined; + xai?: GenerativeXAI | undefined; } export interface GenerativeAnthropic { @@ -181,6 +182,16 @@ export interface GenerativeNvidia { maxTokens?: number | undefined; } +export interface GenerativeXAI { + baseUrl?: string | undefined; + model?: string | undefined; + temperature?: number | undefined; + topP?: number | undefined; + maxTokens?: number | undefined; + images?: TextArray | undefined; + imageProperties?: TextArray | undefined; +} + export interface GenerativeAnthropicMetadata { usage: GenerativeAnthropicMetadata_Usage | undefined; } @@ -302,6 +313,16 @@ export interface GenerativeNvidiaMetadata_Usage { totalTokens?: number | undefined; } +export interface GenerativeXAIMetadata { + usage?: GenerativeXAIMetadata_Usage | undefined; +} + +export interface GenerativeXAIMetadata_Usage { + promptTokens?: number | undefined; + completionTokens?: number | undefined; + totalTokens?: number | undefined; +} + export interface GenerativeMetadata { anthropic?: GenerativeAnthropicMetadata | undefined; anyscale?: GenerativeAnyscaleMetadata | undefined; @@ -315,6 +336,7 @@ export interface GenerativeMetadata { databricks?: GenerativeDatabricksMetadata | undefined; friendliai?: GenerativeFriendliAIMetadata | undefined; nvidia?: GenerativeNvidiaMetadata | undefined; + xai?: GenerativeXAIMetadata | undefined; } export interface GenerativeReply { @@ -661,6 +683,7 @@ function createBaseGenerativeProvider(): GenerativeProvider { databricks: undefined, friendliai: undefined, nvidia: undefined, + xai: undefined, }; } @@ -705,6 +728,9 @@ export const GenerativeProvider = { if (message.nvidia !== undefined) { GenerativeNvidia.encode(message.nvidia, writer.uint32(106).fork()).ldelim(); } + if (message.xai !== undefined) { + GenerativeXAI.encode(message.xai, writer.uint32(114).fork()).ldelim(); + } return writer; }, @@ -806,6 +832,13 @@ export const GenerativeProvider = { message.nvidia = GenerativeNvidia.decode(reader, reader.uint32()); continue; + case 14: + if (tag !== 114) { + break; + } + + message.xai = GenerativeXAI.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -830,6 +863,7 @@ export const GenerativeProvider = { databricks: isSet(object.databricks) ? GenerativeDatabricks.fromJSON(object.databricks) : undefined, friendliai: isSet(object.friendliai) ? GenerativeFriendliAI.fromJSON(object.friendliai) : undefined, nvidia: isSet(object.nvidia) ? GenerativeNvidia.fromJSON(object.nvidia) : undefined, + xai: isSet(object.xai) ? GenerativeXAI.fromJSON(object.xai) : undefined, }; }, @@ -874,6 +908,9 @@ export const GenerativeProvider = { if (message.nvidia !== undefined) { obj.nvidia = GenerativeNvidia.toJSON(message.nvidia); } + if (message.xai !== undefined) { + obj.xai = GenerativeXAI.toJSON(message.xai); + } return obj; }, @@ -917,6 +954,7 @@ export const GenerativeProvider = { message.nvidia = (object.nvidia !== undefined && object.nvidia !== null) ? GenerativeNvidia.fromPartial(object.nvidia) : undefined; + message.xai = (object.xai !== undefined && object.xai !== null) ? GenerativeXAI.fromPartial(object.xai) : undefined; return message; }, }; @@ -2925,6 +2963,167 @@ export const GenerativeNvidia = { }, }; +function createBaseGenerativeXAI(): GenerativeXAI { + return { + baseUrl: undefined, + model: undefined, + temperature: undefined, + topP: undefined, + maxTokens: undefined, + images: undefined, + imageProperties: undefined, + }; +} + +export const GenerativeXAI = { + encode(message: GenerativeXAI, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.baseUrl !== undefined) { + writer.uint32(10).string(message.baseUrl); + } + if (message.model !== undefined) { + writer.uint32(18).string(message.model); + } + if (message.temperature !== undefined) { + writer.uint32(25).double(message.temperature); + } + if (message.topP !== undefined) { + writer.uint32(33).double(message.topP); + } + if (message.maxTokens !== undefined) { + writer.uint32(40).int64(message.maxTokens); + } + if (message.images !== undefined) { + TextArray.encode(message.images, writer.uint32(50).fork()).ldelim(); + } + if (message.imageProperties !== undefined) { + TextArray.encode(message.imageProperties, writer.uint32(58).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAI { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeXAI(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.baseUrl = reader.string(); + continue; + case 2: + if (tag !== 18) { + break; + } + + message.model = reader.string(); + continue; + case 3: + if (tag !== 25) { + break; + } + + message.temperature = reader.double(); + continue; + case 4: + if (tag !== 33) { + break; + } + + message.topP = reader.double(); + continue; + case 5: + if (tag !== 40) { + break; + } + + message.maxTokens = longToNumber(reader.int64() as Long); + continue; + case 6: + if (tag !== 50) { + break; + } + + message.images = TextArray.decode(reader, reader.uint32()); + continue; + case 7: + if (tag !== 58) { + break; + } + + message.imageProperties = TextArray.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeXAI { + return { + baseUrl: isSet(object.baseUrl) ? globalThis.String(object.baseUrl) : undefined, + model: isSet(object.model) ? globalThis.String(object.model) : undefined, + temperature: isSet(object.temperature) ? globalThis.Number(object.temperature) : undefined, + topP: isSet(object.topP) ? globalThis.Number(object.topP) : undefined, + maxTokens: isSet(object.maxTokens) ? globalThis.Number(object.maxTokens) : undefined, + images: isSet(object.images) ? TextArray.fromJSON(object.images) : undefined, + imageProperties: isSet(object.imageProperties) ? TextArray.fromJSON(object.imageProperties) : undefined, + }; + }, + + toJSON(message: GenerativeXAI): unknown { + const obj: any = {}; + if (message.baseUrl !== undefined) { + obj.baseUrl = message.baseUrl; + } + if (message.model !== undefined) { + obj.model = message.model; + } + if (message.temperature !== undefined) { + obj.temperature = message.temperature; + } + if (message.topP !== undefined) { + obj.topP = message.topP; + } + if (message.maxTokens !== undefined) { + obj.maxTokens = Math.round(message.maxTokens); + } + if (message.images !== undefined) { + obj.images = TextArray.toJSON(message.images); + } + if (message.imageProperties !== undefined) { + obj.imageProperties = TextArray.toJSON(message.imageProperties); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeXAI { + return GenerativeXAI.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeXAI { + const message = createBaseGenerativeXAI(); + message.baseUrl = object.baseUrl ?? undefined; + message.model = object.model ?? undefined; + message.temperature = object.temperature ?? undefined; + message.topP = object.topP ?? undefined; + message.maxTokens = object.maxTokens ?? undefined; + message.images = (object.images !== undefined && object.images !== null) + ? TextArray.fromPartial(object.images) + : undefined; + message.imageProperties = (object.imageProperties !== undefined && object.imageProperties !== null) + ? TextArray.fromPartial(object.imageProperties) + : undefined; + return message; + }, +}; + function createBaseGenerativeAnthropicMetadata(): GenerativeAnthropicMetadata { return { usage: undefined }; } @@ -4745,6 +4944,154 @@ export const GenerativeNvidiaMetadata_Usage = { }, }; +function createBaseGenerativeXAIMetadata(): GenerativeXAIMetadata { + return { usage: undefined }; +} + +export const GenerativeXAIMetadata = { + encode(message: GenerativeXAIMetadata, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.usage !== undefined) { + GenerativeXAIMetadata_Usage.encode(message.usage, writer.uint32(10).fork()).ldelim(); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeXAIMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 10) { + break; + } + + message.usage = GenerativeXAIMetadata_Usage.decode(reader, reader.uint32()); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeXAIMetadata { + return { usage: isSet(object.usage) ? GenerativeXAIMetadata_Usage.fromJSON(object.usage) : undefined }; + }, + + toJSON(message: GenerativeXAIMetadata): unknown { + const obj: any = {}; + if (message.usage !== undefined) { + obj.usage = GenerativeXAIMetadata_Usage.toJSON(message.usage); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeXAIMetadata { + return GenerativeXAIMetadata.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeXAIMetadata { + const message = createBaseGenerativeXAIMetadata(); + message.usage = (object.usage !== undefined && object.usage !== null) + ? GenerativeXAIMetadata_Usage.fromPartial(object.usage) + : undefined; + return message; + }, +}; + +function createBaseGenerativeXAIMetadata_Usage(): GenerativeXAIMetadata_Usage { + return { promptTokens: undefined, completionTokens: undefined, totalTokens: undefined }; +} + +export const GenerativeXAIMetadata_Usage = { + encode(message: GenerativeXAIMetadata_Usage, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.promptTokens !== undefined) { + writer.uint32(8).int64(message.promptTokens); + } + if (message.completionTokens !== undefined) { + writer.uint32(16).int64(message.completionTokens); + } + if (message.totalTokens !== undefined) { + writer.uint32(24).int64(message.totalTokens); + } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): GenerativeXAIMetadata_Usage { + const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBaseGenerativeXAIMetadata_Usage(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (tag !== 8) { + break; + } + + message.promptTokens = longToNumber(reader.int64() as Long); + continue; + case 2: + if (tag !== 16) { + break; + } + + message.completionTokens = longToNumber(reader.int64() as Long); + continue; + case 3: + if (tag !== 24) { + break; + } + + message.totalTokens = longToNumber(reader.int64() as Long); + continue; + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skipType(tag & 7); + } + return message; + }, + + fromJSON(object: any): GenerativeXAIMetadata_Usage { + return { + promptTokens: isSet(object.promptTokens) ? globalThis.Number(object.promptTokens) : undefined, + completionTokens: isSet(object.completionTokens) ? globalThis.Number(object.completionTokens) : undefined, + totalTokens: isSet(object.totalTokens) ? globalThis.Number(object.totalTokens) : undefined, + }; + }, + + toJSON(message: GenerativeXAIMetadata_Usage): unknown { + const obj: any = {}; + if (message.promptTokens !== undefined) { + obj.promptTokens = Math.round(message.promptTokens); + } + if (message.completionTokens !== undefined) { + obj.completionTokens = Math.round(message.completionTokens); + } + if (message.totalTokens !== undefined) { + obj.totalTokens = Math.round(message.totalTokens); + } + return obj; + }, + + create(base?: DeepPartial): GenerativeXAIMetadata_Usage { + return GenerativeXAIMetadata_Usage.fromPartial(base ?? {}); + }, + fromPartial(object: DeepPartial): GenerativeXAIMetadata_Usage { + const message = createBaseGenerativeXAIMetadata_Usage(); + message.promptTokens = object.promptTokens ?? undefined; + message.completionTokens = object.completionTokens ?? undefined; + message.totalTokens = object.totalTokens ?? undefined; + return message; + }, +}; + function createBaseGenerativeMetadata(): GenerativeMetadata { return { anthropic: undefined, @@ -4759,6 +5106,7 @@ function createBaseGenerativeMetadata(): GenerativeMetadata { databricks: undefined, friendliai: undefined, nvidia: undefined, + xai: undefined, }; } @@ -4800,6 +5148,9 @@ export const GenerativeMetadata = { if (message.nvidia !== undefined) { GenerativeNvidiaMetadata.encode(message.nvidia, writer.uint32(98).fork()).ldelim(); } + if (message.xai !== undefined) { + GenerativeXAIMetadata.encode(message.xai, writer.uint32(106).fork()).ldelim(); + } return writer; }, @@ -4894,6 +5245,13 @@ export const GenerativeMetadata = { message.nvidia = GenerativeNvidiaMetadata.decode(reader, reader.uint32()); continue; + case 13: + if (tag !== 106) { + break; + } + + message.xai = GenerativeXAIMetadata.decode(reader, reader.uint32()); + continue; } if ((tag & 7) === 4 || tag === 0) { break; @@ -4917,6 +5275,7 @@ export const GenerativeMetadata = { databricks: isSet(object.databricks) ? GenerativeDatabricksMetadata.fromJSON(object.databricks) : undefined, friendliai: isSet(object.friendliai) ? GenerativeFriendliAIMetadata.fromJSON(object.friendliai) : undefined, nvidia: isSet(object.nvidia) ? GenerativeNvidiaMetadata.fromJSON(object.nvidia) : undefined, + xai: isSet(object.xai) ? GenerativeXAIMetadata.fromJSON(object.xai) : undefined, }; }, @@ -4958,6 +5317,9 @@ export const GenerativeMetadata = { if (message.nvidia !== undefined) { obj.nvidia = GenerativeNvidiaMetadata.toJSON(message.nvidia); } + if (message.xai !== undefined) { + obj.xai = GenerativeXAIMetadata.toJSON(message.xai); + } return obj; }, @@ -5002,6 +5364,9 @@ export const GenerativeMetadata = { message.nvidia = (object.nvidia !== undefined && object.nvidia !== null) ? GenerativeNvidiaMetadata.fromPartial(object.nvidia) : undefined; + message.xai = (object.xai !== undefined && object.xai !== null) + ? GenerativeXAIMetadata.fromPartial(object.xai) + : undefined; return message; }, };