@langchain/google 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/chat_models/api_types/generate_content.d.cts +0 -2
  3. package/dist/chat_models/api_types/generate_content.d.ts +0 -2
  4. package/dist/chat_models/api_types/interactions.d.cts +1423 -0
  5. package/dist/chat_models/api_types/interactions.d.ts +1423 -0
  6. package/dist/chat_models/base.cjs +12 -11
  7. package/dist/chat_models/base.cjs.map +1 -1
  8. package/dist/chat_models/base.d.cts +3 -5
  9. package/dist/chat_models/base.d.ts +3 -5
  10. package/dist/chat_models/base.js +12 -11
  11. package/dist/chat_models/base.js.map +1 -1
  12. package/dist/chat_models/handlers/base.cjs +1 -2
  13. package/dist/chat_models/handlers/base.d.cts +0 -2
  14. package/dist/chat_models/handlers/base.d.ts +0 -2
  15. package/dist/chat_models/handlers/base.js +1 -2
  16. package/dist/chat_models/handlers/generate_content.cjs +5 -6
  17. package/dist/chat_models/handlers/generate_content.d.cts +0 -2
  18. package/dist/chat_models/handlers/generate_content.d.ts +0 -2
  19. package/dist/chat_models/handlers/generate_content.js +5 -6
  20. package/dist/chat_models/handlers/index.cjs +2 -0
  21. package/dist/chat_models/handlers/index.d.cts +2 -1
  22. package/dist/chat_models/handlers/index.d.ts +2 -1
  23. package/dist/chat_models/handlers/index.js +2 -1
  24. package/dist/chat_models/handlers/interactions.cjs +303 -0
  25. package/dist/chat_models/handlers/interactions.cjs.map +1 -0
  26. package/dist/chat_models/handlers/interactions.d.cts +33 -0
  27. package/dist/chat_models/handlers/interactions.d.ts +33 -0
  28. package/dist/chat_models/handlers/interactions.js +303 -0
  29. package/dist/chat_models/handlers/interactions.js.map +1 -0
  30. package/dist/chat_models/index.cjs +5 -4
  31. package/dist/chat_models/index.cjs.map +1 -1
  32. package/dist/chat_models/index.d.cts +4 -5
  33. package/dist/chat_models/index.d.ts +4 -5
  34. package/dist/chat_models/index.js +5 -5
  35. package/dist/chat_models/index.js.map +1 -1
  36. package/dist/chat_models/node.cjs +3 -4
  37. package/dist/chat_models/node.d.cts +1 -3
  38. package/dist/chat_models/node.d.ts +1 -3
  39. package/dist/chat_models/node.js +3 -4
  40. package/dist/chat_models/profiles.cjs +1 -2
  41. package/dist/chat_models/profiles.js +1 -2
  42. package/dist/chat_models/types.cjs +1 -2
  43. package/dist/chat_models/types.cjs.map +1 -1
  44. package/dist/chat_models/types.d.cts +524 -23
  45. package/dist/chat_models/types.d.ts +524 -23
  46. package/dist/chat_models/types.js +1 -2
  47. package/dist/chat_models/types.js.map +1 -1
  48. package/dist/clients/index.cjs +3 -4
  49. package/dist/clients/index.d.cts +0 -2
  50. package/dist/clients/index.d.ts +0 -2
  51. package/dist/clients/index.js +3 -4
  52. package/dist/clients/node.cjs +4 -5
  53. package/dist/clients/node.d.cts +0 -2
  54. package/dist/clients/node.d.ts +0 -2
  55. package/dist/clients/node.js +4 -5
  56. package/dist/const.cjs +1 -2
  57. package/dist/const.js +1 -2
  58. package/dist/converters/generate_content/messages.cjs +1 -2
  59. package/dist/converters/generate_content/messages.js +1 -2
  60. package/dist/converters/generate_content/params.cjs +1 -2
  61. package/dist/converters/generate_content/params.js +1 -2
  62. package/dist/converters/generate_content/stream_events.cjs +1 -2
  63. package/dist/converters/generate_content/stream_events.js +1 -2
  64. package/dist/converters/generate_content/tools.cjs +1 -2
  65. package/dist/converters/generate_content/tools.js +1 -2
  66. package/dist/converters/interactions/messages.cjs +766 -0
  67. package/dist/converters/interactions/messages.cjs.map +1 -0
  68. package/dist/converters/interactions/messages.js +759 -0
  69. package/dist/converters/interactions/messages.js.map +1 -0
  70. package/dist/converters/interactions/params.cjs +244 -0
  71. package/dist/converters/interactions/params.cjs.map +1 -0
  72. package/dist/converters/interactions/params.js +237 -0
  73. package/dist/converters/interactions/params.js.map +1 -0
  74. package/dist/converters/interactions/stream_events.cjs +769 -0
  75. package/dist/converters/interactions/stream_events.cjs.map +1 -0
  76. package/dist/converters/interactions/stream_events.js +768 -0
  77. package/dist/converters/interactions/stream_events.js.map +1 -0
  78. package/dist/converters/interactions/tools.cjs +229 -0
  79. package/dist/converters/interactions/tools.cjs.map +1 -0
  80. package/dist/converters/interactions/tools.js +228 -0
  81. package/dist/converters/interactions/tools.js.map +1 -0
  82. package/dist/converters/shared/params.cjs +1 -2
  83. package/dist/converters/shared/params.js +1 -2
  84. package/dist/index.cjs +2 -0
  85. package/dist/index.d.cts +3 -2
  86. package/dist/index.d.ts +3 -2
  87. package/dist/index.js +2 -1
  88. package/dist/node.cjs +1 -1
  89. package/dist/node.d.cts +1 -1
  90. package/dist/node.d.ts +1 -1
  91. package/dist/node.js +1 -1
  92. package/dist/utils/errors.cjs +1 -2
  93. package/dist/utils/errors.js +1 -2
  94. package/dist/utils/gcp-auth.cjs +3 -4
  95. package/dist/utils/gcp-auth.d.cts +0 -2
  96. package/dist/utils/gcp-auth.d.ts +0 -2
  97. package/dist/utils/gcp-auth.js +3 -4
  98. package/dist/utils/handler.cjs +1 -2
  99. package/dist/utils/handler.d.cts +0 -2
  100. package/dist/utils/handler.d.ts +0 -2
  101. package/dist/utils/handler.js +1 -2
  102. package/dist/utils/metadata.cjs +1 -2
  103. package/dist/utils/metadata.js +1 -2
  104. package/dist/utils/misc.cjs +1 -2
  105. package/dist/utils/misc.d.cts +0 -2
  106. package/dist/utils/misc.d.ts +0 -2
  107. package/dist/utils/misc.js +1 -2
  108. package/dist/utils/stream.cjs +1 -2
  109. package/dist/utils/stream.js +1 -2
  110. package/package.json +11 -9
@@ -0,0 +1,303 @@
1
+ import { GoogleChatApiHandler } from "./base.js";
2
+ import { SafeJsonEventParserStream } from "../../utils/stream.js";
3
+ import { usageMetadataToTokenUsage } from "../../utils/metadata.js";
4
+ import { iife } from "../../utils/misc.js";
5
+ import { NoCandidatesError, RequestError } from "../../utils/errors.js";
6
+ import { convertAIMessageToText } from "../../converters/generate_content/messages.js";
7
+ import { schemaToGeminiParameters } from "../../converters/generate_content/tools.js";
8
+ import { convertInteractionToAIMessage, convertMessagesToInteractionsInput, convertMessagesToInteractionsSystemInstruction } from "../../converters/interactions/messages.js";
9
+ import { convertToolChoiceToInteractionsConfig, convertToolsToInteractionsTools } from "../../converters/interactions/tools.js";
10
+ import { combineInteractionsFields, convertFieldsToInteractionsResponseFormat, convertFieldsToInteractionsServiceTier, convertFieldsToInteractionsSpeechConfig, convertFieldsToInteractionsThinking, convertMediaResolutionToInteractions, convertSafetySettingsToInteractions } from "../../converters/interactions/params.js";
11
+ import { convertInteractionsStream, convertInteractionsStreamToChunks } from "../../converters/interactions/stream_events.js";
12
+ import { settableServiceTier } from "../types.js";
13
+ import { isInteropZodSchema } from "@langchain/core/utils/types";
14
+ import { isSerializableSchema } from "@langchain/core/utils/standard_schema";
15
+ import { EventSourceParserStream } from "eventsource-parser/stream";
16
+ // src/chat_models/handlers/interactions.ts
17
+ /**
18
+ * Concrete wire protocol handler for Google's Interactions API
19
+ * (`/v1beta/interactions` and `/v1beta/interactions?alt=sse`).
20
+ */
21
+ var InteractionsApiHandler = class extends GoogleChatApiHandler {
22
+ constructor(params) {
23
+ super(params);
24
+ }
25
+ get urlMethod() {
26
+ return this.params.streaming ? "interactions?alt=sse" : "interactions";
27
+ }
28
+ getUrlSuffix(urlMethod) {
29
+ const method = urlMethod ?? this.urlMethod;
30
+ if (method === "stream" || method.includes("alt=sse") || method.includes("stream")) return "/interactions?alt=sse";
31
+ return "/interactions";
32
+ }
33
+ async buildUrlVertexLocation(urlMethod) {
34
+ const projectId = await this.params.apiClient.getProjectId();
35
+ return this.formatUrl([`projects/${projectId}`, `locations/${this.params.location}`], urlMethod);
36
+ }
37
+ getHeaders(options) {
38
+ const fields = combineInteractionsFields(this.params, options ?? {});
39
+ return {
40
+ ...this.params.platform === "gcp" && typeof fields.serviceTier !== "undefined" && settableServiceTier.includes(fields.serviceTier) ? { "X-Vertex-AI-LLM-Shared-Request-Type": fields.serviceTier } : {},
41
+ ...super.getHeaders(options)
42
+ };
43
+ }
44
+ async generate(messages, options, runManager) {
45
+ const url = await this.buildUrl("interactions");
46
+ const headers = this.getHeaders(options);
47
+ const fields = combineInteractionsFields(this.params, options ?? {});
48
+ const mediaResolution = convertMediaResolutionToInteractions(fields.mediaResolution, fields.detail);
49
+ const systemInstruction = convertMessagesToInteractionsSystemInstruction(messages);
50
+ const input = convertMessagesToInteractionsInput(messages, mediaResolution);
51
+ const body = {
52
+ ...this.invocationParams(options),
53
+ ...systemInstruction ? { system_instruction: systemInstruction } : {},
54
+ input
55
+ };
56
+ const moduleName = this.constructor.name;
57
+ await runManager?.handleCustomEvent(`google-request-${moduleName}`, {
58
+ url,
59
+ headers,
60
+ body
61
+ });
62
+ let response;
63
+ try {
64
+ response = await this.params.caller.callWithOptions({
65
+ signal: options?.signal,
66
+ maxRetries: options?.maxRetries
67
+ }, async () => {
68
+ const nextResponse = await this.params.apiClient.fetch(new Request(url, {
69
+ method: "POST",
70
+ headers,
71
+ body: JSON.stringify(body),
72
+ signal: options?.signal
73
+ }));
74
+ if (!nextResponse.ok) throw await RequestError.fromResponse(nextResponse);
75
+ return nextResponse;
76
+ });
77
+ } catch (error) {
78
+ await runManager?.handleCustomEvent(`google-response-${moduleName}`, { error });
79
+ throw error;
80
+ }
81
+ const data = await response.json();
82
+ await runManager?.handleCustomEvent(`google-response-${moduleName}`, {
83
+ data,
84
+ url: response.url,
85
+ headers: Array.from(response.headers.entries()),
86
+ status: response.status,
87
+ statusText: response.statusText
88
+ });
89
+ const { message, finishReason, usageMetadata } = convertInteractionToAIMessage(data);
90
+ if (data.status === "failed" && (!data.steps || data.steps.length === 0) && (!data.outputs || data.outputs.length === 0)) throw new NoCandidatesError();
91
+ const text = convertAIMessageToText(message);
92
+ const serviceTier = iife(() => {
93
+ const serviceTierHeader = response.headers.get("x-gemini-service-tier");
94
+ return data.service_tier ?? serviceTierHeader ?? "standard";
95
+ });
96
+ return {
97
+ generations: [{
98
+ text,
99
+ message,
100
+ generationInfo: {
101
+ ...finishReason ? { finishReason } : {},
102
+ ...message.response_metadata?.citationMetadata ? { citationMetadata: message.response_metadata.citationMetadata } : {},
103
+ ...message.response_metadata?.groundingMetadata ? { groundingMetadata: message.response_metadata.groundingMetadata } : {}
104
+ }
105
+ }],
106
+ llmOutput: {
107
+ tokenUsage: usageMetadata ? usageMetadataToTokenUsage(usageMetadata) : void 0,
108
+ model: data.model ?? this.params.model,
109
+ responseId: data.id,
110
+ usageMetadata,
111
+ serviceTier
112
+ }
113
+ };
114
+ }
115
+ async *streamResponseChunks(messages, options, runManager) {
116
+ const streamUsage = options?.streamUsage ?? this.params.streamUsage ?? false;
117
+ const fields = combineInteractionsFields(this.params, options ?? {});
118
+ const mediaResolution = convertMediaResolutionToInteractions(fields.mediaResolution, fields.detail);
119
+ const systemInstruction = convertMessagesToInteractionsSystemInstruction(messages);
120
+ const input = convertMessagesToInteractionsInput(messages, mediaResolution);
121
+ const body = {
122
+ ...this.invocationParams(options),
123
+ stream: true,
124
+ ...systemInstruction ? { system_instruction: systemInstruction } : {},
125
+ input
126
+ };
127
+ const url = await this.buildUrl("interactions?alt=sse");
128
+ const headers = this.getHeaders(options);
129
+ const moduleName = this.constructor.name;
130
+ await runManager?.handleCustomEvent(`google-request-${moduleName}`, {
131
+ url,
132
+ headers,
133
+ body
134
+ });
135
+ let response;
136
+ try {
137
+ response = await this.params.caller.callWithOptions({
138
+ signal: options?.signal,
139
+ maxRetries: options?.maxRetries
140
+ }, async () => {
141
+ const nextResponse = await this.params.apiClient.fetch(new Request(url, {
142
+ method: "POST",
143
+ headers,
144
+ body: JSON.stringify(body),
145
+ signal: options?.signal
146
+ }));
147
+ if (!nextResponse.ok) throw await RequestError.fromResponse(nextResponse);
148
+ return nextResponse;
149
+ });
150
+ } catch (error) {
151
+ await runManager?.handleCustomEvent(`google-response-${moduleName}`, { error });
152
+ throw error;
153
+ }
154
+ await runManager?.handleCustomEvent(`google-response-${moduleName}`, {
155
+ url: response.url,
156
+ headers: response.headers,
157
+ status: response.status,
158
+ statusText: response.statusText
159
+ });
160
+ if (response.body) {
161
+ const eventStream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(new SafeJsonEventParserStream());
162
+ async function* sseEvents(stream, signal) {
163
+ const reader = stream.getReader();
164
+ try {
165
+ while (true) {
166
+ if (signal?.aborted) return;
167
+ const { done, value } = await reader.read();
168
+ if (done) break;
169
+ await runManager?.handleCustomEvent(`google-chunk-${moduleName}`, { chunk: value });
170
+ if (value !== null) yield value;
171
+ }
172
+ } finally {
173
+ reader.releaseLock();
174
+ }
175
+ }
176
+ for await (const chunk of convertInteractionsStreamToChunks(sseEvents(eventStream, options?.signal), {
177
+ streamUsage,
178
+ model: this.params.model
179
+ })) {
180
+ yield chunk;
181
+ await runManager?.handleLLMNewToken(chunk.text ?? "", void 0, void 0, void 0, void 0, { chunk });
182
+ }
183
+ }
184
+ }
185
+ async *streamChatModelEvents(messages, options, _runManager) {
186
+ const fields = combineInteractionsFields(this.params, options ?? {});
187
+ const mediaResolution = convertMediaResolutionToInteractions(fields.mediaResolution, fields.detail);
188
+ const systemInstruction = convertMessagesToInteractionsSystemInstruction(messages);
189
+ const input = convertMessagesToInteractionsInput(messages, mediaResolution);
190
+ const body = {
191
+ ...this.invocationParams(options),
192
+ stream: true,
193
+ ...systemInstruction ? { system_instruction: systemInstruction } : {},
194
+ input
195
+ };
196
+ const url = await this.buildUrl("interactions?alt=sse");
197
+ const headers = this.getHeaders(options);
198
+ const response = await this.params.apiClient.fetch(new Request(url, {
199
+ method: "POST",
200
+ headers,
201
+ body: JSON.stringify(body),
202
+ signal: options?.signal
203
+ }));
204
+ if (!response.ok) throw await RequestError.fromResponse(response);
205
+ if (!response.body) return;
206
+ const eventStream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(new SafeJsonEventParserStream());
207
+ const shouldStreamUsage = this.params.streamUsage !== false && options?.streamUsage !== false;
208
+ async function* sseEvents(stream, signal) {
209
+ const reader = stream.getReader();
210
+ try {
211
+ while (true) {
212
+ if (signal?.aborted) return;
213
+ const { done, value } = await reader.read();
214
+ if (done) break;
215
+ if (value !== null) yield value;
216
+ }
217
+ } finally {
218
+ reader.releaseLock();
219
+ }
220
+ }
221
+ yield* convertInteractionsStream(sseEvents(eventStream, options?.signal), {
222
+ streamUsage: shouldStreamUsage,
223
+ model: this.params.model
224
+ });
225
+ }
226
+ invocationParams(options) {
227
+ const fields = combineInteractionsFields(this.params, options ?? {});
228
+ const tools = fields.tools ? convertToolsToInteractionsTools(fields.tools) : void 0;
229
+ const toolChoice = convertToolChoiceToInteractionsConfig(options?.tool_choice, !!(tools && tools.length > 0));
230
+ const thinking = convertFieldsToInteractionsThinking(this.params.model, fields);
231
+ const speechConfig = convertFieldsToInteractionsSpeechConfig(fields);
232
+ const responseFormat = convertFieldsToInteractionsResponseFormat(fields);
233
+ const safetySettings = convertSafetySettingsToInteractions(fields.safetySettings);
234
+ const generationConfig = {
235
+ ...fields.temperature !== void 0 ? { temperature: fields.temperature } : {},
236
+ ...fields.topP !== void 0 ? { top_p: fields.topP } : {},
237
+ ...fields.topK !== void 0 ? { top_k: fields.topK } : {},
238
+ ...fields.maxOutputTokens !== void 0 ? { max_output_tokens: fields.maxOutputTokens } : {},
239
+ ...fields.presencePenalty !== void 0 ? { presence_penalty: fields.presencePenalty } : {},
240
+ ...fields.frequencyPenalty !== void 0 ? { frequency_penalty: fields.frequencyPenalty } : {},
241
+ ...fields.stopSequences !== void 0 ? { stop_sequences: fields.stopSequences } : {},
242
+ ...fields.seed !== void 0 ? { seed: fields.seed } : {},
243
+ ...thinking,
244
+ ...speechConfig ? { speech_config: speechConfig } : {},
245
+ ...toolChoice ? { tool_choice: toolChoice } : {}
246
+ };
247
+ const hasGenerationConfig = Object.keys(generationConfig).length > 0;
248
+ return {
249
+ ...fields.agent ? {
250
+ agent: fields.agent,
251
+ ...fields.agentConfig ? { agent_config: fields.agentConfig } : {}
252
+ } : { model: this.params.model },
253
+ ...tools && tools.length > 0 ? { tools } : {},
254
+ ...responseFormat ? { response_format: responseFormat } : {},
255
+ ...safetySettings ? { safety_settings: safetySettings } : {},
256
+ ...hasGenerationConfig ? { generation_config: generationConfig } : {},
257
+ ...convertFieldsToInteractionsServiceTier(this.params.platform, fields),
258
+ ...fields.previousInteractionId ? { previous_interaction_id: fields.previousInteractionId } : {},
259
+ ...fields.store !== void 0 ? { store: fields.store } : {},
260
+ ...fields.background !== void 0 ? { background: fields.background } : {},
261
+ ...fields.webhookConfig ? { webhook_config: fields.webhookConfig } : {}
262
+ };
263
+ }
264
+ formatStructuredOutputTool(schema, options) {
265
+ let functionName = options?.name ?? "extract";
266
+ let interactionsFunctionTool;
267
+ if (isInteropZodSchema(schema) || isSerializableSchema(schema)) {
268
+ const jsonSchema = schemaToGeminiParameters(schema);
269
+ const description = options?.description ?? (typeof jsonSchema.description === "string" ? jsonSchema.description : "A function available to call.");
270
+ interactionsFunctionTool = {
271
+ type: "function",
272
+ name: functionName,
273
+ description,
274
+ parameters: jsonSchema
275
+ };
276
+ } else if (typeof schema.name === "string" && typeof schema.parameters === "object" && schema.parameters != null) {
277
+ const raw = schema;
278
+ functionName = raw.name;
279
+ interactionsFunctionTool = {
280
+ type: "function",
281
+ name: raw.name,
282
+ description: options?.description ?? raw.description ?? "A function available to call.",
283
+ parameters: raw.parameters
284
+ };
285
+ } else {
286
+ const parameters = schemaToGeminiParameters(schema);
287
+ interactionsFunctionTool = {
288
+ type: "function",
289
+ name: functionName,
290
+ description: options?.description ?? schema.description ?? "A function available to call.",
291
+ parameters
292
+ };
293
+ }
294
+ return {
295
+ tools: [interactionsFunctionTool],
296
+ toolChoice: functionName,
297
+ functionName
298
+ };
299
+ }
300
+ };
301
+ export { InteractionsApiHandler };
302
+
303
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.js","names":[],"sources":["../../../src/chat_models/handlers/interactions.ts"],"sourcesContent":["import type { BaseMessage } from \"@langchain/core/messages\";\nimport type { ChatGenerationChunk, ChatResult } from \"@langchain/core/outputs\";\nimport type { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { BindToolsInput } from \"@langchain/core/language_models/chat_models\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport {\n type InteropZodType,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n type SerializableSchema,\n isSerializableSchema,\n} from \"@langchain/core/utils/standard_schema\";\nimport { EventSourceParserStream } from \"eventsource-parser/stream\";\nimport { GoogleChatApiHandler } from \"./base.js\";\nimport { SafeJsonEventParserStream } from \"../../utils/stream.js\";\nimport { usageMetadataToTokenUsage } from \"../../utils/metadata.js\";\nimport { iife } from \"../../utils/misc.js\";\nimport { NoCandidatesError, RequestError } from \"../../utils/errors.js\";\nimport { convertAIMessageToText } from \"../../converters/generate_content/messages.js\";\nimport { schemaToGeminiParameters } from \"../../converters/generate_content/tools.js\";\nimport {\n convertInteractionToAIMessage,\n convertMessagesToInteractionsInput,\n convertMessagesToInteractionsSystemInstruction,\n} from \"../../converters/interactions/messages.js\";\nimport {\n convertToolsToInteractionsTools,\n convertToolChoiceToInteractionsConfig,\n} from \"../../converters/interactions/tools.js\";\nimport {\n combineInteractionsFields,\n convertFieldsToInteractionsResponseFormat,\n convertFieldsToInteractionsServiceTier,\n convertFieldsToInteractionsSpeechConfig,\n convertFieldsToInteractionsThinking,\n convertMediaResolutionToInteractions,\n convertSafetySettingsToInteractions,\n} from \"../../converters/interactions/params.js\";\nimport {\n convertInteractionsStream,\n convertInteractionsStreamToChunks,\n} from \"../../converters/interactions/stream_events.js\";\nimport type {\n BaseChatGoogleCallOptions,\n InteractionsApiHandlerParams,\n InteractionsInvocationParams,\n Gemini,\n} from \"../types.js\";\nimport { settableServiceTier } from \"../types.js\";\n\ntype ServiceTier = Gemini.ServiceTier;\n\n/**\n * Concrete wire protocol handler for Google's Interactions API\n * (`/v1beta/interactions` and `/v1beta/interactions?alt=sse`).\n */\nexport class InteractionsApiHandler extends GoogleChatApiHandler<\n InteractionsInvocationParams,\n InteractionsApiHandlerParams\n> {\n constructor(params: InteractionsApiHandlerParams) {\n super(params);\n }\n\n protected get urlMethod(): string {\n return this.params.streaming ? \"interactions?alt=sse\" : \"interactions\";\n }\n\n protected getUrlSuffix(urlMethod?: string): string {\n const method = urlMethod ?? this.urlMethod;\n if (\n method === \"stream\" ||\n method.includes(\"alt=sse\") ||\n method.includes(\"stream\")\n ) {\n return \"/interactions?alt=sse\";\n }\n return \"/interactions\";\n }\n\n protected async buildUrlVertexLocation(urlMethod?: string): Promise<string> {\n const projectId = await this.params.apiClient.getProjectId();\n return this.formatUrl(\n [`projects/${projectId}`, `locations/${this.params.location}`],\n urlMethod\n );\n }\n\n override getHeaders(\n options?: BaseChatGoogleCallOptions\n ): Record<string, string> {\n const fields = combineInteractionsFields(this.params, options ?? {});\n\n // The priority type is set via header only for Vertex\n const priorityHeaders: Record<string, string> =\n this.params.platform === \"gcp\" &&\n typeof fields.serviceTier !== \"undefined\" &&\n settableServiceTier.includes(fields.serviceTier)\n ? { \"X-Vertex-AI-LLM-Shared-Request-Type\": fields.serviceTier }\n : {};\n\n return {\n ...priorityHeaders,\n ...super.getHeaders(options),\n };\n }\n\n async generate(\n messages: BaseMessage[],\n options?: BaseChatGoogleCallOptions,\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const url = await this.buildUrl(\"interactions\");\n const headers = this.getHeaders(options);\n const fields = combineInteractionsFields(this.params, options ?? {});\n const mediaResolution = convertMediaResolutionToInteractions(\n fields.mediaResolution,\n fields.detail\n );\n const systemInstruction =\n convertMessagesToInteractionsSystemInstruction(messages);\n const input = convertMessagesToInteractionsInput(messages, mediaResolution);\n\n const body: Gemini.Interactions.CreateInteractionParameters = {\n ...this.invocationParams(options),\n ...(systemInstruction ? { system_instruction: systemInstruction } : {}),\n input,\n };\n\n const moduleName = this.constructor.name;\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n url,\n headers,\n body,\n });\n\n let response: Response;\n try {\n response = await this.params.caller.callWithOptions(\n { signal: options?.signal, maxRetries: options?.maxRetries },\n async () => {\n const nextResponse = await this.params.apiClient.fetch(\n new Request(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n );\n\n if (!nextResponse.ok) {\n throw await RequestError.fromResponse(nextResponse);\n }\n\n return nextResponse;\n }\n );\n } catch (error) {\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n error,\n });\n throw error;\n }\n\n const data: Gemini.Interactions.Interaction = await response.json();\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n data,\n url: response.url,\n headers: Array.from(response.headers.entries()),\n status: response.status,\n statusText: response.statusText,\n });\n\n const { message, finishReason, usageMetadata } =\n convertInteractionToAIMessage(data);\n\n if (\n data.status === \"failed\" &&\n (!data.steps || data.steps.length === 0) &&\n (!data.outputs || data.outputs.length === 0)\n ) {\n throw new NoCandidatesError();\n }\n\n const text = convertAIMessageToText(message);\n\n const serviceTier: ServiceTier = iife((): ServiceTier => {\n const serviceTierHeader: string | null = response.headers.get(\n \"x-gemini-service-tier\"\n );\n return (data.service_tier ??\n serviceTierHeader ??\n \"standard\") as ServiceTier;\n });\n\n return {\n generations: [\n {\n text,\n message,\n generationInfo: {\n ...(finishReason ? { finishReason } : {}),\n ...(message.response_metadata?.citationMetadata\n ? {\n citationMetadata: message.response_metadata.citationMetadata,\n }\n : {}),\n ...(message.response_metadata?.groundingMetadata\n ? {\n groundingMetadata:\n message.response_metadata.groundingMetadata,\n }\n : {}),\n },\n },\n ],\n llmOutput: {\n tokenUsage: usageMetadata\n ? usageMetadataToTokenUsage(usageMetadata)\n : undefined,\n model: data.model ?? this.params.model,\n responseId: data.id,\n usageMetadata,\n serviceTier,\n },\n };\n }\n\n async *streamResponseChunks(\n messages: BaseMessage[],\n options?: BaseChatGoogleCallOptions,\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const streamUsage: boolean =\n options?.streamUsage ?? this.params.streamUsage ?? false;\n\n const fields = combineInteractionsFields(this.params, options ?? {});\n const mediaResolution = convertMediaResolutionToInteractions(\n fields.mediaResolution,\n fields.detail\n );\n const systemInstruction =\n convertMessagesToInteractionsSystemInstruction(messages);\n const input = convertMessagesToInteractionsInput(messages, mediaResolution);\n\n const body: Gemini.Interactions.CreateInteractionParameters = {\n ...this.invocationParams(options),\n stream: true,\n ...(systemInstruction ? { system_instruction: systemInstruction } : {}),\n input,\n };\n\n const url = await this.buildUrl(\"interactions?alt=sse\");\n const headers = this.getHeaders(options);\n const moduleName = this.constructor.name;\n await runManager?.handleCustomEvent(`google-request-${moduleName}`, {\n url,\n headers,\n body,\n });\n\n let response: Response;\n try {\n response = await this.params.caller.callWithOptions(\n { signal: options?.signal, maxRetries: options?.maxRetries },\n async () => {\n const nextResponse = await this.params.apiClient.fetch(\n new Request(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n );\n\n if (!nextResponse.ok) {\n throw await RequestError.fromResponse(nextResponse);\n }\n\n return nextResponse;\n }\n );\n } catch (error) {\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n error,\n });\n throw error;\n }\n\n await runManager?.handleCustomEvent(`google-response-${moduleName}`, {\n url: response.url,\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n\n if (response.body) {\n const eventStream = response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new SafeJsonEventParserStream<Gemini.Interactions.InteractionSseEvent>()\n );\n\n async function* sseEvents(\n stream: ReadableStream<Gemini.Interactions.InteractionSseEvent | null>,\n signal?: AbortSignal\n ): AsyncGenerator<Gemini.Interactions.InteractionSseEvent> {\n const reader = stream.getReader();\n try {\n while (true) {\n if (signal?.aborted) {\n return;\n }\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n await runManager?.handleCustomEvent(`google-chunk-${moduleName}`, {\n chunk: value,\n });\n if (value !== null) {\n yield value;\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n for await (const chunk of convertInteractionsStreamToChunks(\n sseEvents(eventStream, options?.signal),\n {\n streamUsage,\n model: this.params.model,\n }\n )) {\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text ?? \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n }\n }\n\n async *streamChatModelEvents(\n messages: BaseMessage[],\n options?: BaseChatGoogleCallOptions,\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const fields = combineInteractionsFields(this.params, options ?? {});\n const mediaResolution = convertMediaResolutionToInteractions(\n fields.mediaResolution,\n fields.detail\n );\n const systemInstruction =\n convertMessagesToInteractionsSystemInstruction(messages);\n const input = convertMessagesToInteractionsInput(messages, mediaResolution);\n\n const body: Gemini.Interactions.CreateInteractionParameters = {\n ...this.invocationParams(options),\n stream: true,\n ...(systemInstruction ? { system_instruction: systemInstruction } : {}),\n input,\n };\n\n const url = await this.buildUrl(\"interactions?alt=sse\");\n const headers = this.getHeaders(options);\n\n const response = await this.params.apiClient.fetch(\n new Request(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n signal: options?.signal,\n })\n );\n\n if (!response.ok) {\n throw await RequestError.fromResponse(response);\n }\n\n if (!response.body) {\n return;\n }\n\n const eventStream = response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new SafeJsonEventParserStream<Gemini.Interactions.InteractionSseEvent>()\n );\n\n const shouldStreamUsage =\n this.params.streamUsage !== false && options?.streamUsage !== false;\n\n async function* sseEvents(\n stream: ReadableStream<Gemini.Interactions.InteractionSseEvent | null>,\n signal?: AbortSignal\n ): AsyncGenerator<Gemini.Interactions.InteractionSseEvent> {\n const reader = stream.getReader();\n try {\n while (true) {\n if (signal?.aborted) {\n return;\n }\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n if (value !== null) {\n yield value;\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n yield* convertInteractionsStream(sseEvents(eventStream, options?.signal), {\n streamUsage: shouldStreamUsage,\n model: this.params.model,\n });\n }\n\n invocationParams(\n options?: BaseChatGoogleCallOptions\n ): InteractionsInvocationParams {\n const fields = combineInteractionsFields(this.params, options ?? {});\n\n const tools = fields.tools\n ? convertToolsToInteractionsTools(fields.tools)\n : undefined;\n\n const toolChoice = convertToolChoiceToInteractionsConfig(\n options?.tool_choice,\n !!(tools && tools.length > 0)\n );\n\n const thinking = convertFieldsToInteractionsThinking(\n this.params.model,\n fields\n );\n const speechConfig = convertFieldsToInteractionsSpeechConfig(fields);\n const responseFormat = convertFieldsToInteractionsResponseFormat(fields);\n const safetySettings = convertSafetySettingsToInteractions(\n fields.safetySettings\n );\n\n const generationConfig: Gemini.Interactions.GenerationConfig = {\n ...(fields.temperature !== undefined\n ? { temperature: fields.temperature }\n : {}),\n ...(fields.topP !== undefined ? { top_p: fields.topP } : {}),\n ...(fields.topK !== undefined ? { top_k: fields.topK } : {}),\n ...(fields.maxOutputTokens !== undefined\n ? { max_output_tokens: fields.maxOutputTokens }\n : {}),\n ...(fields.presencePenalty !== undefined\n ? { presence_penalty: fields.presencePenalty }\n : {}),\n ...(fields.frequencyPenalty !== undefined\n ? { frequency_penalty: fields.frequencyPenalty }\n : {}),\n ...(fields.stopSequences !== undefined\n ? { stop_sequences: fields.stopSequences }\n : {}),\n ...(fields.seed !== undefined ? { seed: fields.seed } : {}),\n ...thinking,\n ...(speechConfig ? { speech_config: speechConfig } : {}),\n ...(toolChoice ? { tool_choice: toolChoice } : {}),\n };\n\n const hasGenerationConfig = Object.keys(generationConfig).length > 0;\n\n return {\n ...(fields.agent\n ? {\n agent: fields.agent,\n ...(fields.agentConfig ? { agent_config: fields.agentConfig } : {}),\n }\n : { model: this.params.model }),\n ...(tools && tools.length > 0 ? { tools } : {}),\n ...(responseFormat ? { response_format: responseFormat } : {}),\n ...(safetySettings ? { safety_settings: safetySettings } : {}),\n ...(hasGenerationConfig ? { generation_config: generationConfig } : {}),\n ...convertFieldsToInteractionsServiceTier(this.params.platform, fields),\n ...(fields.previousInteractionId\n ? { previous_interaction_id: fields.previousInteractionId }\n : {}),\n ...(fields.store !== undefined ? { store: fields.store } : {}),\n ...(fields.background !== undefined\n ? { background: fields.background }\n : {}),\n ...(fields.webhookConfig ? { webhook_config: fields.webhookConfig } : {}),\n };\n }\n\n formatStructuredOutputTool(\n schema: InteropZodType | SerializableSchema | Record<string, unknown>,\n options?: { name?: string; description?: string }\n ): { tools: BindToolsInput[]; toolChoice: string; functionName: string } {\n let functionName = options?.name ?? \"extract\";\n let interactionsFunctionTool: Gemini.Interactions.Function;\n\n if (isInteropZodSchema(schema) || isSerializableSchema(schema)) {\n const jsonSchema = schemaToGeminiParameters(schema);\n const description =\n options?.description ??\n (typeof jsonSchema.description === \"string\"\n ? jsonSchema.description\n : \"A function available to call.\");\n interactionsFunctionTool = {\n type: \"function\",\n name: functionName,\n description,\n parameters: jsonSchema as unknown as Record<string, unknown>,\n };\n } else if (\n typeof (schema as { name?: unknown }).name === \"string\" &&\n typeof (schema as { parameters?: unknown }).parameters === \"object\" &&\n (schema as { parameters?: unknown }).parameters != null\n ) {\n const raw = schema as {\n name: string;\n description?: string;\n parameters: Record<string, unknown>;\n };\n functionName = raw.name;\n interactionsFunctionTool = {\n type: \"function\",\n name: raw.name,\n description:\n options?.description ??\n raw.description ??\n \"A function available to call.\",\n parameters: raw.parameters,\n };\n } else {\n const parameters = schemaToGeminiParameters(schema);\n interactionsFunctionTool = {\n type: \"function\",\n name: functionName,\n description:\n options?.description ??\n (schema as { description?: string }).description ??\n \"A function available to call.\",\n parameters: parameters as unknown as Record<string, unknown>,\n };\n }\n\n return {\n tools: [interactionsFunctionTool],\n toolChoice: functionName,\n functionName,\n };\n }\n}\n"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  const require_index = require("../clients/index.cjs");
2
2
  const require_base = require("./handlers/base.cjs");
3
- const require_params = require("../converters/shared/params.cjs");
3
+ const require_base$1 = require("./base.cjs");
4
4
  const require_generate_content = require("./handlers/generate_content.cjs");
5
+ const require_interactions = require("./handlers/interactions.cjs");
6
+ const require_params = require("../converters/shared/params.cjs");
5
7
  require("./handlers/index.cjs");
6
- const require_base$1 = require("./base.cjs");
7
8
  let _langchain_core_utils_env = require("@langchain/core/utils/env");
8
- //#region src/chat_models/index.ts
9
+ // src/chat_models/index.ts
9
10
  var ChatGoogle = class extends require_base$1.BaseChatGoogle {
10
11
  apiKey;
11
12
  constructor(modelOrParams, paramsArg) {
@@ -20,10 +21,10 @@ var ChatGoogle = class extends require_base$1.BaseChatGoogle {
20
21
  this.apiKey = params.apiKey;
21
22
  }
22
23
  };
23
- //#endregion
24
24
  exports.BaseChatGoogle = require_base$1.BaseChatGoogle;
25
25
  exports.ChatGoogle = ChatGoogle;
26
26
  exports.GenerateContentApiHandler = require_generate_content.GenerateContentApiHandler;
27
27
  exports.GoogleChatApiHandler = require_base.GoogleChatApiHandler;
28
+ exports.InteractionsApiHandler = require_interactions.InteractionsApiHandler;
28
29
 
29
30
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseChatGoogle","getGoogleChatModelParams","applyGeminiGatewayParams","getEnvironmentVariable","WebApiClient"],"sources":["../../src/chat_models/index.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { WebApiClient } from \"../clients/index.js\";\nimport {\n applyGeminiGatewayParams,\n BaseChatGoogle,\n BaseChatGoogleCallOptions,\n BaseChatGoogleParams,\n} from \"./base.js\";\nimport { getGoogleChatModelParams } from \"../converters/shared/params.js\";\n\n/**\n * Configuration parameters for the ChatGoogle model.\n *\n * This interface extends the base Google chat model parameters and adds\n * specific configuration options for the Generative AI API.\n */\nexport interface ChatGoogleParams extends BaseChatGoogleParams {\n /**\n * Google API key for authentication with the Generative AI API.\n *\n * If not provided, the model will attempt to use the `GOOGLE_API_KEY`\n * environment variable. You can obtain an API key from the\n * [Google AI Studio](https://makersuite.google.com/app/apikey).\n */\n apiKey?: string;\n\n /** @deprecated Import from `@langchain/google/node` to configure google auth options */\n authOptions?: never;\n}\n\n/**\n * Call options for the ChatGoogle model.\n *\n * This interface extends the base Google chat model call options and provides\n * configuration for individual model invocations. These options can be passed\n * when calling methods like `invoke()`, `stream()`, or `batch()` to customize\n * the behavior of a specific request.\n */\nexport interface ChatGoogleCallOptions extends BaseChatGoogleCallOptions {}\n\nexport class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {\n apiKey?: string;\n\n constructor(model: string, params?: Omit<ChatGoogleParams, \"model\">);\n constructor(params: ChatGoogleParams);\n constructor(\n modelOrParams: string | ChatGoogleParams,\n paramsArg?: Omit<ChatGoogleParams, \"model\">\n ) {\n let params = getGoogleChatModelParams(modelOrParams, paramsArg);\n // Route through the LangSmith gateway (Gemini Developer API path) when\n // configured, before falling back to the provider API-key env var so the\n // gateway key can take precedence.\n params = applyGeminiGatewayParams(params);\n params.apiKey = params?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n const apiClient = params?.apiClient ?? new WebApiClient(params);\n super({ ...params, apiClient });\n\n this.apiKey = params.apiKey;\n }\n}\n\nexport {\n BaseChatGoogle,\n type BaseChatGoogleParams,\n type BaseChatGoogleCallOptions,\n} from \"./base.js\";\nexport * from \"./handlers/index.js\";\nexport type {\n GoogleChatApiHandlerParams,\n GenerateContentApiHandlerParams,\n GoogleChatApiHandlerFactory,\n GoogleChatApiHandlerConfig,\n GenerateContentInvocationParams,\n BaseChatGoogleFields,\n GenerateContentSpecificFields,\n GenerateContentFields,\n ChatGoogleFields,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;AAwCA,IAAa,aAAb,cAAgCA,eAAAA,eAAsC;CACpE;CAIA,YACE,eACA,WACA;EACA,IAAI,SAASC,eAAAA,yBAAyB,eAAe,SAAS;EAI9D,SAASC,eAAAA,yBAAyB,MAAM;EACxC,OAAO,SAAS,QAAQ,WAAA,GAAUC,0BAAAA,uBAAAA,CAAuB,gBAAgB;EACzE,MAAM,YAAY,QAAQ,aAAa,IAAIC,cAAAA,aAAa,MAAM;EAC9D,MAAM;GAAE,GAAG;GAAQ;EAAU,CAAC;EAE9B,KAAK,SAAS,OAAO;CACvB;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["BaseChatGoogle","getGoogleChatModelParams","applyGeminiGatewayParams","getEnvironmentVariable","WebApiClient"],"sources":["../../src/chat_models/index.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { WebApiClient } from \"../clients/index.js\";\nimport {\n applyGeminiGatewayParams,\n BaseChatGoogle,\n BaseChatGoogleCallOptions,\n BaseChatGoogleParams,\n} from \"./base.js\";\nimport { getGoogleChatModelParams } from \"../converters/shared/params.js\";\n\n/**\n * Configuration parameters for the ChatGoogle model.\n *\n * This interface extends the base Google chat model parameters and adds\n * specific configuration options for the Generative AI API.\n */\nexport interface ChatGoogleParams extends BaseChatGoogleParams {\n /**\n * Google API key for authentication with the Generative AI API.\n *\n * If not provided, the model will attempt to use the `GOOGLE_API_KEY`\n * environment variable. You can obtain an API key from the\n * [Google AI Studio](https://makersuite.google.com/app/apikey).\n */\n apiKey?: string;\n\n /** @deprecated Import from `@langchain/google/node` to configure google auth options */\n authOptions?: never;\n}\n\n/**\n * Call options for the ChatGoogle model.\n *\n * This interface extends the base Google chat model call options and provides\n * configuration for individual model invocations. These options can be passed\n * when calling methods like `invoke()`, `stream()`, or `batch()` to customize\n * the behavior of a specific request.\n */\nexport interface ChatGoogleCallOptions extends BaseChatGoogleCallOptions {}\n\nexport class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {\n apiKey?: string;\n\n constructor(model: string, params?: Omit<ChatGoogleParams, \"model\">);\n constructor(params: ChatGoogleParams);\n constructor(\n modelOrParams: string | ChatGoogleParams,\n paramsArg?: Omit<ChatGoogleParams, \"model\">\n ) {\n let params = getGoogleChatModelParams(modelOrParams, paramsArg);\n // Route through the LangSmith gateway (Gemini Developer API path) when\n // configured, before falling back to the provider API-key env var so the\n // gateway key can take precedence.\n params = applyGeminiGatewayParams(params);\n params.apiKey = params?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n const apiClient = params?.apiClient ?? new WebApiClient(params);\n super({ ...params, apiClient });\n\n this.apiKey = params.apiKey;\n }\n}\n\nexport {\n BaseChatGoogle,\n type BaseChatGoogleParams,\n type BaseChatGoogleCallOptions,\n} from \"./base.js\";\nexport * from \"./handlers/index.js\";\nexport type {\n GoogleChatApiHandlerParams,\n GenerateContentApiHandlerParams,\n InteractionsApiHandlerParams,\n GoogleChatApiHandlerFactory,\n GoogleChatApiHandlerConfig,\n GenerateContentInvocationParams,\n InteractionsInvocationParams,\n BaseChatGoogleFields,\n GenerateContentSpecificFields,\n GenerateContentFields,\n InteractionsSpecificFields,\n InteractionsFields,\n ChatGoogleFields,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;;AAwCA,IAAa,aAAb,cAAgCA,eAAAA,eAAsC;CACpE;CAIA,YACE,eACA,WACA;EACA,IAAI,SAASC,eAAAA,yBAAyB,eAAe,SAAS;EAI9D,SAASC,eAAAA,yBAAyB,MAAM;EACxC,OAAO,SAAS,QAAQ,WAAA,GAAUC,0BAAAA,uBAAAA,CAAuB,gBAAgB;EACzE,MAAM,YAAY,QAAQ,aAAa,IAAIC,cAAAA,aAAa,MAAM;EAC9D,MAAM;GAAE,GAAG;GAAQ;EAAU,CAAC;EAE9B,KAAK,SAAS,OAAO;CACvB;AACF"}
@@ -1,9 +1,9 @@
1
1
  import { GoogleChatApiHandler } from "./handlers/base.cjs";
2
- import { BaseChatGoogleCallOptions, BaseChatGoogleFields, BaseChatGoogleParams, ChatGoogleFields, GenerateContentApiHandlerParams, GenerateContentFields, GenerateContentInvocationParams, GenerateContentSpecificFields, GoogleChatApiHandlerConfig, GoogleChatApiHandlerFactory, GoogleChatApiHandlerParams } from "./types.cjs";
2
+ import { BaseChatGoogle } from "./base.cjs";
3
3
  import { GenerateContentApiHandler } from "./handlers/generate_content.cjs";
4
+ import { InteractionsApiHandler } from "./handlers/interactions.cjs";
4
5
  import "./handlers/index.cjs";
5
- import { BaseChatGoogle } from "./base.cjs";
6
- //#region src/chat_models/index.d.ts
6
+ import { BaseChatGoogleCallOptions, BaseChatGoogleFields, BaseChatGoogleParams, ChatGoogleFields, GenerateContentApiHandlerParams, GenerateContentFields, GenerateContentInvocationParams, GenerateContentSpecificFields, GoogleChatApiHandlerConfig, GoogleChatApiHandlerFactory, GoogleChatApiHandlerParams, InteractionsApiHandlerParams, InteractionsFields, InteractionsInvocationParams, InteractionsSpecificFields } from "./types.cjs";
7
7
  /**
8
8
  * Configuration parameters for the ChatGoogle model.
9
9
  *
@@ -36,6 +36,5 @@ export declare class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {
36
36
  constructor(model: string, params?: Omit<ChatGoogleParams, "model">);
37
37
  constructor(params: ChatGoogleParams);
38
38
  }
39
- //#endregion
40
- export { BaseChatGoogle, type BaseChatGoogleCallOptions, type BaseChatGoogleFields, type BaseChatGoogleParams, type ChatGoogleFields, GenerateContentApiHandler, type GenerateContentApiHandlerParams, type GenerateContentFields, type GenerateContentInvocationParams, type GenerateContentSpecificFields, GoogleChatApiHandler, type GoogleChatApiHandlerConfig, type GoogleChatApiHandlerFactory, type GoogleChatApiHandlerParams };
39
+ export { BaseChatGoogle, type BaseChatGoogleCallOptions, type BaseChatGoogleFields, type BaseChatGoogleParams, type ChatGoogleFields, GenerateContentApiHandler, type GenerateContentApiHandlerParams, type GenerateContentFields, type GenerateContentInvocationParams, type GenerateContentSpecificFields, GoogleChatApiHandler, type GoogleChatApiHandlerConfig, type GoogleChatApiHandlerFactory, type GoogleChatApiHandlerParams, InteractionsApiHandler, type InteractionsApiHandlerParams, type InteractionsFields, type InteractionsInvocationParams, type InteractionsSpecificFields };
41
40
  //# sourceMappingURL=index.d.cts.map
@@ -1,9 +1,9 @@
1
1
  import { GoogleChatApiHandler } from "./handlers/base.js";
2
- import { BaseChatGoogleCallOptions, BaseChatGoogleFields, BaseChatGoogleParams, ChatGoogleFields, GenerateContentApiHandlerParams, GenerateContentFields, GenerateContentInvocationParams, GenerateContentSpecificFields, GoogleChatApiHandlerConfig, GoogleChatApiHandlerFactory, GoogleChatApiHandlerParams } from "./types.js";
2
+ import { BaseChatGoogle } from "./base.js";
3
3
  import { GenerateContentApiHandler } from "./handlers/generate_content.js";
4
+ import { InteractionsApiHandler } from "./handlers/interactions.js";
4
5
  import "./handlers/index.js";
5
- import { BaseChatGoogle } from "./base.js";
6
- //#region src/chat_models/index.d.ts
6
+ import { BaseChatGoogleCallOptions, BaseChatGoogleFields, BaseChatGoogleParams, ChatGoogleFields, GenerateContentApiHandlerParams, GenerateContentFields, GenerateContentInvocationParams, GenerateContentSpecificFields, GoogleChatApiHandlerConfig, GoogleChatApiHandlerFactory, GoogleChatApiHandlerParams, InteractionsApiHandlerParams, InteractionsFields, InteractionsInvocationParams, InteractionsSpecificFields } from "./types.js";
7
7
  /**
8
8
  * Configuration parameters for the ChatGoogle model.
9
9
  *
@@ -36,6 +36,5 @@ export declare class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {
36
36
  constructor(model: string, params?: Omit<ChatGoogleParams, "model">);
37
37
  constructor(params: ChatGoogleParams);
38
38
  }
39
- //#endregion
40
- export { BaseChatGoogle, type BaseChatGoogleCallOptions, type BaseChatGoogleFields, type BaseChatGoogleParams, type ChatGoogleFields, GenerateContentApiHandler, type GenerateContentApiHandlerParams, type GenerateContentFields, type GenerateContentInvocationParams, type GenerateContentSpecificFields, GoogleChatApiHandler, type GoogleChatApiHandlerConfig, type GoogleChatApiHandlerFactory, type GoogleChatApiHandlerParams };
39
+ export { BaseChatGoogle, type BaseChatGoogleCallOptions, type BaseChatGoogleFields, type BaseChatGoogleParams, type ChatGoogleFields, GenerateContentApiHandler, type GenerateContentApiHandlerParams, type GenerateContentFields, type GenerateContentInvocationParams, type GenerateContentSpecificFields, GoogleChatApiHandler, type GoogleChatApiHandlerConfig, type GoogleChatApiHandlerFactory, type GoogleChatApiHandlerParams, InteractionsApiHandler, type InteractionsApiHandlerParams, type InteractionsFields, type InteractionsInvocationParams, type InteractionsSpecificFields };
41
40
  //# sourceMappingURL=index.d.ts.map
@@ -1,11 +1,12 @@
1
1
  import { WebApiClient } from "../clients/index.js";
2
2
  import { GoogleChatApiHandler } from "./handlers/base.js";
3
- import { getGoogleChatModelParams } from "../converters/shared/params.js";
3
+ import { BaseChatGoogle, applyGeminiGatewayParams } from "./base.js";
4
4
  import { GenerateContentApiHandler } from "./handlers/generate_content.js";
5
+ import { InteractionsApiHandler } from "./handlers/interactions.js";
6
+ import { getGoogleChatModelParams } from "../converters/shared/params.js";
5
7
  import "./handlers/index.js";
6
- import { BaseChatGoogle, applyGeminiGatewayParams } from "./base.js";
7
8
  import { getEnvironmentVariable } from "@langchain/core/utils/env";
8
- //#region src/chat_models/index.ts
9
+ // src/chat_models/index.ts
9
10
  var ChatGoogle = class extends BaseChatGoogle {
10
11
  apiKey;
11
12
  constructor(modelOrParams, paramsArg) {
@@ -20,7 +21,6 @@ var ChatGoogle = class extends BaseChatGoogle {
20
21
  this.apiKey = params.apiKey;
21
22
  }
22
23
  };
23
- //#endregion
24
- export { BaseChatGoogle, ChatGoogle, GenerateContentApiHandler, GoogleChatApiHandler };
24
+ export { BaseChatGoogle, ChatGoogle, GenerateContentApiHandler, GoogleChatApiHandler, InteractionsApiHandler };
25
25
 
26
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/chat_models/index.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { WebApiClient } from \"../clients/index.js\";\nimport {\n applyGeminiGatewayParams,\n BaseChatGoogle,\n BaseChatGoogleCallOptions,\n BaseChatGoogleParams,\n} from \"./base.js\";\nimport { getGoogleChatModelParams } from \"../converters/shared/params.js\";\n\n/**\n * Configuration parameters for the ChatGoogle model.\n *\n * This interface extends the base Google chat model parameters and adds\n * specific configuration options for the Generative AI API.\n */\nexport interface ChatGoogleParams extends BaseChatGoogleParams {\n /**\n * Google API key for authentication with the Generative AI API.\n *\n * If not provided, the model will attempt to use the `GOOGLE_API_KEY`\n * environment variable. You can obtain an API key from the\n * [Google AI Studio](https://makersuite.google.com/app/apikey).\n */\n apiKey?: string;\n\n /** @deprecated Import from `@langchain/google/node` to configure google auth options */\n authOptions?: never;\n}\n\n/**\n * Call options for the ChatGoogle model.\n *\n * This interface extends the base Google chat model call options and provides\n * configuration for individual model invocations. These options can be passed\n * when calling methods like `invoke()`, `stream()`, or `batch()` to customize\n * the behavior of a specific request.\n */\nexport interface ChatGoogleCallOptions extends BaseChatGoogleCallOptions {}\n\nexport class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {\n apiKey?: string;\n\n constructor(model: string, params?: Omit<ChatGoogleParams, \"model\">);\n constructor(params: ChatGoogleParams);\n constructor(\n modelOrParams: string | ChatGoogleParams,\n paramsArg?: Omit<ChatGoogleParams, \"model\">\n ) {\n let params = getGoogleChatModelParams(modelOrParams, paramsArg);\n // Route through the LangSmith gateway (Gemini Developer API path) when\n // configured, before falling back to the provider API-key env var so the\n // gateway key can take precedence.\n params = applyGeminiGatewayParams(params);\n params.apiKey = params?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n const apiClient = params?.apiClient ?? new WebApiClient(params);\n super({ ...params, apiClient });\n\n this.apiKey = params.apiKey;\n }\n}\n\nexport {\n BaseChatGoogle,\n type BaseChatGoogleParams,\n type BaseChatGoogleCallOptions,\n} from \"./base.js\";\nexport * from \"./handlers/index.js\";\nexport type {\n GoogleChatApiHandlerParams,\n GenerateContentApiHandlerParams,\n GoogleChatApiHandlerFactory,\n GoogleChatApiHandlerConfig,\n GenerateContentInvocationParams,\n BaseChatGoogleFields,\n GenerateContentSpecificFields,\n GenerateContentFields,\n ChatGoogleFields,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;AAwCA,IAAa,aAAb,cAAgC,eAAsC;CACpE;CAIA,YACE,eACA,WACA;EACA,IAAI,SAAS,yBAAyB,eAAe,SAAS;EAI9D,SAAS,yBAAyB,MAAM;EACxC,OAAO,SAAS,QAAQ,UAAU,uBAAuB,gBAAgB;EACzE,MAAM,YAAY,QAAQ,aAAa,IAAI,aAAa,MAAM;EAC9D,MAAM;GAAE,GAAG;GAAQ;EAAU,CAAC;EAE9B,KAAK,SAAS,OAAO;CACvB;AACF"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/chat_models/index.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { WebApiClient } from \"../clients/index.js\";\nimport {\n applyGeminiGatewayParams,\n BaseChatGoogle,\n BaseChatGoogleCallOptions,\n BaseChatGoogleParams,\n} from \"./base.js\";\nimport { getGoogleChatModelParams } from \"../converters/shared/params.js\";\n\n/**\n * Configuration parameters for the ChatGoogle model.\n *\n * This interface extends the base Google chat model parameters and adds\n * specific configuration options for the Generative AI API.\n */\nexport interface ChatGoogleParams extends BaseChatGoogleParams {\n /**\n * Google API key for authentication with the Generative AI API.\n *\n * If not provided, the model will attempt to use the `GOOGLE_API_KEY`\n * environment variable. You can obtain an API key from the\n * [Google AI Studio](https://makersuite.google.com/app/apikey).\n */\n apiKey?: string;\n\n /** @deprecated Import from `@langchain/google/node` to configure google auth options */\n authOptions?: never;\n}\n\n/**\n * Call options for the ChatGoogle model.\n *\n * This interface extends the base Google chat model call options and provides\n * configuration for individual model invocations. These options can be passed\n * when calling methods like `invoke()`, `stream()`, or `batch()` to customize\n * the behavior of a specific request.\n */\nexport interface ChatGoogleCallOptions extends BaseChatGoogleCallOptions {}\n\nexport class ChatGoogle extends BaseChatGoogle<ChatGoogleCallOptions> {\n apiKey?: string;\n\n constructor(model: string, params?: Omit<ChatGoogleParams, \"model\">);\n constructor(params: ChatGoogleParams);\n constructor(\n modelOrParams: string | ChatGoogleParams,\n paramsArg?: Omit<ChatGoogleParams, \"model\">\n ) {\n let params = getGoogleChatModelParams(modelOrParams, paramsArg);\n // Route through the LangSmith gateway (Gemini Developer API path) when\n // configured, before falling back to the provider API-key env var so the\n // gateway key can take precedence.\n params = applyGeminiGatewayParams(params);\n params.apiKey = params?.apiKey ?? getEnvironmentVariable(\"GOOGLE_API_KEY\");\n const apiClient = params?.apiClient ?? new WebApiClient(params);\n super({ ...params, apiClient });\n\n this.apiKey = params.apiKey;\n }\n}\n\nexport {\n BaseChatGoogle,\n type BaseChatGoogleParams,\n type BaseChatGoogleCallOptions,\n} from \"./base.js\";\nexport * from \"./handlers/index.js\";\nexport type {\n GoogleChatApiHandlerParams,\n GenerateContentApiHandlerParams,\n InteractionsApiHandlerParams,\n GoogleChatApiHandlerFactory,\n GoogleChatApiHandlerConfig,\n GenerateContentInvocationParams,\n InteractionsInvocationParams,\n BaseChatGoogleFields,\n GenerateContentSpecificFields,\n GenerateContentFields,\n InteractionsSpecificFields,\n InteractionsFields,\n ChatGoogleFields,\n} from \"./types.js\";\n"],"mappings":";;;;;;;;;AAwCA,IAAa,aAAb,cAAgC,eAAsC;CACpE;CAIA,YACE,eACA,WACA;EACA,IAAI,SAAS,yBAAyB,eAAe,SAAS;EAI9D,SAAS,yBAAyB,MAAM;EACxC,OAAO,SAAS,QAAQ,UAAU,uBAAuB,gBAAgB;EACzE,MAAM,YAAY,QAAQ,aAAa,IAAI,aAAa,MAAM;EAC9D,MAAM;GAAE,GAAG;GAAQ;EAAU,CAAC;EAE9B,KAAK,SAAS,OAAO;CACvB;AACF"}
@@ -1,9 +1,9 @@
1
- const require_const = require("../const.cjs");
2
- const require_params = require("../converters/shared/params.cjs");
3
1
  const require_base = require("./base.cjs");
2
+ const require_params = require("../converters/shared/params.cjs");
3
+ const require_const = require("../const.cjs");
4
4
  const require_node = require("../clients/node.cjs");
5
5
  let _langchain_core_utils_env = require("@langchain/core/utils/env");
6
- //#region src/chat_models/node.ts
6
+ // src/chat_models/node.ts
7
7
  var ChatGoogleNode = class extends require_base.BaseChatGoogle {
8
8
  constructor(modelOrParams, paramsArg) {
9
9
  let params = require_params.getGoogleChatModelParams(modelOrParams, paramsArg);
@@ -28,7 +28,6 @@ function getRequiredAuthScopes(params) {
28
28
  default: return require_const.VERTEX_AI_AUTH_SCOPES;
29
29
  }
30
30
  }
31
- //#endregion
32
31
  exports.ChatGoogle = ChatGoogleNode;
33
32
 
34
33
  //# sourceMappingURL=node.cjs.map
@@ -1,12 +1,10 @@
1
- import { BaseChatGoogle } from "./base.cjs";
2
1
  import { ChatGoogleParams } from "./index.cjs";
2
+ import { BaseChatGoogle } from "./base.cjs";
3
3
  import { NodeApiClientParams } from "../clients/node.cjs";
4
- //#region src/chat_models/node.d.ts
5
4
  interface ChatGoogleNodeParams extends NodeApiClientParams, ChatGoogleParams {}
6
5
  declare class ChatGoogleNode extends BaseChatGoogle {
7
6
  constructor(model: string, params?: Omit<ChatGoogleNodeParams, "model">);
8
7
  constructor(params: ChatGoogleNodeParams);
9
8
  }
10
- //#endregion
11
9
  export { ChatGoogleNode as ChatGoogle, type ChatGoogleNodeParams as ChatGoogleParams };
12
10
  //# sourceMappingURL=node.d.cts.map
@@ -1,12 +1,10 @@
1
- import { BaseChatGoogle } from "./base.js";
2
1
  import { ChatGoogleParams } from "./index.js";
2
+ import { BaseChatGoogle } from "./base.js";
3
3
  import { NodeApiClientParams } from "../clients/node.js";
4
- //#region src/chat_models/node.d.ts
5
4
  interface ChatGoogleNodeParams extends NodeApiClientParams, ChatGoogleParams {}
6
5
  declare class ChatGoogleNode extends BaseChatGoogle {
7
6
  constructor(model: string, params?: Omit<ChatGoogleNodeParams, "model">);
8
7
  constructor(params: ChatGoogleNodeParams);
9
8
  }
10
- //#endregion
11
9
  export { ChatGoogleNode as ChatGoogle, type ChatGoogleNodeParams as ChatGoogleParams };
12
10
  //# sourceMappingURL=node.d.ts.map
@@ -1,9 +1,9 @@
1
- import { GENERATIVE_AI_AUTH_SCOPES, VERTEX_AI_AUTH_SCOPES } from "../const.js";
2
- import { convertParamsToPlatformType, getGoogleChatModelParams } from "../converters/shared/params.js";
3
1
  import { BaseChatGoogle, applyGeminiGatewayParams, getPlatformType } from "./base.js";
2
+ import { convertParamsToPlatformType, getGoogleChatModelParams } from "../converters/shared/params.js";
3
+ import { GENERATIVE_AI_AUTH_SCOPES, VERTEX_AI_AUTH_SCOPES } from "../const.js";
4
4
  import { NodeApiClient, ensureAuthScopes } from "../clients/node.js";
5
5
  import { getEnvironmentVariable } from "@langchain/core/utils/env";
6
- //#region src/chat_models/node.ts
6
+ // src/chat_models/node.ts
7
7
  var ChatGoogleNode = class extends BaseChatGoogle {
8
8
  constructor(modelOrParams, paramsArg) {
9
9
  let params = getGoogleChatModelParams(modelOrParams, paramsArg);
@@ -28,7 +28,6 @@ function getRequiredAuthScopes(params) {
28
28
  default: return VERTEX_AI_AUTH_SCOPES;
29
29
  }
30
30
  }
31
- //#endregion
32
31
  export { ChatGoogleNode as ChatGoogle };
33
32
 
34
33
  //# sourceMappingURL=node.js.map
@@ -1,4 +1,4 @@
1
- //#region src/chat_models/profiles.ts
1
+ // src/chat_models/profiles.ts
2
2
  const PROFILES = {
3
3
  "gemini-4-argon": {
4
4
  maxInputTokens: 1048576,
@@ -379,7 +379,6 @@ const PROFILES = {
379
379
  structuredOutput: false
380
380
  }
381
381
  };
382
- //#endregion
383
382
  exports.default = PROFILES;
384
383
 
385
384
  //# sourceMappingURL=profiles.cjs.map
@@ -1,4 +1,4 @@
1
- //#region src/chat_models/profiles.ts
1
+ // src/chat_models/profiles.ts
2
2
  const PROFILES = {
3
3
  "gemini-4-argon": {
4
4
  maxInputTokens: 1048576,
@@ -379,7 +379,6 @@ const PROFILES = {
379
379
  structuredOutput: false
380
380
  }
381
381
  };
382
- //#endregion
383
382
  export { PROFILES as default };
384
383
 
385
384
  //# sourceMappingURL=profiles.js.map
@@ -1,6 +1,5 @@
1
- //#region src/chat_models/types.ts
1
+ // src/chat_models/types.ts
2
2
  const settableServiceTier = ["flex", "priority"];
3
- //#endregion
4
3
  exports.settableServiceTier = settableServiceTier;
5
4
 
6
5
  //# sourceMappingURL=types.cjs.map