@langchain/openai 1.0.0-alpha.2 → 1.0.0

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 +43 -0
  2. package/LICENSE +6 -6
  3. package/dist/azure/chat_models/common.cjs +130 -0
  4. package/dist/azure/chat_models/common.cjs.map +1 -0
  5. package/dist/azure/chat_models/common.d.cts +16 -0
  6. package/dist/azure/chat_models/common.d.cts.map +1 -0
  7. package/dist/azure/chat_models/common.d.ts +16 -0
  8. package/dist/azure/chat_models/common.d.ts.map +1 -0
  9. package/dist/azure/chat_models/common.js +124 -0
  10. package/dist/azure/chat_models/common.js.map +1 -0
  11. package/dist/azure/chat_models/completions.cjs +50 -0
  12. package/dist/azure/chat_models/completions.cjs.map +1 -0
  13. package/dist/azure/chat_models/completions.d.cts +29 -0
  14. package/dist/azure/chat_models/completions.d.cts.map +1 -0
  15. package/dist/azure/chat_models/completions.d.ts +29 -0
  16. package/dist/azure/chat_models/completions.d.ts.map +1 -0
  17. package/dist/azure/chat_models/completions.js +50 -0
  18. package/dist/azure/chat_models/completions.js.map +1 -0
  19. package/dist/azure/{chat_models.cjs → chat_models/index.cjs} +14 -214
  20. package/dist/azure/chat_models/index.cjs.map +1 -0
  21. package/dist/azure/{chat_models.d.ts → chat_models/index.d.cts} +6 -11
  22. package/dist/azure/chat_models/index.d.cts.map +1 -0
  23. package/dist/azure/{chat_models.d.cts → chat_models/index.d.ts} +6 -11
  24. package/dist/azure/chat_models/index.d.ts.map +1 -0
  25. package/dist/azure/{chat_models.js → chat_models/index.js} +6 -205
  26. package/dist/azure/chat_models/index.js.map +1 -0
  27. package/dist/azure/chat_models/responses.cjs +50 -0
  28. package/dist/azure/chat_models/responses.cjs.map +1 -0
  29. package/dist/azure/chat_models/responses.d.cts +29 -0
  30. package/dist/azure/chat_models/responses.d.cts.map +1 -0
  31. package/dist/azure/chat_models/responses.d.ts +29 -0
  32. package/dist/azure/chat_models/responses.d.ts.map +1 -0
  33. package/dist/azure/chat_models/responses.js +50 -0
  34. package/dist/azure/chat_models/responses.js.map +1 -0
  35. package/dist/chat_models/base.cjs +533 -0
  36. package/dist/chat_models/base.cjs.map +1 -0
  37. package/dist/chat_models/base.d.cts +272 -0
  38. package/dist/chat_models/base.d.cts.map +1 -0
  39. package/dist/chat_models/base.d.ts +272 -0
  40. package/dist/chat_models/base.d.ts.map +1 -0
  41. package/dist/chat_models/base.js +532 -0
  42. package/dist/chat_models/base.js.map +1 -0
  43. package/dist/chat_models/completions.cjs +328 -0
  44. package/dist/chat_models/completions.cjs.map +1 -0
  45. package/dist/chat_models/completions.d.cts +33 -0
  46. package/dist/chat_models/completions.d.cts.map +1 -0
  47. package/dist/chat_models/completions.d.ts +33 -0
  48. package/dist/chat_models/completions.d.ts.map +1 -0
  49. package/dist/chat_models/completions.js +327 -0
  50. package/dist/chat_models/completions.js.map +1 -0
  51. package/dist/chat_models/index.cjs +608 -0
  52. package/dist/chat_models/index.cjs.map +1 -0
  53. package/dist/chat_models/index.d.cts +593 -0
  54. package/dist/chat_models/index.d.cts.map +1 -0
  55. package/dist/chat_models/index.d.ts +593 -0
  56. package/dist/chat_models/index.d.ts.map +1 -0
  57. package/dist/chat_models/index.js +608 -0
  58. package/dist/chat_models/index.js.map +1 -0
  59. package/dist/chat_models/responses.cjs +550 -0
  60. package/dist/chat_models/responses.cjs.map +1 -0
  61. package/dist/chat_models/responses.d.cts +77 -0
  62. package/dist/chat_models/responses.d.cts.map +1 -0
  63. package/dist/chat_models/responses.d.ts +77 -0
  64. package/dist/chat_models/responses.d.ts.map +1 -0
  65. package/dist/chat_models/responses.js +549 -0
  66. package/dist/chat_models/responses.js.map +1 -0
  67. package/dist/index.cjs +14 -7
  68. package/dist/index.d.cts +9 -3
  69. package/dist/index.d.ts +9 -3
  70. package/dist/index.js +8 -3
  71. package/dist/langchain-core/dist/callbacks/base.d.ts +1 -0
  72. package/dist/langchain-core/dist/callbacks/manager.d.ts +2 -0
  73. package/dist/langchain-core/dist/language_models/base.d.ts +5 -0
  74. package/dist/langchain-core/dist/language_models/chat_models.d.cts +13 -0
  75. package/dist/langchain-core/dist/language_models/chat_models.d.cts.map +1 -0
  76. package/dist/langchain-core/dist/language_models/chat_models.d.ts +20 -0
  77. package/dist/langchain-core/dist/language_models/chat_models.d.ts.map +1 -0
  78. package/dist/langchain-core/dist/runnables/base.d.ts +7 -0
  79. package/dist/langchain-core/dist/runnables/graph.d.ts +1 -0
  80. package/dist/langchain-core/dist/runnables/types.d.ts +2 -0
  81. package/dist/langchain-core/dist/tools/types.d.ts +5 -0
  82. package/dist/langchain-core/dist/tracers/base.d.ts +2 -0
  83. package/dist/langchain-core/dist/tracers/event_stream.d.ts +1 -0
  84. package/dist/langchain-core/dist/tracers/log_stream.d.ts +3 -0
  85. package/dist/langchain-core/dist/utils/types/index.d.ts +1 -0
  86. package/dist/langchain-core/dist/utils/types/zod.d.ts +1 -0
  87. package/dist/llms.cjs +1 -1
  88. package/dist/llms.d.cts +1 -1
  89. package/dist/llms.js +1 -1
  90. package/dist/utils/message_inputs.cjs +1 -1
  91. package/dist/utils/message_inputs.js +1 -1
  92. package/dist/utils/misc.cjs +4 -1
  93. package/dist/utils/misc.cjs.map +1 -1
  94. package/dist/utils/misc.d.cts.map +1 -1
  95. package/dist/utils/misc.d.ts.map +1 -1
  96. package/dist/utils/misc.js +4 -1
  97. package/dist/utils/misc.js.map +1 -1
  98. package/package.json +11 -10
  99. package/dist/azure/chat_models.cjs.map +0 -1
  100. package/dist/azure/chat_models.d.cts.map +0 -1
  101. package/dist/azure/chat_models.d.ts.map +0 -1
  102. package/dist/azure/chat_models.js.map +0 -1
  103. package/dist/chat_models.cjs +0 -1965
  104. package/dist/chat_models.cjs.map +0 -1
  105. package/dist/chat_models.d.cts +0 -931
  106. package/dist/chat_models.d.cts.map +0 -1
  107. package/dist/chat_models.d.ts +0 -931
  108. package/dist/chat_models.d.ts.map +0 -1
  109. package/dist/chat_models.js +0 -1961
  110. package/dist/chat_models.js.map +0 -1
@@ -0,0 +1,328 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_misc = require('../utils/misc.cjs');
3
+ const require_tools = require('../utils/tools.cjs');
4
+ const require_output = require('../utils/output.cjs');
5
+ const require_base = require('./base.cjs');
6
+ const require_client = require('../utils/client.cjs');
7
+ const require_message_inputs = require('../utils/message_inputs.cjs');
8
+ const __langchain_core_output_parsers_openai_tools = require_rolldown_runtime.__toESM(require("@langchain/core/output_parsers/openai_tools"));
9
+ const __langchain_core_messages = require_rolldown_runtime.__toESM(require("@langchain/core/messages"));
10
+ const __langchain_core_outputs = require_rolldown_runtime.__toESM(require("@langchain/core/outputs"));
11
+
12
+ //#region src/chat_models/completions.ts
13
+ /**
14
+ * OpenAI Completions API implementation.
15
+ * @internal
16
+ */
17
+ var ChatOpenAICompletions = class extends require_base.BaseChatOpenAI {
18
+ /** @internal */
19
+ invocationParams(options, extra) {
20
+ let strict;
21
+ if (options?.strict !== void 0) strict = options.strict;
22
+ else if (this.supportsStrictToolCalling !== void 0) strict = this.supportsStrictToolCalling;
23
+ let streamOptionsConfig = {};
24
+ if (options?.stream_options !== void 0) streamOptionsConfig = { stream_options: options.stream_options };
25
+ else if (this.streamUsage && (this.streaming || extra?.streaming)) streamOptionsConfig = { stream_options: { include_usage: true } };
26
+ const params = {
27
+ model: this.model,
28
+ temperature: this.temperature,
29
+ top_p: this.topP,
30
+ frequency_penalty: this.frequencyPenalty,
31
+ presence_penalty: this.presencePenalty,
32
+ logprobs: this.logprobs,
33
+ top_logprobs: this.topLogprobs,
34
+ n: this.n,
35
+ logit_bias: this.logitBias,
36
+ stop: options?.stop ?? this.stopSequences,
37
+ user: this.user,
38
+ stream: this.streaming,
39
+ functions: options?.functions,
40
+ function_call: options?.function_call,
41
+ tools: options?.tools?.length ? options.tools.map((tool) => this._convertChatOpenAIToolToCompletionsTool(tool, { strict })) : void 0,
42
+ tool_choice: require_tools.formatToOpenAIToolChoice(options?.tool_choice),
43
+ response_format: this._getResponseFormat(options?.response_format),
44
+ seed: options?.seed,
45
+ ...streamOptionsConfig,
46
+ parallel_tool_calls: options?.parallel_tool_calls,
47
+ ...this.audio || options?.audio ? { audio: this.audio || options?.audio } : {},
48
+ ...this.modalities || options?.modalities ? { modalities: this.modalities || options?.modalities } : {},
49
+ ...this.modelKwargs,
50
+ prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,
51
+ verbosity: options?.verbosity ?? this.verbosity
52
+ };
53
+ if (options?.prediction !== void 0) params.prediction = options.prediction;
54
+ if (this.service_tier !== void 0) params.service_tier = this.service_tier;
55
+ if (options?.service_tier !== void 0) params.service_tier = options.service_tier;
56
+ const reasoning = this._getReasoningParams(options);
57
+ if (reasoning !== void 0 && reasoning.effort !== void 0) params.reasoning_effort = reasoning.effort;
58
+ if (require_misc.isReasoningModel(params.model)) params.max_completion_tokens = this.maxTokens === -1 ? void 0 : this.maxTokens;
59
+ else params.max_tokens = this.maxTokens === -1 ? void 0 : this.maxTokens;
60
+ return params;
61
+ }
62
+ async _generate(messages, options, runManager) {
63
+ const usageMetadata = {};
64
+ const params = this.invocationParams(options);
65
+ const messagesMapped = require_message_inputs._convertMessagesToOpenAIParams(messages, this.model);
66
+ if (params.stream) {
67
+ const stream = this._streamResponseChunks(messages, options, runManager);
68
+ const finalChunks = {};
69
+ for await (const chunk of stream) {
70
+ chunk.message.response_metadata = {
71
+ ...chunk.generationInfo,
72
+ ...chunk.message.response_metadata
73
+ };
74
+ const index = chunk.generationInfo?.completion ?? 0;
75
+ if (finalChunks[index] === void 0) finalChunks[index] = chunk;
76
+ else finalChunks[index] = finalChunks[index].concat(chunk);
77
+ }
78
+ const generations = Object.entries(finalChunks).sort(([aKey], [bKey]) => parseInt(aKey, 10) - parseInt(bKey, 10)).map(([_, value]) => value);
79
+ const { functions, function_call } = this.invocationParams(options);
80
+ const promptTokenUsage = await this._getEstimatedTokenCountFromPrompt(messages, functions, function_call);
81
+ const completionTokenUsage = await this._getNumTokensFromGenerations(generations);
82
+ usageMetadata.input_tokens = promptTokenUsage;
83
+ usageMetadata.output_tokens = completionTokenUsage;
84
+ usageMetadata.total_tokens = promptTokenUsage + completionTokenUsage;
85
+ return {
86
+ generations,
87
+ llmOutput: { estimatedTokenUsage: {
88
+ promptTokens: usageMetadata.input_tokens,
89
+ completionTokens: usageMetadata.output_tokens,
90
+ totalTokens: usageMetadata.total_tokens
91
+ } }
92
+ };
93
+ } else {
94
+ const data = await this.completionWithRetry({
95
+ ...params,
96
+ stream: false,
97
+ messages: messagesMapped
98
+ }, {
99
+ signal: options?.signal,
100
+ ...options?.options
101
+ });
102
+ const { completion_tokens: completionTokens, prompt_tokens: promptTokens, total_tokens: totalTokens, prompt_tokens_details: promptTokensDetails, completion_tokens_details: completionTokensDetails } = data?.usage ?? {};
103
+ if (completionTokens) usageMetadata.output_tokens = (usageMetadata.output_tokens ?? 0) + completionTokens;
104
+ if (promptTokens) usageMetadata.input_tokens = (usageMetadata.input_tokens ?? 0) + promptTokens;
105
+ if (totalTokens) usageMetadata.total_tokens = (usageMetadata.total_tokens ?? 0) + totalTokens;
106
+ if (promptTokensDetails?.audio_tokens !== null || promptTokensDetails?.cached_tokens !== null) usageMetadata.input_token_details = {
107
+ ...promptTokensDetails?.audio_tokens !== null && { audio: promptTokensDetails?.audio_tokens },
108
+ ...promptTokensDetails?.cached_tokens !== null && { cache_read: promptTokensDetails?.cached_tokens }
109
+ };
110
+ if (completionTokensDetails?.audio_tokens !== null || completionTokensDetails?.reasoning_tokens !== null) usageMetadata.output_token_details = {
111
+ ...completionTokensDetails?.audio_tokens !== null && { audio: completionTokensDetails?.audio_tokens },
112
+ ...completionTokensDetails?.reasoning_tokens !== null && { reasoning: completionTokensDetails?.reasoning_tokens }
113
+ };
114
+ const generations = [];
115
+ for (const part of data?.choices ?? []) {
116
+ const text = part.message?.content ?? "";
117
+ const generation = {
118
+ text,
119
+ message: this._convertCompletionsMessageToBaseMessage(part.message ?? { role: "assistant" }, data)
120
+ };
121
+ generation.generationInfo = {
122
+ ...part.finish_reason ? { finish_reason: part.finish_reason } : {},
123
+ ...part.logprobs ? { logprobs: part.logprobs } : {}
124
+ };
125
+ if ((0, __langchain_core_messages.isAIMessage)(generation.message)) generation.message.usage_metadata = usageMetadata;
126
+ generation.message = new __langchain_core_messages.AIMessage(Object.fromEntries(Object.entries(generation.message).filter(([key]) => !key.startsWith("lc_"))));
127
+ generations.push(generation);
128
+ }
129
+ return {
130
+ generations,
131
+ llmOutput: { tokenUsage: {
132
+ promptTokens: usageMetadata.input_tokens,
133
+ completionTokens: usageMetadata.output_tokens,
134
+ totalTokens: usageMetadata.total_tokens
135
+ } }
136
+ };
137
+ }
138
+ }
139
+ async *_streamResponseChunks(messages, options, runManager) {
140
+ const messagesMapped = require_message_inputs._convertMessagesToOpenAIParams(messages, this.model);
141
+ const params = {
142
+ ...this.invocationParams(options, { streaming: true }),
143
+ messages: messagesMapped,
144
+ stream: true
145
+ };
146
+ let defaultRole;
147
+ const streamIterable = await this.completionWithRetry(params, options);
148
+ let usage;
149
+ for await (const data of streamIterable) {
150
+ const choice = data?.choices?.[0];
151
+ if (data.usage) usage = data.usage;
152
+ if (!choice) continue;
153
+ const { delta } = choice;
154
+ if (!delta) continue;
155
+ const chunk = this._convertCompletionsDeltaToBaseMessageChunk(delta, data, defaultRole);
156
+ defaultRole = delta.role ?? defaultRole;
157
+ const newTokenIndices = {
158
+ prompt: options.promptIndex ?? 0,
159
+ completion: choice.index ?? 0
160
+ };
161
+ if (typeof chunk.content !== "string") {
162
+ console.log("[WARNING]: Received non-string content from OpenAI. This is currently not supported.");
163
+ continue;
164
+ }
165
+ const generationInfo = { ...newTokenIndices };
166
+ if (choice.finish_reason != null) {
167
+ generationInfo.finish_reason = choice.finish_reason;
168
+ generationInfo.system_fingerprint = data.system_fingerprint;
169
+ generationInfo.model_name = data.model;
170
+ generationInfo.service_tier = data.service_tier;
171
+ }
172
+ if (this.logprobs) generationInfo.logprobs = choice.logprobs;
173
+ const generationChunk = new __langchain_core_outputs.ChatGenerationChunk({
174
+ message: chunk,
175
+ text: chunk.content,
176
+ generationInfo
177
+ });
178
+ yield generationChunk;
179
+ await runManager?.handleLLMNewToken(generationChunk.text ?? "", newTokenIndices, void 0, void 0, void 0, { chunk: generationChunk });
180
+ }
181
+ if (usage) {
182
+ const inputTokenDetails = {
183
+ ...usage.prompt_tokens_details?.audio_tokens !== null && { audio: usage.prompt_tokens_details?.audio_tokens },
184
+ ...usage.prompt_tokens_details?.cached_tokens !== null && { cache_read: usage.prompt_tokens_details?.cached_tokens }
185
+ };
186
+ const outputTokenDetails = {
187
+ ...usage.completion_tokens_details?.audio_tokens !== null && { audio: usage.completion_tokens_details?.audio_tokens },
188
+ ...usage.completion_tokens_details?.reasoning_tokens !== null && { reasoning: usage.completion_tokens_details?.reasoning_tokens }
189
+ };
190
+ const generationChunk = new __langchain_core_outputs.ChatGenerationChunk({
191
+ message: new __langchain_core_messages.AIMessageChunk({
192
+ content: "",
193
+ response_metadata: { usage: { ...usage } },
194
+ usage_metadata: {
195
+ input_tokens: usage.prompt_tokens,
196
+ output_tokens: usage.completion_tokens,
197
+ total_tokens: usage.total_tokens,
198
+ ...Object.keys(inputTokenDetails).length > 0 && { input_token_details: inputTokenDetails },
199
+ ...Object.keys(outputTokenDetails).length > 0 && { output_token_details: outputTokenDetails }
200
+ }
201
+ }),
202
+ text: ""
203
+ });
204
+ yield generationChunk;
205
+ }
206
+ if (options.signal?.aborted) throw new Error("AbortError");
207
+ }
208
+ async completionWithRetry(request, requestOptions) {
209
+ const clientOptions = this._getClientOptions(requestOptions);
210
+ const isParseableFormat = request.response_format && request.response_format.type === "json_schema";
211
+ return this.caller.call(async () => {
212
+ try {
213
+ if (isParseableFormat && !request.stream) return await this.client.chat.completions.parse(request, clientOptions);
214
+ else return await this.client.chat.completions.create(request, clientOptions);
215
+ } catch (e) {
216
+ const error = require_client.wrapOpenAIClientError(e);
217
+ throw error;
218
+ }
219
+ });
220
+ }
221
+ /** @internal */
222
+ _convertCompletionsMessageToBaseMessage(message, rawResponse) {
223
+ const rawToolCalls = message.tool_calls;
224
+ switch (message.role) {
225
+ case "assistant": {
226
+ const toolCalls = [];
227
+ const invalidToolCalls = [];
228
+ for (const rawToolCall of rawToolCalls ?? []) try {
229
+ toolCalls.push((0, __langchain_core_output_parsers_openai_tools.parseToolCall)(rawToolCall, { returnId: true }));
230
+ } catch (e) {
231
+ invalidToolCalls.push((0, __langchain_core_output_parsers_openai_tools.makeInvalidToolCall)(rawToolCall, e.message));
232
+ }
233
+ const additional_kwargs = {
234
+ function_call: message.function_call,
235
+ tool_calls: rawToolCalls
236
+ };
237
+ if (this.__includeRawResponse !== void 0) additional_kwargs.__raw_response = rawResponse;
238
+ const response_metadata = {
239
+ model_provider: "openai",
240
+ model_name: rawResponse.model,
241
+ ...rawResponse.system_fingerprint ? {
242
+ usage: { ...rawResponse.usage },
243
+ system_fingerprint: rawResponse.system_fingerprint
244
+ } : {}
245
+ };
246
+ if (message.audio) additional_kwargs.audio = message.audio;
247
+ const content = require_output.handleMultiModalOutput(message.content || "", rawResponse.choices?.[0]?.message);
248
+ return new __langchain_core_messages.AIMessage({
249
+ content,
250
+ tool_calls: toolCalls,
251
+ invalid_tool_calls: invalidToolCalls,
252
+ additional_kwargs,
253
+ response_metadata,
254
+ id: rawResponse.id
255
+ });
256
+ }
257
+ default: return new __langchain_core_messages.ChatMessage(message.content || "", message.role ?? "unknown");
258
+ }
259
+ }
260
+ /** @internal */
261
+ _convertCompletionsDeltaToBaseMessageChunk(delta, rawResponse, defaultRole) {
262
+ const role = delta.role ?? defaultRole;
263
+ const content = delta.content ?? "";
264
+ let additional_kwargs;
265
+ if (delta.function_call) additional_kwargs = { function_call: delta.function_call };
266
+ else if (delta.tool_calls) additional_kwargs = { tool_calls: delta.tool_calls };
267
+ else additional_kwargs = {};
268
+ if (this.__includeRawResponse) additional_kwargs.__raw_response = rawResponse;
269
+ if (delta.audio) additional_kwargs.audio = {
270
+ ...delta.audio,
271
+ index: rawResponse.choices[0].index
272
+ };
273
+ const response_metadata = {
274
+ model_provider: "openai",
275
+ usage: { ...rawResponse.usage }
276
+ };
277
+ if (role === "user") return new __langchain_core_messages.HumanMessageChunk({
278
+ content,
279
+ response_metadata
280
+ });
281
+ else if (role === "assistant") {
282
+ const toolCallChunks = [];
283
+ if (Array.isArray(delta.tool_calls)) for (const rawToolCall of delta.tool_calls) toolCallChunks.push({
284
+ name: rawToolCall.function?.name,
285
+ args: rawToolCall.function?.arguments,
286
+ id: rawToolCall.id,
287
+ index: rawToolCall.index,
288
+ type: "tool_call_chunk"
289
+ });
290
+ return new __langchain_core_messages.AIMessageChunk({
291
+ content,
292
+ tool_call_chunks: toolCallChunks,
293
+ additional_kwargs,
294
+ id: rawResponse.id,
295
+ response_metadata
296
+ });
297
+ } else if (role === "system") return new __langchain_core_messages.SystemMessageChunk({
298
+ content,
299
+ response_metadata
300
+ });
301
+ else if (role === "developer") return new __langchain_core_messages.SystemMessageChunk({
302
+ content,
303
+ response_metadata,
304
+ additional_kwargs: { __openai_role__: "developer" }
305
+ });
306
+ else if (role === "function") return new __langchain_core_messages.FunctionMessageChunk({
307
+ content,
308
+ additional_kwargs,
309
+ name: delta.name,
310
+ response_metadata
311
+ });
312
+ else if (role === "tool") return new __langchain_core_messages.ToolMessageChunk({
313
+ content,
314
+ additional_kwargs,
315
+ tool_call_id: delta.tool_call_id,
316
+ response_metadata
317
+ });
318
+ else return new __langchain_core_messages.ChatMessageChunk({
319
+ content,
320
+ role,
321
+ response_metadata
322
+ });
323
+ }
324
+ };
325
+
326
+ //#endregion
327
+ exports.ChatOpenAICompletions = ChatOpenAICompletions;
328
+ //# sourceMappingURL=completions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.cjs","names":["BaseChatOpenAI","options?: this[\"ParsedCallOptions\"]","extra?: { streaming?: boolean }","strict: boolean | undefined","params: Partial<ChatCompletionsInvocationParams>","formatToOpenAIToolChoice","isReasoningModel","messages: BaseMessage[]","options: this[\"ParsedCallOptions\"]","runManager?: CallbackManagerForLLMRun","messagesMapped: OpenAIClient.Chat.Completions.ChatCompletionMessageParam[]","_convertMessagesToOpenAIParams","finalChunks: Record<number, ChatGenerationChunk>","generations: ChatGeneration[]","generation: ChatGeneration","AIMessage","defaultRole: OpenAIClient.Chat.ChatCompletionRole | undefined","usage: OpenAIClient.Completions.CompletionUsage | undefined","generationInfo: Record<string, any>","ChatGenerationChunk","AIMessageChunk","request: OpenAIClient.Chat.ChatCompletionCreateParams","requestOptions?: OpenAIClient.RequestOptions","wrapOpenAIClientError","message: OpenAIClient.Chat.Completions.ChatCompletionMessage","rawResponse: OpenAIClient.Chat.Completions.ChatCompletion","rawToolCalls: OpenAIToolCall[] | undefined","e: any","additional_kwargs: Record<string, unknown>","response_metadata: Record<string, unknown> | undefined","handleMultiModalOutput","ChatMessage","delta: Record<string, any>","rawResponse: OpenAIClient.Chat.Completions.ChatCompletionChunk","defaultRole?: OpenAIClient.Chat.ChatCompletionRole","HumanMessageChunk","toolCallChunks: ToolCallChunk[]","SystemMessageChunk","FunctionMessageChunk","ToolMessageChunk","ChatMessageChunk"],"sources":["../../src/chat_models/completions.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport {\n AIMessage,\n AIMessageChunk,\n type BaseMessage,\n ChatMessage,\n ChatMessageChunk,\n FunctionMessageChunk,\n HumanMessageChunk,\n SystemMessageChunk,\n ToolMessageChunk,\n OpenAIToolCall,\n isAIMessage,\n type UsageMetadata,\n type BaseMessageFields,\n} from \"@langchain/core/messages\";\nimport {\n ChatGenerationChunk,\n type ChatGeneration,\n type ChatResult,\n} from \"@langchain/core/outputs\";\nimport { NewTokenIndices } from \"@langchain/core/callbacks/base\";\nimport {\n makeInvalidToolCall,\n parseToolCall,\n} from \"@langchain/core/output_parsers/openai_tools\";\nimport type { ToolCallChunk } from \"@langchain/core/messages/tool\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\nimport {\n OpenAIToolChoice,\n formatToOpenAIToolChoice,\n _convertToOpenAITool,\n} from \"../utils/tools.js\";\nimport {\n handleMultiModalOutput,\n _convertOpenAIResponsesUsageToLangChainUsage,\n} from \"../utils/output.js\";\nimport { _convertMessagesToOpenAIParams } from \"../utils/message_inputs.js\";\nimport { _convertToResponsesMessageFromV1 } from \"../utils/standard.js\";\nimport { isReasoningModel } from \"../utils/misc.js\";\nimport { BaseChatOpenAICallOptions } from \"./base.js\";\nimport { BaseChatOpenAI } from \"./base.js\";\n\nexport interface ChatOpenAICompletionsCallOptions\n extends BaseChatOpenAICallOptions {}\n\ntype ChatCompletionsInvocationParams = Omit<\n OpenAIClient.Chat.Completions.ChatCompletionCreateParams,\n \"messages\"\n>;\n\n/**\n * OpenAI Completions API implementation.\n * @internal\n */\nexport class ChatOpenAICompletions<\n CallOptions extends ChatOpenAICompletionsCallOptions = ChatOpenAICompletionsCallOptions\n> extends BaseChatOpenAI<CallOptions> {\n /** @internal */\n override invocationParams(\n options?: this[\"ParsedCallOptions\"],\n extra?: { streaming?: boolean }\n ): ChatCompletionsInvocationParams {\n let strict: boolean | undefined;\n if (options?.strict !== undefined) {\n strict = options.strict;\n } else if (this.supportsStrictToolCalling !== undefined) {\n strict = this.supportsStrictToolCalling;\n }\n\n let streamOptionsConfig = {};\n if (options?.stream_options !== undefined) {\n streamOptionsConfig = { stream_options: options.stream_options };\n } else if (this.streamUsage && (this.streaming || extra?.streaming)) {\n streamOptionsConfig = { stream_options: { include_usage: true } };\n }\n\n const params: Partial<ChatCompletionsInvocationParams> = {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n frequency_penalty: this.frequencyPenalty,\n presence_penalty: this.presencePenalty,\n logprobs: this.logprobs,\n top_logprobs: this.topLogprobs,\n n: this.n,\n logit_bias: this.logitBias,\n stop: options?.stop ?? this.stopSequences,\n user: this.user,\n // if include_usage is set or streamUsage then stream must be set to true.\n stream: this.streaming,\n functions: options?.functions,\n function_call: options?.function_call,\n tools: options?.tools?.length\n ? options.tools.map((tool) =>\n this._convertChatOpenAIToolToCompletionsTool(tool, { strict })\n )\n : undefined,\n tool_choice: formatToOpenAIToolChoice(\n options?.tool_choice as OpenAIToolChoice\n ),\n response_format: this._getResponseFormat(options?.response_format),\n seed: options?.seed,\n ...streamOptionsConfig,\n parallel_tool_calls: options?.parallel_tool_calls,\n ...(this.audio || options?.audio\n ? { audio: this.audio || options?.audio }\n : {}),\n ...(this.modalities || options?.modalities\n ? { modalities: this.modalities || options?.modalities }\n : {}),\n ...this.modelKwargs,\n prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,\n verbosity: options?.verbosity ?? this.verbosity,\n };\n if (options?.prediction !== undefined) {\n params.prediction = options.prediction;\n }\n if (this.service_tier !== undefined) {\n params.service_tier = this.service_tier;\n }\n if (options?.service_tier !== undefined) {\n params.service_tier = options.service_tier;\n }\n const reasoning = this._getReasoningParams(options);\n if (reasoning !== undefined && reasoning.effort !== undefined) {\n params.reasoning_effort = reasoning.effort;\n }\n if (isReasoningModel(params.model)) {\n params.max_completion_tokens =\n this.maxTokens === -1 ? undefined : this.maxTokens;\n } else {\n params.max_tokens = this.maxTokens === -1 ? undefined : this.maxTokens;\n }\n\n return params as ChatCompletionsInvocationParams;\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n const usageMetadata = {} as UsageMetadata;\n const params = this.invocationParams(options);\n const messagesMapped: OpenAIClient.Chat.Completions.ChatCompletionMessageParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n if (params.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n const finalChunks: Record<number, ChatGenerationChunk> = {};\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n const index =\n (chunk.generationInfo as NewTokenIndices)?.completion ?? 0;\n if (finalChunks[index] === undefined) {\n finalChunks[index] = chunk;\n } else {\n finalChunks[index] = finalChunks[index].concat(chunk);\n }\n }\n const generations = Object.entries(finalChunks)\n .sort(([aKey], [bKey]) => parseInt(aKey, 10) - parseInt(bKey, 10))\n .map(([_, value]) => value);\n\n const { functions, function_call } = this.invocationParams(options);\n\n // OpenAI does not support token usage report under stream mode,\n // fallback to estimation.\n\n const promptTokenUsage = await this._getEstimatedTokenCountFromPrompt(\n messages,\n functions,\n function_call\n );\n const completionTokenUsage = await this._getNumTokensFromGenerations(\n generations\n );\n\n usageMetadata.input_tokens = promptTokenUsage;\n usageMetadata.output_tokens = completionTokenUsage;\n usageMetadata.total_tokens = promptTokenUsage + completionTokenUsage;\n return {\n generations,\n llmOutput: {\n estimatedTokenUsage: {\n promptTokens: usageMetadata.input_tokens,\n completionTokens: usageMetadata.output_tokens,\n totalTokens: usageMetadata.total_tokens,\n },\n },\n };\n } else {\n const data = await this.completionWithRetry(\n {\n ...params,\n stream: false,\n messages: messagesMapped,\n },\n {\n signal: options?.signal,\n ...options?.options,\n }\n );\n\n const {\n completion_tokens: completionTokens,\n prompt_tokens: promptTokens,\n total_tokens: totalTokens,\n prompt_tokens_details: promptTokensDetails,\n completion_tokens_details: completionTokensDetails,\n } = data?.usage ?? {};\n\n if (completionTokens) {\n usageMetadata.output_tokens =\n (usageMetadata.output_tokens ?? 0) + completionTokens;\n }\n\n if (promptTokens) {\n usageMetadata.input_tokens =\n (usageMetadata.input_tokens ?? 0) + promptTokens;\n }\n\n if (totalTokens) {\n usageMetadata.total_tokens =\n (usageMetadata.total_tokens ?? 0) + totalTokens;\n }\n\n if (\n promptTokensDetails?.audio_tokens !== null ||\n promptTokensDetails?.cached_tokens !== null\n ) {\n usageMetadata.input_token_details = {\n ...(promptTokensDetails?.audio_tokens !== null && {\n audio: promptTokensDetails?.audio_tokens,\n }),\n ...(promptTokensDetails?.cached_tokens !== null && {\n cache_read: promptTokensDetails?.cached_tokens,\n }),\n };\n }\n\n if (\n completionTokensDetails?.audio_tokens !== null ||\n completionTokensDetails?.reasoning_tokens !== null\n ) {\n usageMetadata.output_token_details = {\n ...(completionTokensDetails?.audio_tokens !== null && {\n audio: completionTokensDetails?.audio_tokens,\n }),\n ...(completionTokensDetails?.reasoning_tokens !== null && {\n reasoning: completionTokensDetails?.reasoning_tokens,\n }),\n };\n }\n\n const generations: ChatGeneration[] = [];\n for (const part of data?.choices ?? []) {\n const text = part.message?.content ?? \"\";\n const generation: ChatGeneration = {\n text,\n message: this._convertCompletionsMessageToBaseMessage(\n part.message ?? { role: \"assistant\" },\n data\n ),\n };\n generation.generationInfo = {\n ...(part.finish_reason ? { finish_reason: part.finish_reason } : {}),\n ...(part.logprobs ? { logprobs: part.logprobs } : {}),\n };\n if (isAIMessage(generation.message)) {\n generation.message.usage_metadata = usageMetadata;\n }\n // Fields are not serialized unless passed to the constructor\n // Doing this ensures all fields on the message are serialized\n generation.message = new AIMessage(\n Object.fromEntries(\n Object.entries(generation.message).filter(\n ([key]) => !key.startsWith(\"lc_\")\n )\n ) as BaseMessageFields\n );\n generations.push(generation);\n }\n return {\n generations,\n llmOutput: {\n tokenUsage: {\n promptTokens: usageMetadata.input_tokens,\n completionTokens: usageMetadata.output_tokens,\n totalTokens: usageMetadata.total_tokens,\n },\n },\n };\n }\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const messagesMapped: OpenAIClient.Chat.Completions.ChatCompletionMessageParam[] =\n _convertMessagesToOpenAIParams(messages, this.model);\n\n const params = {\n ...this.invocationParams(options, {\n streaming: true,\n }),\n messages: messagesMapped,\n stream: true as const,\n };\n let defaultRole: OpenAIClient.Chat.ChatCompletionRole | undefined;\n\n const streamIterable = await this.completionWithRetry(params, options);\n let usage: OpenAIClient.Completions.CompletionUsage | undefined;\n for await (const data of streamIterable) {\n const choice = data?.choices?.[0];\n if (data.usage) {\n usage = data.usage;\n }\n if (!choice) {\n continue;\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n const chunk = this._convertCompletionsDeltaToBaseMessageChunk(\n delta,\n data,\n defaultRole\n );\n defaultRole = delta.role ?? defaultRole;\n const newTokenIndices = {\n prompt: options.promptIndex ?? 0,\n completion: choice.index ?? 0,\n };\n if (typeof chunk.content !== \"string\") {\n console.log(\n \"[WARNING]: Received non-string content from OpenAI. This is currently not supported.\"\n );\n continue;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const generationInfo: Record<string, any> = { ...newTokenIndices };\n if (choice.finish_reason != null) {\n generationInfo.finish_reason = choice.finish_reason;\n // Only include system fingerprint in the last chunk for now\n // to avoid concatenation issues\n generationInfo.system_fingerprint = data.system_fingerprint;\n generationInfo.model_name = data.model;\n generationInfo.service_tier = data.service_tier;\n }\n if (this.logprobs) {\n generationInfo.logprobs = choice.logprobs;\n }\n const generationChunk = new ChatGenerationChunk({\n message: chunk,\n text: chunk.content,\n generationInfo,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n generationChunk.text ?? \"\",\n newTokenIndices,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n if (usage) {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens !== null && {\n audio: usage.prompt_tokens_details?.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens !== null && {\n cache_read: usage.prompt_tokens_details?.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens !== null && {\n audio: usage.completion_tokens_details?.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens !== null && {\n reasoning: usage.completion_tokens_details?.reasoning_tokens,\n }),\n };\n const generationChunk = new ChatGenerationChunk({\n message: new AIMessageChunk({\n content: \"\",\n response_metadata: {\n usage: { ...usage },\n },\n usage_metadata: {\n input_tokens: usage.prompt_tokens,\n output_tokens: usage.completion_tokens,\n total_tokens: usage.total_tokens,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n },\n }),\n text: \"\",\n });\n yield generationChunk;\n }\n if (options.signal?.aborted) {\n throw new Error(\"AbortError\");\n }\n }\n\n async completionWithRetry(\n request: OpenAIClient.Chat.ChatCompletionCreateParamsStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<AsyncIterable<OpenAIClient.Chat.Completions.ChatCompletionChunk>>;\n\n async completionWithRetry(\n request: OpenAIClient.Chat.ChatCompletionCreateParamsNonStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<OpenAIClient.Chat.Completions.ChatCompletion>;\n\n async completionWithRetry(\n request: OpenAIClient.Chat.ChatCompletionCreateParams,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<\n | AsyncIterable<OpenAIClient.Chat.Completions.ChatCompletionChunk>\n | OpenAIClient.Chat.Completions.ChatCompletion\n > {\n const clientOptions = this._getClientOptions(requestOptions);\n const isParseableFormat =\n request.response_format && request.response_format.type === \"json_schema\";\n return this.caller.call(async () => {\n try {\n if (isParseableFormat && !request.stream) {\n return await this.client.chat.completions.parse(\n request,\n clientOptions\n );\n } else {\n return await this.client.chat.completions.create(\n request,\n clientOptions\n );\n }\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n });\n }\n\n /** @internal */\n protected _convertCompletionsMessageToBaseMessage(\n message: OpenAIClient.Chat.Completions.ChatCompletionMessage,\n rawResponse: OpenAIClient.Chat.Completions.ChatCompletion\n ): BaseMessage {\n const rawToolCalls: OpenAIToolCall[] | undefined = message.tool_calls as\n | OpenAIToolCall[]\n | undefined;\n switch (message.role) {\n case \"assistant\": {\n const toolCalls = [];\n const invalidToolCalls = [];\n for (const rawToolCall of rawToolCalls ?? []) {\n try {\n toolCalls.push(parseToolCall(rawToolCall, { returnId: true }));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n invalidToolCalls.push(makeInvalidToolCall(rawToolCall, e.message));\n }\n }\n const additional_kwargs: Record<string, unknown> = {\n function_call: message.function_call,\n tool_calls: rawToolCalls,\n };\n if (this.__includeRawResponse !== undefined) {\n additional_kwargs.__raw_response = rawResponse;\n }\n const response_metadata: Record<string, unknown> | undefined = {\n model_provider: \"openai\",\n model_name: rawResponse.model,\n ...(rawResponse.system_fingerprint\n ? {\n usage: { ...rawResponse.usage },\n system_fingerprint: rawResponse.system_fingerprint,\n }\n : {}),\n };\n\n if (message.audio) {\n additional_kwargs.audio = message.audio;\n }\n\n const content = handleMultiModalOutput(\n message.content || \"\",\n rawResponse.choices?.[0]?.message\n );\n return new AIMessage({\n content,\n tool_calls: toolCalls,\n invalid_tool_calls: invalidToolCalls,\n additional_kwargs,\n response_metadata,\n id: rawResponse.id,\n });\n }\n default:\n return new ChatMessage(\n message.content || \"\",\n message.role ?? \"unknown\"\n );\n }\n }\n\n /** @internal */\n protected _convertCompletionsDeltaToBaseMessageChunk(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delta: Record<string, any>,\n rawResponse: OpenAIClient.Chat.Completions.ChatCompletionChunk,\n defaultRole?: OpenAIClient.Chat.ChatCompletionRole\n ) {\n const role = delta.role ?? defaultRole;\n const content = delta.content ?? \"\";\n let additional_kwargs: Record<string, unknown>;\n if (delta.function_call) {\n additional_kwargs = {\n function_call: delta.function_call,\n };\n } else if (delta.tool_calls) {\n additional_kwargs = {\n tool_calls: delta.tool_calls,\n };\n } else {\n additional_kwargs = {};\n }\n if (this.__includeRawResponse) {\n additional_kwargs.__raw_response = rawResponse;\n }\n\n if (delta.audio) {\n additional_kwargs.audio = {\n ...delta.audio,\n index: rawResponse.choices[0].index,\n };\n }\n\n const response_metadata = {\n model_provider: \"openai\",\n usage: { ...rawResponse.usage },\n };\n if (role === \"user\") {\n return new HumanMessageChunk({ content, response_metadata });\n } else if (role === \"assistant\") {\n const toolCallChunks: ToolCallChunk[] = [];\n if (Array.isArray(delta.tool_calls)) {\n for (const rawToolCall of delta.tool_calls) {\n toolCallChunks.push({\n name: rawToolCall.function?.name,\n args: rawToolCall.function?.arguments,\n id: rawToolCall.id,\n index: rawToolCall.index,\n type: \"tool_call_chunk\",\n });\n }\n }\n return new AIMessageChunk({\n content,\n tool_call_chunks: toolCallChunks,\n additional_kwargs,\n id: rawResponse.id,\n response_metadata,\n });\n } else if (role === \"system\") {\n return new SystemMessageChunk({ content, response_metadata });\n } else if (role === \"developer\") {\n return new SystemMessageChunk({\n content,\n response_metadata,\n additional_kwargs: {\n __openai_role__: \"developer\",\n },\n });\n } else if (role === \"function\") {\n return new FunctionMessageChunk({\n content,\n additional_kwargs,\n name: delta.name,\n response_metadata,\n });\n } else if (role === \"tool\") {\n return new ToolMessageChunk({\n content,\n additional_kwargs,\n tool_call_id: delta.tool_call_id,\n response_metadata,\n });\n } else {\n return new ChatMessageChunk({ content, role, response_metadata });\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { BaseChatOpenAI, BaseChatOpenAICallOptions } from "./base.cjs";
2
+ import { OpenAI as OpenAI$1 } from "openai";
3
+ import * as _langchain_core_messages1 from "@langchain/core/messages";
4
+ import { AIMessageChunk, BaseMessage, ChatMessageChunk, FunctionMessageChunk, HumanMessageChunk, SystemMessageChunk, ToolMessageChunk } from "@langchain/core/messages";
5
+ import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
6
+ import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
7
+
8
+ //#region src/chat_models/completions.d.ts
9
+ interface ChatOpenAICompletionsCallOptions extends BaseChatOpenAICallOptions {}
10
+ type ChatCompletionsInvocationParams = Omit<OpenAI$1.Chat.Completions.ChatCompletionCreateParams, "messages">;
11
+ /**
12
+ * OpenAI Completions API implementation.
13
+ * @internal
14
+ */
15
+ declare class ChatOpenAICompletions<CallOptions extends ChatOpenAICompletionsCallOptions = ChatOpenAICompletionsCallOptions> extends BaseChatOpenAI<CallOptions> {
16
+ /** @internal */
17
+ invocationParams(options?: this["ParsedCallOptions"], extra?: {
18
+ streaming?: boolean;
19
+ }): ChatCompletionsInvocationParams;
20
+ _generate(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
21
+ _streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
22
+ completionWithRetry(request: OpenAI$1.Chat.ChatCompletionCreateParamsStreaming, requestOptions?: OpenAI$1.RequestOptions): Promise<AsyncIterable<OpenAI$1.Chat.Completions.ChatCompletionChunk>>;
23
+ completionWithRetry(request: OpenAI$1.Chat.ChatCompletionCreateParamsNonStreaming, requestOptions?: OpenAI$1.RequestOptions): Promise<OpenAI$1.Chat.Completions.ChatCompletion>;
24
+ /** @internal */
25
+ protected _convertCompletionsMessageToBaseMessage(message: OpenAI$1.Chat.Completions.ChatCompletionMessage, rawResponse: OpenAI$1.Chat.Completions.ChatCompletion): BaseMessage;
26
+ /** @internal */
27
+ protected _convertCompletionsDeltaToBaseMessageChunk(
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ delta: Record<string, any>, rawResponse: OpenAI$1.Chat.Completions.ChatCompletionChunk, defaultRole?: OpenAI$1.Chat.ChatCompletionRole): AIMessageChunk<_langchain_core_messages1.MessageStructure> | ChatMessageChunk<_langchain_core_messages1.MessageStructure> | FunctionMessageChunk<_langchain_core_messages1.MessageStructure> | HumanMessageChunk<_langchain_core_messages1.MessageStructure> | SystemMessageChunk<_langchain_core_messages1.MessageStructure> | ToolMessageChunk<_langchain_core_messages1.MessageStructure>;
30
+ }
31
+ //#endregion
32
+ export { ChatOpenAICompletions, ChatOpenAICompletionsCallOptions };
33
+ //# sourceMappingURL=completions.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.cts","names":["OpenAI","OpenAIClient","CallbackManagerForLLMRun","AIMessageChunk","BaseMessage","ChatMessageChunk","FunctionMessageChunk","HumanMessageChunk","SystemMessageChunk","ToolMessageChunk","ChatGenerationChunk","ChatResult","BaseChatOpenAICallOptions","BaseChatOpenAI","ChatOpenAICompletionsCallOptions","ChatCompletionsInvocationParams","Chat","Completions","ChatCompletionCreateParams","Omit","ChatOpenAICompletions","CallOptions","Promise","AsyncGenerator","ChatCompletionCreateParamsStreaming","RequestOptions","ChatCompletionChunk","AsyncIterable","ChatCompletionCreateParamsNonStreaming","ChatCompletion","ChatCompletionMessage","Record","ChatCompletionRole","_langchain_core_messages1","MessageStructure"],"sources":["../../src/chat_models/completions.d.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { AIMessageChunk, type BaseMessage, ChatMessageChunk, FunctionMessageChunk, HumanMessageChunk, SystemMessageChunk, ToolMessageChunk } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { BaseChatOpenAICallOptions } from \"./base.js\";\nimport { BaseChatOpenAI } from \"./base.js\";\nexport interface ChatOpenAICompletionsCallOptions extends BaseChatOpenAICallOptions {\n}\ntype ChatCompletionsInvocationParams = Omit<OpenAIClient.Chat.Completions.ChatCompletionCreateParams, \"messages\">;\n/**\n * OpenAI Completions API implementation.\n * @internal\n */\nexport declare class ChatOpenAICompletions<CallOptions extends ChatOpenAICompletionsCallOptions = ChatOpenAICompletionsCallOptions> extends BaseChatOpenAI<CallOptions> {\n /** @internal */\n invocationParams(options?: this[\"ParsedCallOptions\"], extra?: {\n streaming?: boolean;\n }): ChatCompletionsInvocationParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;\n _streamResponseChunks(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n completionWithRetry(request: OpenAIClient.Chat.ChatCompletionCreateParamsStreaming, requestOptions?: OpenAIClient.RequestOptions): Promise<AsyncIterable<OpenAIClient.Chat.Completions.ChatCompletionChunk>>;\n completionWithRetry(request: OpenAIClient.Chat.ChatCompletionCreateParamsNonStreaming, requestOptions?: OpenAIClient.RequestOptions): Promise<OpenAIClient.Chat.Completions.ChatCompletion>;\n /** @internal */\n protected _convertCompletionsMessageToBaseMessage(message: OpenAIClient.Chat.Completions.ChatCompletionMessage, rawResponse: OpenAIClient.Chat.Completions.ChatCompletion): BaseMessage;\n /** @internal */\n protected _convertCompletionsDeltaToBaseMessageChunk(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delta: Record<string, any>, rawResponse: OpenAIClient.Chat.Completions.ChatCompletionChunk, defaultRole?: OpenAIClient.Chat.ChatCompletionRole): AIMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | ChatMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | FunctionMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | HumanMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | SystemMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | ToolMessageChunk<import(\"@langchain/core/messages\").MessageStructure>;\n}\nexport {};\n"],"mappings":";;;;;;;;UAMiBc,gCAAAA,SAAyCF;AAA1D,KAEKG,+BAAAA,GAAkCI,IAFU,CAELlB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYC,0BAFS,EAAA,UAAA,CAAA;AAClF;;;;AAC0C,cAKtBE,qBALsB,CAAA,oBAKoBN,gCALpB,GAKuDA,gCALvD,CAAA,SAKiGD,cALjG,CAKgHQ,WALhH,CAAA,CAAA;EAKtBD;EAAqB,gBAAA,CAAA,OAAA,CAAA,EAAA,IAAA,CAAA,mBAAA,CAAA,EAAA,KAAqD,CAArD,EAAA;IAAqBN,SAAAA,CAAAA,EAAAA,OAAAA;EAAgC,CAAA,CAAA,EAIvFC,+BAJ0FD;EAAgC,SAAyBO,CAAAA,QAAAA,EAKnIjB,WALmIiB,EAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,mBAAAA,CAAAA,EAAAA,UAAAA,CAAAA,EAKnEnB,wBALmEmB,CAAAA,EAKxCC,OALwCD,CAKhCV,UALgCU,CAAAA;EAAW,qBAI9JN,CAAAA,QAAAA,EAE4BX,WAF5BW,EAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,mBAAAA,CAAAA,EAAAA,UAAAA,CAAAA,EAE4Fb,wBAF5Fa,CAAAA,EAEuHQ,cAFvHR,CAEsIL,mBAFtIK,CAAAA;EAA+B,mBACfX,CAAAA,OAAAA,EAESH,QAAAA,CAAae,IAAAA,CAAKQ,mCAF3BpB,EAAAA,cAAAA,CAAAA,EAEiFH,QAAAA,CAAawB,cAF9FrB,CAAAA,EAE+GkB,OAF/GlB,CAEuHuB,aAFvHvB,CAEqIH,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYS,mBAFnKtB,CAAAA,CAAAA;EAAW,mBAAqDF,CAAAA,OAAAA,EAGvDD,QAAAA,CAAae,IAAAA,CAAKY,sCAHqC1B,EAAAA,cAAAA,CAAAA,EAGoBD,QAAAA,CAAawB,cAHjCvB,CAAAA,EAGkDoB,OAHlDpB,CAG0DD,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYY,cAHxF3B,CAAAA;EAAwB;EAAqB,UAAlBoB,uCAAAA,CAAAA,OAAAA,EAKpDrB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYa,qBALsBR,EAAAA,WAAAA,EAKcrB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYY,cAL5CP,CAAAA,EAK6DlB,WAL7DkB;EAAO;EAC3E,UAAqDpB,0CAAAA;EAAwB;EAAqC,KAAlCqB,EAQpHQ,MARoHR,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,EAAAA,WAAAA,EAQlFtB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYS,mBARoDH,EAAAA,WAAAA,CAAAA,EAQjBtB,QAAAA,CAAae,IAAAA,CAAKgB,kBARDT,CAAAA,EAQsBpB,cARtBoB,CAQmBU,yBAAAA,CAAqDC,gBAAAA,CARxEX,GAQ4FlB,gBAR5FkB,CAQoCU,yBAAAA,CAA4GC,gBAAAA,CARhJX,GAQoKjB,oBARpKiB,CAQ4GU,yBAAAA,CAAgHC,gBAAAA,CAR5NX,GAQgPhB,iBARhPgB,CAQwLU,yBAAAA,CAA6GC,gBAAAA,CARrSX,GAQyTf,kBARzTe,CAQiQU,yBAAAA,CAA8GC,gBAAAA,CAR/WX,GAQmYd,gBARnYc,CAQ2UU,yBAAAA,CAA4GC,gBAAAA,CARvbX"}
@@ -0,0 +1,33 @@
1
+ import { BaseChatOpenAI, BaseChatOpenAICallOptions } from "./base.js";
2
+ import { OpenAI as OpenAI$1 } from "openai";
3
+ import * as _langchain_core_messages1 from "@langchain/core/messages";
4
+ import { AIMessageChunk, BaseMessage, ChatMessageChunk, FunctionMessageChunk, HumanMessageChunk, SystemMessageChunk, ToolMessageChunk } from "@langchain/core/messages";
5
+ import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
6
+ import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
7
+
8
+ //#region src/chat_models/completions.d.ts
9
+ interface ChatOpenAICompletionsCallOptions extends BaseChatOpenAICallOptions {}
10
+ type ChatCompletionsInvocationParams = Omit<OpenAI$1.Chat.Completions.ChatCompletionCreateParams, "messages">;
11
+ /**
12
+ * OpenAI Completions API implementation.
13
+ * @internal
14
+ */
15
+ declare class ChatOpenAICompletions<CallOptions extends ChatOpenAICompletionsCallOptions = ChatOpenAICompletionsCallOptions> extends BaseChatOpenAI<CallOptions> {
16
+ /** @internal */
17
+ invocationParams(options?: this["ParsedCallOptions"], extra?: {
18
+ streaming?: boolean;
19
+ }): ChatCompletionsInvocationParams;
20
+ _generate(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
21
+ _streamResponseChunks(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;
22
+ completionWithRetry(request: OpenAI$1.Chat.ChatCompletionCreateParamsStreaming, requestOptions?: OpenAI$1.RequestOptions): Promise<AsyncIterable<OpenAI$1.Chat.Completions.ChatCompletionChunk>>;
23
+ completionWithRetry(request: OpenAI$1.Chat.ChatCompletionCreateParamsNonStreaming, requestOptions?: OpenAI$1.RequestOptions): Promise<OpenAI$1.Chat.Completions.ChatCompletion>;
24
+ /** @internal */
25
+ protected _convertCompletionsMessageToBaseMessage(message: OpenAI$1.Chat.Completions.ChatCompletionMessage, rawResponse: OpenAI$1.Chat.Completions.ChatCompletion): BaseMessage;
26
+ /** @internal */
27
+ protected _convertCompletionsDeltaToBaseMessageChunk(
28
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
+ delta: Record<string, any>, rawResponse: OpenAI$1.Chat.Completions.ChatCompletionChunk, defaultRole?: OpenAI$1.Chat.ChatCompletionRole): AIMessageChunk<_langchain_core_messages1.MessageStructure> | ChatMessageChunk<_langchain_core_messages1.MessageStructure> | FunctionMessageChunk<_langchain_core_messages1.MessageStructure> | HumanMessageChunk<_langchain_core_messages1.MessageStructure> | SystemMessageChunk<_langchain_core_messages1.MessageStructure> | ToolMessageChunk<_langchain_core_messages1.MessageStructure>;
30
+ }
31
+ //#endregion
32
+ export { ChatOpenAICompletions, ChatOpenAICompletionsCallOptions };
33
+ //# sourceMappingURL=completions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completions.d.ts","names":["OpenAI","OpenAIClient","CallbackManagerForLLMRun","AIMessageChunk","BaseMessage","ChatMessageChunk","FunctionMessageChunk","HumanMessageChunk","SystemMessageChunk","ToolMessageChunk","ChatGenerationChunk","ChatResult","BaseChatOpenAICallOptions","BaseChatOpenAI","ChatOpenAICompletionsCallOptions","ChatCompletionsInvocationParams","Chat","Completions","ChatCompletionCreateParams","Omit","ChatOpenAICompletions","CallOptions","Promise","AsyncGenerator","ChatCompletionCreateParamsStreaming","RequestOptions","ChatCompletionChunk","AsyncIterable","ChatCompletionCreateParamsNonStreaming","ChatCompletion","ChatCompletionMessage","Record","ChatCompletionRole","_langchain_core_messages1","MessageStructure"],"sources":["../../src/chat_models/completions.d.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport { AIMessageChunk, type BaseMessage, ChatMessageChunk, FunctionMessageChunk, HumanMessageChunk, SystemMessageChunk, ToolMessageChunk } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { BaseChatOpenAICallOptions } from \"./base.js\";\nimport { BaseChatOpenAI } from \"./base.js\";\nexport interface ChatOpenAICompletionsCallOptions extends BaseChatOpenAICallOptions {\n}\ntype ChatCompletionsInvocationParams = Omit<OpenAIClient.Chat.Completions.ChatCompletionCreateParams, \"messages\">;\n/**\n * OpenAI Completions API implementation.\n * @internal\n */\nexport declare class ChatOpenAICompletions<CallOptions extends ChatOpenAICompletionsCallOptions = ChatOpenAICompletionsCallOptions> extends BaseChatOpenAI<CallOptions> {\n /** @internal */\n invocationParams(options?: this[\"ParsedCallOptions\"], extra?: {\n streaming?: boolean;\n }): ChatCompletionsInvocationParams;\n _generate(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;\n _streamResponseChunks(messages: BaseMessage[], options: this[\"ParsedCallOptions\"], runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatGenerationChunk>;\n completionWithRetry(request: OpenAIClient.Chat.ChatCompletionCreateParamsStreaming, requestOptions?: OpenAIClient.RequestOptions): Promise<AsyncIterable<OpenAIClient.Chat.Completions.ChatCompletionChunk>>;\n completionWithRetry(request: OpenAIClient.Chat.ChatCompletionCreateParamsNonStreaming, requestOptions?: OpenAIClient.RequestOptions): Promise<OpenAIClient.Chat.Completions.ChatCompletion>;\n /** @internal */\n protected _convertCompletionsMessageToBaseMessage(message: OpenAIClient.Chat.Completions.ChatCompletionMessage, rawResponse: OpenAIClient.Chat.Completions.ChatCompletion): BaseMessage;\n /** @internal */\n protected _convertCompletionsDeltaToBaseMessageChunk(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delta: Record<string, any>, rawResponse: OpenAIClient.Chat.Completions.ChatCompletionChunk, defaultRole?: OpenAIClient.Chat.ChatCompletionRole): AIMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | ChatMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | FunctionMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | HumanMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | SystemMessageChunk<import(\"@langchain/core/messages\").MessageStructure> | ToolMessageChunk<import(\"@langchain/core/messages\").MessageStructure>;\n}\nexport {};\n"],"mappings":";;;;;;;;UAMiBc,gCAAAA,SAAyCF;AAA1D,KAEKG,+BAAAA,GAAkCI,IAFU,CAELlB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYC,0BAFS,EAAA,UAAA,CAAA;AAClF;;;;AAC0C,cAKtBE,qBALsB,CAAA,oBAKoBN,gCALpB,GAKuDA,gCALvD,CAAA,SAKiGD,cALjG,CAKgHQ,WALhH,CAAA,CAAA;EAKtBD;EAAqB,gBAAA,CAAA,OAAA,CAAA,EAAA,IAAA,CAAA,mBAAA,CAAA,EAAA,KAAqD,CAArD,EAAA;IAAqBN,SAAAA,CAAAA,EAAAA,OAAAA;EAAgC,CAAA,CAAA,EAIvFC,+BAJ0FD;EAAgC,SAAyBO,CAAAA,QAAAA,EAKnIjB,WALmIiB,EAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,mBAAAA,CAAAA,EAAAA,UAAAA,CAAAA,EAKnEnB,wBALmEmB,CAAAA,EAKxCC,OALwCD,CAKhCV,UALgCU,CAAAA;EAAW,qBAI9JN,CAAAA,QAAAA,EAE4BX,WAF5BW,EAAAA,EAAAA,OAAAA,EAAAA,IAAAA,CAAAA,mBAAAA,CAAAA,EAAAA,UAAAA,CAAAA,EAE4Fb,wBAF5Fa,CAAAA,EAEuHQ,cAFvHR,CAEsIL,mBAFtIK,CAAAA;EAA+B,mBACfX,CAAAA,OAAAA,EAESH,QAAAA,CAAae,IAAAA,CAAKQ,mCAF3BpB,EAAAA,cAAAA,CAAAA,EAEiFH,QAAAA,CAAawB,cAF9FrB,CAAAA,EAE+GkB,OAF/GlB,CAEuHuB,aAFvHvB,CAEqIH,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYS,mBAFnKtB,CAAAA,CAAAA;EAAW,mBAAqDF,CAAAA,OAAAA,EAGvDD,QAAAA,CAAae,IAAAA,CAAKY,sCAHqC1B,EAAAA,cAAAA,CAAAA,EAGoBD,QAAAA,CAAawB,cAHjCvB,CAAAA,EAGkDoB,OAHlDpB,CAG0DD,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYY,cAHxF3B,CAAAA;EAAwB;EAAqB,UAAlBoB,uCAAAA,CAAAA,OAAAA,EAKpDrB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYa,qBALsBR,EAAAA,WAAAA,EAKcrB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYY,cAL5CP,CAAAA,EAK6DlB,WAL7DkB;EAAO;EAC3E,UAAqDpB,0CAAAA;EAAwB;EAAqC,KAAlCqB,EAQpHQ,MARoHR,CAAAA,MAAAA,EAAAA,GAAAA,CAAAA,EAAAA,WAAAA,EAQlFtB,QAAAA,CAAae,IAAAA,CAAKC,WAAAA,CAAYS,mBARoDH,EAAAA,WAAAA,CAAAA,EAQjBtB,QAAAA,CAAae,IAAAA,CAAKgB,kBARDT,CAAAA,EAQsBpB,cARtBoB,CAQmBU,yBAAAA,CAAqDC,gBAAAA,CARxEX,GAQ4FlB,gBAR5FkB,CAQoCU,yBAAAA,CAA4GC,gBAAAA,CARhJX,GAQoKjB,oBARpKiB,CAQ4GU,yBAAAA,CAAgHC,gBAAAA,CAR5NX,GAQgPhB,iBARhPgB,CAQwLU,yBAAAA,CAA6GC,gBAAAA,CARrSX,GAQyTf,kBARzTe,CAQiQU,yBAAAA,CAA8GC,gBAAAA,CAR/WX,GAQmYd,gBARnYc,CAQ2UU,yBAAAA,CAA4GC,gBAAAA,CARvbX"}