@langchain/openai 1.5.13 → 1.6.1
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.
- package/CHANGELOG.md +29 -0
- package/dist/chat_models/base.cjs +7 -1
- package/dist/chat_models/base.cjs.map +1 -1
- package/dist/chat_models/base.d.cts +10 -2
- package/dist/chat_models/base.d.cts.map +1 -1
- package/dist/chat_models/base.d.ts +9 -1
- package/dist/chat_models/base.d.ts.map +1 -1
- package/dist/chat_models/base.js +7 -1
- package/dist/chat_models/base.js.map +1 -1
- package/dist/chat_models/completions.cjs +14 -3
- package/dist/chat_models/completions.cjs.map +1 -1
- package/dist/chat_models/completions.d.cts +2 -0
- package/dist/chat_models/completions.d.cts.map +1 -1
- package/dist/chat_models/completions.d.ts +2 -0
- package/dist/chat_models/completions.d.ts.map +1 -1
- package/dist/chat_models/completions.js +15 -4
- package/dist/chat_models/completions.js.map +1 -1
- package/dist/chat_models/index.cjs +68 -0
- package/dist/chat_models/index.cjs.map +1 -1
- package/dist/chat_models/index.d.cts +66 -0
- package/dist/chat_models/index.d.cts.map +1 -1
- package/dist/chat_models/index.d.ts +66 -0
- package/dist/chat_models/index.d.ts.map +1 -1
- package/dist/chat_models/index.js +68 -0
- package/dist/chat_models/index.js.map +1 -1
- package/dist/chat_models/profiles.cjs +224 -48
- package/dist/chat_models/profiles.cjs.map +1 -1
- package/dist/chat_models/profiles.js +224 -48
- package/dist/chat_models/profiles.js.map +1 -1
- package/dist/chat_models/responses.cjs +9 -3
- package/dist/chat_models/responses.cjs.map +1 -1
- package/dist/chat_models/responses.d.cts +2 -0
- package/dist/chat_models/responses.d.cts.map +1 -1
- package/dist/chat_models/responses.d.ts +2 -0
- package/dist/chat_models/responses.d.ts.map +1 -1
- package/dist/chat_models/responses.js +9 -3
- package/dist/chat_models/responses.js.map +1 -1
- package/dist/converters/completions.cjs +9 -8
- package/dist/converters/completions.cjs.map +1 -1
- package/dist/converters/completions.d.cts.map +1 -1
- package/dist/converters/completions.d.ts.map +1 -1
- package/dist/converters/completions.js +10 -9
- package/dist/converters/completions.js.map +1 -1
- package/dist/converters/responses.cjs +79 -50
- package/dist/converters/responses.cjs.map +1 -1
- package/dist/converters/responses.d.cts.map +1 -1
- package/dist/converters/responses.d.ts.map +1 -1
- package/dist/converters/responses.js +80 -51
- package/dist/converters/responses.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/llms.cjs +1 -1
- package/dist/llms.cjs.map +1 -1
- package/dist/llms.js +1 -1
- package/dist/llms.js.map +1 -1
- package/dist/types.d.cts +7 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +7 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/file_mime_types.cjs +15 -0
- package/dist/utils/file_mime_types.cjs.map +1 -0
- package/dist/utils/file_mime_types.js +15 -0
- package/dist/utils/file_mime_types.js.map +1 -0
- package/dist/utils/misc.cjs +30 -1
- package/dist/utils/misc.cjs.map +1 -1
- package/dist/utils/misc.d.cts +1 -0
- package/dist/utils/misc.d.cts.map +1 -1
- package/dist/utils/misc.d.ts +1 -0
- package/dist/utils/misc.d.ts.map +1 -1
- package/dist/utils/misc.js +27 -2
- package/dist/utils/misc.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","names":[],"sources":["../../src/chat_models/profiles.ts"],"sourcesContent":["/**\n * This file was automatically generated by an automated script. Do not edit manually.\n */\nimport type { ModelProfile } from \"@langchain/core/language_models/profile\";\nconst PROFILES: Record<string, ModelProfile> = {\n \"gpt-5-nano\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4.1-nano\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4o-2024-05-13\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5-pro\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 272000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"chatgpt-image-latest\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.6-sol\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4o-2024-08-06\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-6-astra\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.2-pro\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.3-codex-spark\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4.1-mini\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.4\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4-turbo\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.1\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n o1: {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4o\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.6-luna\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.3-codex\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4o-mini\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-image-1.5\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"o1-pro\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4.1\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"text-embedding-ada-002\": {\n maxInputTokens: 8192,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 1536,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-image-1\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.4-nano\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.5-pro\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-image-1-mini\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.4-mini\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-image-2\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-3.5-turbo\": {\n maxInputTokens: 16385,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: false,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: false,\n imageUrlInputs: false,\n pdfToolMessage: false,\n imageToolMessage: false,\n toolChoice: true,\n },\n \"gpt-5.6\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"text-embedding-3-small\": {\n maxInputTokens: 8191,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 1536,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5-mini\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.4-pro\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"text-embedding-3-large\": {\n maxInputTokens: 8191,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 3072,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.6-terra\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4\": {\n maxInputTokens: 8192,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 8192,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.2\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.2-chat-latest\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"o4-mini\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-realtime-2.1\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: true,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: true,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"o3-mini\": {\n maxInputTokens: 200000,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n o3: {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"o3-pro\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.3-chat-latest\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-5.5\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n \"gpt-4o-2024-11-20\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n },\n};\nexport default PROFILES;\n"],"mappings":";AAIA,MAAM,WAAyC;CAC7C,cAAc;EACZ,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,gBAAgB;EACd,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,qBAAqB;EACnB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,aAAa;EACX,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,wBAAwB;EACtB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,qBAAqB;EACnB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,uBAAuB;EACrB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,gBAAgB;EACd,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,WAAW;EACT,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb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W;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,oBAAoB;EAClB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,gBAAgB;EACd,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,eAAe;EACb,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,iBAAiB;EACf,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,WAAW;EACT,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,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d,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,IAAI;EACF,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,UAAU;EACR,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,uBAAuB;EACrB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,WAAW;EACT,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;CACA,qBAAqB;EACnB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;CACd;AACF"}
|
|
1
|
+
{"version":3,"file":"profiles.js","names":[],"sources":["../../src/chat_models/profiles.ts"],"sourcesContent":["/**\n * This file was automatically generated by an automated script. Do not edit manually.\n */\nimport type { ModelProfile } from \"@langchain/core/language_models/profile\";\nconst FILE_MIME_TYPES = [\n \"application/msword\",\n \"application/vnd.apple.iwork\",\n \"application/vnd.apple.keynote\",\n \"application/vnd.apple.pages\",\n \"application/vnd.google-apps.document\",\n \"application/vnd.google-apps.presentation\",\n \"application/vnd.google-apps.spreadsheet\",\n \"application/vnd.ms-excel\",\n \"application/vnd.ms-powerpoint\",\n \"application/vnd.oasis.opendocument.text\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/csv\",\n \"application/graphql\",\n \"application/javascript\",\n \"application/json\",\n \"application/json5\",\n \"application/rtf\",\n \"application/toml\",\n \"application/typescript\",\n \"application/x-awk\",\n \"application/x-bash\",\n \"application/x-graphql\",\n \"application/x-httpd-php\",\n \"application/x-httpd-php-source\",\n \"application/x-iif\",\n \"application/x-json5\",\n \"application/x-ndjson\",\n \"application/x-patch\",\n \"application/x-php\",\n \"application/x-powershell\",\n \"application/x-protobuf\",\n \"application/x-rust\",\n \"application/x-scala\",\n \"application/x-sql\",\n \"application/x-subrip\",\n \"application/x-terraform\",\n \"application/x-toml\",\n \"application/x-yaml\",\n \"application/yaml\",\n \"message/rfc822\",\n \"text/calendar\",\n \"text/css\",\n \"text/csv\",\n \"text/html\",\n \"text/javascript\",\n \"text/jsx\",\n \"text/markdown\",\n \"text/plain\",\n \"text/rtf\",\n \"text/srt\",\n \"text/tsv\",\n \"text/tsx\",\n \"text/vbscript\",\n \"text/vtt\",\n \"text/x-R\",\n \"text/x-asm\",\n \"text/x-astro\",\n \"text/x-awk\",\n \"text/x-bash\",\n \"text/x-c\",\n \"text/x-c++\",\n \"text/x-clojure\",\n \"text/x-cmake\",\n \"text/x-csharp\",\n \"text/x-dart\",\n \"text/x-diff\",\n \"text/x-dockerfile\",\n \"text/x-ejs\",\n \"text/x-elixir\",\n \"text/x-erb\",\n \"text/x-erlang\",\n \"text/x-go\",\n \"text/x-golang\",\n \"text/x-gradle\",\n \"text/x-graphql\",\n \"text/x-groovy\",\n \"text/x-handlebars\",\n \"text/x-haskell\",\n \"text/x-hcl\",\n \"text/x-iif\",\n \"text/x-ini\",\n \"text/x-jade\",\n \"text/x-java\",\n \"text/x-jinja2\",\n \"text/x-julia\",\n \"text/x-kotlin\",\n \"text/x-less\",\n \"text/x-liquid\",\n \"text/x-lisp\",\n \"text/x-lua\",\n \"text/x-makefile\",\n \"text/x-mustache\",\n \"text/x-objectivec\",\n \"text/x-objectivec++\",\n \"text/x-patch\",\n \"text/x-perl\",\n \"text/x-php\",\n \"text/x-properties\",\n \"text/x-protobuf\",\n \"text/x-pug\",\n \"text/x-python\",\n \"text/x-r\",\n \"text/x-rst\",\n \"text/x-ruby\",\n \"text/x-rust\",\n \"text/x-sass\",\n \"text/x-scala\",\n \"text/x-script.python\",\n \"text/x-scss\",\n \"text/x-sh\",\n \"text/x-shellscript\",\n \"text/x-sql\",\n \"text/x-subrip\",\n \"text/x-swift\",\n \"text/x-terraform\",\n \"text/x-tex\",\n \"text/x-tmpl\",\n \"text/x-toml\",\n \"text/x-twig\",\n \"text/x-typescript\",\n \"text/x-vcard\",\n \"text/x-yaml\",\n \"text/x-zsh\",\n \"text/xml\",\n];\nconst PROFILES: Record<string, ModelProfile> = {\n \"gpt-5-nano\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4.1-nano\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4o-2024-05-13\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5-pro\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 272000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"chatgpt-image-latest\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.6-sol\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4o-2024-08-06\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-6-astra\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.2-pro\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.3-codex-spark\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4.1-mini\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.4\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4-turbo\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.1\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n o1: {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4o\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.6-luna\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.3-codex\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4o-mini\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-image-1.5\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"o1-pro\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4.1\": {\n maxInputTokens: 1047576,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32768,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"text-embedding-ada-002\": {\n maxInputTokens: 8192,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 1536,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-image-1\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.4-nano\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.5-pro\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-image-1-mini\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.4-mini\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-image-2\": {\n maxInputTokens: 0,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 0,\n reasoningOutput: false,\n imageOutputs: true,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-3.5-turbo\": {\n maxInputTokens: 16385,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: false,\n videoInputs: false,\n maxOutputTokens: 4096,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: false,\n imageUrlInputs: false,\n pdfToolMessage: false,\n imageToolMessage: false,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.6\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"text-embedding-3-small\": {\n maxInputTokens: 8191,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 1536,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5-mini\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.4-pro\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"text-embedding-3-large\": {\n maxInputTokens: 8191,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 3072,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: false,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.6-terra\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4\": {\n maxInputTokens: 8192,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 8192,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.2\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5\": {\n maxInputTokens: 400000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.2-chat-latest\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"o4-mini\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-realtime-2.1\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: true,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 32000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: true,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"o3-mini\": {\n maxInputTokens: 200000,\n imageInputs: false,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n o3: {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"o3-pro\": {\n maxInputTokens: 200000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 100000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.3-chat-latest\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-5.5\": {\n maxInputTokens: 1050000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 128000,\n reasoningOutput: true,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n \"gpt-4o-2024-11-20\": {\n maxInputTokens: 128000,\n imageInputs: true,\n audioInputs: false,\n pdfInputs: true,\n videoInputs: false,\n maxOutputTokens: 16384,\n reasoningOutput: false,\n imageOutputs: false,\n audioOutputs: false,\n videoOutputs: false,\n toolCalling: true,\n structuredOutput: true,\n imageUrlInputs: true,\n pdfToolMessage: true,\n imageToolMessage: true,\n toolChoice: true,\n fileMimeTypes: FILE_MIME_TYPES,\n },\n};\nexport default PROFILES;\n"],"mappings":";AAIA,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,MAAM,WAAyC;CAC7C,cAAc;EACZ,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,eAAe;CACjB;CACA,gBAAgB;EACd,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;EACd,cAAc;EACd,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,eAAe;CACjB;CACA,qBAAqB;EACnB,gBAAgB;EAChB,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;EACb,iBAAiB;EACjB,iBAAiB;EACjB,cAAc;EACd,cAAc;E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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const require_client = require("../utils/client.cjs");
|
|
2
|
+
const require_file_mime_types = require("../utils/file_mime_types.cjs");
|
|
2
3
|
const require_tools = require("../utils/tools.cjs");
|
|
4
|
+
const require_misc = require("../utils/misc.cjs");
|
|
3
5
|
const require_base = require("./base.cjs");
|
|
4
6
|
const require_responses = require("../converters/responses.cjs");
|
|
5
7
|
const require_responses_stream_events = require("../utils/responses_stream_events.cjs");
|
|
@@ -16,6 +18,9 @@ var ChatOpenAIResponses = class extends require_base.BaseChatOpenAI {
|
|
|
16
18
|
constructor(modelOrFields, fieldsArg) {
|
|
17
19
|
super(require_base.getChatOpenAIModelParams(modelOrFields, fieldsArg));
|
|
18
20
|
}
|
|
21
|
+
get profile() {
|
|
22
|
+
return require_file_mime_types.withoutFileMimeTypesUnlessSupported(super.profile, true);
|
|
23
|
+
}
|
|
19
24
|
invocationParams(options) {
|
|
20
25
|
let strict;
|
|
21
26
|
if (options?.strict !== void 0) strict = options.strict;
|
|
@@ -75,10 +80,11 @@ var ChatOpenAIResponses = class extends require_base.BaseChatOpenAI {
|
|
|
75
80
|
})(),
|
|
76
81
|
parallel_tool_calls: options?.parallel_tool_calls,
|
|
77
82
|
max_output_tokens: this.maxTokens === -1 ? void 0 : this.maxTokens,
|
|
78
|
-
prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,
|
|
79
|
-
prompt_cache_retention: options?.promptCacheRetention ?? this.promptCacheRetention,
|
|
80
83
|
...this.zdrEnabled ? { store: false } : {},
|
|
81
|
-
...this.modelKwargs
|
|
84
|
+
...this.modelKwargs,
|
|
85
|
+
prompt_cache_key: options?.promptCacheKey ?? this.modelKwargs?.prompt_cache_key ?? this.promptCacheKey,
|
|
86
|
+
prompt_cache_retention: require_misc.normalizePromptCacheRetention(options?.promptCacheRetention ?? this.modelKwargs?.prompt_cache_retention ?? this.promptCacheRetention),
|
|
87
|
+
prompt_cache_options: options?.promptCacheOptions ?? this.modelKwargs?.prompt_cache_options ?? this.promptCacheOptions
|
|
82
88
|
};
|
|
83
89
|
const reasoning = this._getReasoningParams(options);
|
|
84
90
|
if (reasoning !== void 0) params.reasoning = reasoning;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.cjs","names":["BaseChatOpenAI","getChatOpenAIModelParams","isBuiltInToolChoice","formatToOpenAIToolChoice","convertMessagesToResponsesInput","convertResponsesMessageToAIMessage","convertOpenAIResponsesStream","convertResponsesDeltaToChatGenerationChunk","wrapOpenAIClientError","isBuiltInTool","isCustomTool","isOpenAIFunctionTool","isOpenAICustomTool","convertCompletionsCustomTool"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, type BaseMessage } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { isOpenAITool as isOpenAIFunctionTool } from \"@langchain/core/language_models/base\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\nimport {\n ChatOpenAIToolType,\n convertCompletionsCustomTool,\n formatToOpenAIToolChoice,\n isBuiltInTool,\n isBuiltInToolChoice,\n isCustomTool,\n isOpenAICustomTool,\n ResponsesTool,\n} from \"../utils/tools.js\";\nimport {\n BaseChatOpenAI,\n BaseChatOpenAICallOptions,\n BaseChatOpenAIFields,\n getChatOpenAIModelParams,\n} from \"./base.js\";\nimport {\n convertMessagesToResponsesInput,\n convertResponsesDeltaToChatGenerationChunk,\n convertResponsesMessageToAIMessage,\n} from \"../converters/responses.js\";\nimport { OpenAIVerbosityParam } from \"../types.js\";\nimport { convertOpenAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\nexport interface ChatOpenAIResponsesCallOptions extends BaseChatOpenAICallOptions {\n /**\n * Configuration options for a text response from the model. Can be plain text or\n * structured JSON data.\n */\n text?: OpenAIClient.Responses.ResponseCreateParams[\"text\"];\n\n /**\n * The truncation strategy to use for the model response.\n */\n truncation?: OpenAIClient.Responses.ResponseCreateParams[\"truncation\"];\n\n /**\n * Specify additional output data to include in the model response.\n */\n include?: OpenAIClient.Responses.ResponseCreateParams[\"include\"];\n\n /**\n * The unique ID of the previous response to the model. Use this to create multi-turn\n * conversations.\n */\n previous_response_id?: OpenAIClient.Responses.ResponseCreateParams[\"previous_response_id\"];\n\n /**\n * The verbosity of the model's response.\n */\n verbosity?: OpenAIVerbosityParam;\n}\n\nexport type ChatResponsesInvocationParams = Omit<\n OpenAIClient.Responses.ResponseCreateParams,\n \"input\"\n>;\n\n/**\n * OpenAI Responses API implementation.\n *\n * Will be exported in a later version of @langchain/openai.\n *\n * @internal\n */\nexport class ChatOpenAIResponses<\n CallOptions extends ChatOpenAIResponsesCallOptions =\n ChatOpenAIResponsesCallOptions,\n> extends BaseChatOpenAI<CallOptions> {\n constructor(model: string, fields?: Omit<BaseChatOpenAIFields, \"model\">);\n constructor(fields?: BaseChatOpenAIFields);\n constructor(\n modelOrFields?: string | BaseChatOpenAIFields,\n fieldsArg?: Omit<BaseChatOpenAIFields, \"model\">\n ) {\n super(getChatOpenAIModelParams(modelOrFields, fieldsArg));\n }\n\n override invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatResponsesInvocationParams {\n let strict: boolean | undefined;\n if (options?.strict !== undefined) {\n strict = options.strict;\n }\n if (strict === undefined && this.supportsStrictToolCalling !== undefined) {\n strict = this.supportsStrictToolCalling;\n }\n\n const params: ChatResponsesInvocationParams = {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n user: this.user,\n service_tier: this.service_tier,\n\n // if include_usage is set or streamUsage then stream must be set to true.\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n truncation: options?.truncation,\n include: options?.include,\n tools: options?.tools?.length\n ? this._reduceChatOpenAITools(options.tools, {\n stream: this.streaming,\n strict,\n })\n : undefined,\n tool_choice: isBuiltInToolChoice(options?.tool_choice)\n ? options?.tool_choice\n : (() => {\n const formatted = formatToOpenAIToolChoice(options?.tool_choice);\n if (typeof formatted === \"object\" && \"type\" in formatted) {\n if (formatted.type === \"function\") {\n return { type: \"function\", name: formatted.function.name };\n } else if (formatted.type === \"allowed_tools\") {\n return {\n type: \"allowed_tools\",\n mode: formatted.allowed_tools.mode,\n tools: formatted.allowed_tools.tools,\n };\n } else if (formatted.type === \"custom\") {\n return {\n type: \"custom\",\n name: formatted.custom.name,\n };\n }\n }\n return undefined;\n })(),\n text: (() => {\n if (options?.text) return options.text;\n const format = this._getResponseFormat(options?.response_format);\n if (format?.type === \"json_schema\") {\n if (format.json_schema.schema != null) {\n return {\n format: {\n type: \"json_schema\",\n schema: format.json_schema.schema,\n description: format.json_schema.description,\n name: format.json_schema.name,\n strict: format.json_schema.strict,\n },\n verbosity: options?.verbosity,\n };\n }\n return undefined;\n }\n return { format, verbosity: options?.verbosity };\n })(),\n parallel_tool_calls: options?.parallel_tool_calls,\n max_output_tokens: this.maxTokens === -1 ? undefined : this.maxTokens,\n prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,\n prompt_cache_retention:\n options?.promptCacheRetention ?? this.promptCacheRetention,\n ...(this.zdrEnabled ? { store: false } : {}),\n ...this.modelKwargs,\n };\n\n const reasoning = this._getReasoningParams(options);\n\n if (reasoning !== undefined) {\n params.reasoning = reasoning;\n }\n\n return params;\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n } else {\n const data = await this.completionWithRetry(\n {\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n ...invocationParams,\n stream: false,\n },\n {\n signal: options?.signal,\n maxRetries: options?.maxRetries,\n ...options?.options,\n }\n );\n\n return {\n generations: [\n {\n text: data.output_text,\n message: convertResponsesMessageToAIMessage(data),\n },\n ],\n llmOutput: {\n id: data.id,\n estimatedTokenUsage: data.usage\n ? {\n promptTokens: data.usage.input_tokens,\n completionTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n const abortableStream = async function* (\n source: AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const data of source) {\n if (signal?.aborted) {\n return;\n }\n yield data;\n }\n };\n\n yield* convertOpenAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n {\n streamUsage: shouldStreamUsage ?? true,\n provider: this.streamEventProvider,\n }\n );\n }\n\n /** Provider id used in native stream protocol passthrough events. */\n protected get streamEventProvider(): string {\n return \"openai\";\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n try {\n for await (const data of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertResponsesDeltaToChatGenerationChunk(data);\n if (chunk == null) continue;\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text || \"\",\n {\n prompt: options.promptIndex ?? 0,\n completion: 0,\n },\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n }\n\n /**\n * Calls the Responses API with retry logic in case of failures.\n * @param request The request to send to the OpenAI API.\n * @param options Optional configuration for the API call.\n * @returns The response from the OpenAI API.\n */\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsNonStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<OpenAIClient.Responses.Response>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParams,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<\n | AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>\n | OpenAIClient.Responses.Response\n > {\n // The SDK has its own `maxRetries`; take it for our caller instead so\n // the two retry loops don't multiply.\n const { maxRetries, ...sdkOptions } = requestOptions ?? {};\n const clientOptions = this._getClientOptions(sdkOptions);\n return this.caller.callWithOptions({ maxRetries }, async () => {\n try {\n // use parse if dealing with json_schema\n if (request.text?.format?.type === \"json_schema\" && !request.stream) {\n return await this.client.responses.parse(request, clientOptions);\n }\n return await this.client.responses.create(request, clientOptions);\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n });\n }\n\n /** @internal */\n protected _reduceChatOpenAITools(\n tools: ChatOpenAIToolType[],\n fields: { stream?: boolean; strict?: boolean }\n ): ResponsesTool[] {\n const reducedTools: ResponsesTool[] = [];\n for (const tool of tools) {\n if (isBuiltInTool(tool)) {\n if (tool.type === \"image_generation\" && fields?.stream) {\n // OpenAI sends a 400 error if partial_images is not set and we want to stream.\n // We also set it to 1 since we don't support partial images yet.\n tool.partial_images = 1;\n }\n reducedTools.push(tool);\n } else if (isCustomTool(tool)) {\n const customToolData = tool.metadata.customTool;\n reducedTools.push({\n type: \"custom\",\n name: customToolData.name,\n description: customToolData.description,\n format: customToolData.format,\n } as ResponsesTool);\n } else if (isOpenAIFunctionTool(tool)) {\n const extra: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(tool)) {\n if (k !== \"type\" && k !== \"function\") {\n extra[k] = v;\n }\n }\n reducedTools.push({\n type: \"function\",\n name: tool.function.name,\n parameters: tool.function.parameters,\n description: tool.function.description,\n strict: fields?.strict ?? null,\n ...extra,\n });\n } else if (isOpenAICustomTool(tool)) {\n reducedTools.push(convertCompletionsCustomTool(tool));\n }\n }\n return reducedTools;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responses.cjs","names":["BaseChatOpenAI","getChatOpenAIModelParams","withoutFileMimeTypesUnlessSupported","isBuiltInToolChoice","formatToOpenAIToolChoice","normalizePromptCacheRetention","convertMessagesToResponsesInput","convertResponsesMessageToAIMessage","convertOpenAIResponsesStream","convertResponsesDeltaToChatGenerationChunk","wrapOpenAIClientError","isBuiltInTool","isCustomTool","isOpenAIFunctionTool","isOpenAICustomTool","convertCompletionsCustomTool"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport type { ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { AIMessage, type BaseMessage } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { isOpenAITool as isOpenAIFunctionTool } from \"@langchain/core/language_models/base\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\nimport {\n ChatOpenAIToolType,\n convertCompletionsCustomTool,\n formatToOpenAIToolChoice,\n isBuiltInTool,\n isBuiltInToolChoice,\n isCustomTool,\n isOpenAICustomTool,\n ResponsesTool,\n} from \"../utils/tools.js\";\nimport {\n BaseChatOpenAI,\n BaseChatOpenAICallOptions,\n BaseChatOpenAIFields,\n getChatOpenAIModelParams,\n} from \"./base.js\";\nimport {\n convertMessagesToResponsesInput,\n convertResponsesDeltaToChatGenerationChunk,\n convertResponsesMessageToAIMessage,\n} from \"../converters/responses.js\";\nimport { OpenAIVerbosityParam } from \"../types.js\";\nimport { convertOpenAIResponsesStream } from \"../utils/responses_stream_events.js\";\nimport { normalizePromptCacheRetention } from \"../utils/misc.js\";\nimport { withoutFileMimeTypesUnlessSupported } from \"../utils/file_mime_types.js\";\n\nexport interface ChatOpenAIResponsesCallOptions extends BaseChatOpenAICallOptions {\n /**\n * Configuration options for a text response from the model. Can be plain text or\n * structured JSON data.\n */\n text?: OpenAIClient.Responses.ResponseCreateParams[\"text\"];\n\n /**\n * The truncation strategy to use for the model response.\n */\n truncation?: OpenAIClient.Responses.ResponseCreateParams[\"truncation\"];\n\n /**\n * Specify additional output data to include in the model response.\n */\n include?: OpenAIClient.Responses.ResponseCreateParams[\"include\"];\n\n /**\n * The unique ID of the previous response to the model. Use this to create multi-turn\n * conversations.\n */\n previous_response_id?: OpenAIClient.Responses.ResponseCreateParams[\"previous_response_id\"];\n\n /**\n * The verbosity of the model's response.\n */\n verbosity?: OpenAIVerbosityParam;\n}\n\nexport type ChatResponsesInvocationParams = Omit<\n OpenAIClient.Responses.ResponseCreateParams,\n \"input\"\n>;\n\n/**\n * OpenAI Responses API implementation.\n *\n * Will be exported in a later version of @langchain/openai.\n *\n * @internal\n */\nexport class ChatOpenAIResponses<\n CallOptions extends ChatOpenAIResponsesCallOptions =\n ChatOpenAIResponsesCallOptions,\n> extends BaseChatOpenAI<CallOptions> {\n constructor(model: string, fields?: Omit<BaseChatOpenAIFields, \"model\">);\n constructor(fields?: BaseChatOpenAIFields);\n constructor(\n modelOrFields?: string | BaseChatOpenAIFields,\n fieldsArg?: Omit<BaseChatOpenAIFields, \"model\">\n ) {\n super(getChatOpenAIModelParams(modelOrFields, fieldsArg));\n }\n\n override get profile(): ModelProfile {\n return withoutFileMimeTypesUnlessSupported(super.profile, true);\n }\n\n override invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatResponsesInvocationParams {\n let strict: boolean | undefined;\n if (options?.strict !== undefined) {\n strict = options.strict;\n }\n if (strict === undefined && this.supportsStrictToolCalling !== undefined) {\n strict = this.supportsStrictToolCalling;\n }\n\n const params: ChatResponsesInvocationParams = {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n user: this.user,\n service_tier: this.service_tier,\n\n // if include_usage is set or streamUsage then stream must be set to true.\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n truncation: options?.truncation,\n include: options?.include,\n tools: options?.tools?.length\n ? this._reduceChatOpenAITools(options.tools, {\n stream: this.streaming,\n strict,\n })\n : undefined,\n tool_choice: isBuiltInToolChoice(options?.tool_choice)\n ? options?.tool_choice\n : (() => {\n const formatted = formatToOpenAIToolChoice(options?.tool_choice);\n if (typeof formatted === \"object\" && \"type\" in formatted) {\n if (formatted.type === \"function\") {\n return { type: \"function\", name: formatted.function.name };\n } else if (formatted.type === \"allowed_tools\") {\n return {\n type: \"allowed_tools\",\n mode: formatted.allowed_tools.mode,\n tools: formatted.allowed_tools.tools,\n };\n } else if (formatted.type === \"custom\") {\n return {\n type: \"custom\",\n name: formatted.custom.name,\n };\n }\n }\n return undefined;\n })(),\n text: (() => {\n if (options?.text) return options.text;\n const format = this._getResponseFormat(options?.response_format);\n if (format?.type === \"json_schema\") {\n if (format.json_schema.schema != null) {\n return {\n format: {\n type: \"json_schema\",\n schema: format.json_schema.schema,\n description: format.json_schema.description,\n name: format.json_schema.name,\n strict: format.json_schema.strict,\n },\n verbosity: options?.verbosity,\n };\n }\n return undefined;\n }\n return { format, verbosity: options?.verbosity };\n })(),\n parallel_tool_calls: options?.parallel_tool_calls,\n max_output_tokens: this.maxTokens === -1 ? undefined : this.maxTokens,\n ...(this.zdrEnabled ? { store: false } : {}),\n ...this.modelKwargs,\n prompt_cache_key:\n options?.promptCacheKey ??\n this.modelKwargs?.prompt_cache_key ??\n this.promptCacheKey,\n prompt_cache_retention: normalizePromptCacheRetention(\n options?.promptCacheRetention ??\n this.modelKwargs?.prompt_cache_retention ??\n this.promptCacheRetention\n ),\n prompt_cache_options:\n options?.promptCacheOptions ??\n this.modelKwargs?.prompt_cache_options ??\n this.promptCacheOptions,\n };\n\n const reasoning = this._getReasoningParams(options);\n\n if (reasoning !== undefined) {\n params.reasoning = reasoning;\n }\n\n return params;\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n } else {\n const data = await this.completionWithRetry(\n {\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n ...invocationParams,\n stream: false,\n },\n {\n signal: options?.signal,\n maxRetries: options?.maxRetries,\n ...options?.options,\n }\n );\n\n return {\n generations: [\n {\n text: data.output_text,\n message: convertResponsesMessageToAIMessage(data),\n },\n ],\n llmOutput: {\n id: data.id,\n estimatedTokenUsage: data.usage\n ? {\n promptTokens: data.usage.input_tokens,\n completionTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n const abortableStream = async function* (\n source: AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const data of source) {\n if (signal?.aborted) {\n return;\n }\n yield data;\n }\n };\n\n yield* convertOpenAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n {\n streamUsage: shouldStreamUsage ?? true,\n provider: this.streamEventProvider,\n }\n );\n }\n\n /** Provider id used in native stream protocol passthrough events. */\n protected get streamEventProvider(): string {\n return \"openai\";\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n try {\n for await (const data of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertResponsesDeltaToChatGenerationChunk(data);\n if (chunk == null) continue;\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text || \"\",\n {\n prompt: options.promptIndex ?? 0,\n completion: 0,\n },\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n }\n\n /**\n * Calls the Responses API with retry logic in case of failures.\n * @param request The request to send to the OpenAI API.\n * @param options Optional configuration for the API call.\n * @returns The response from the OpenAI API.\n */\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsNonStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<OpenAIClient.Responses.Response>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParams,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<\n | AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>\n | OpenAIClient.Responses.Response\n > {\n // The SDK has its own `maxRetries`; take it for our caller instead so\n // the two retry loops don't multiply.\n const { maxRetries, ...sdkOptions } = requestOptions ?? {};\n const clientOptions = this._getClientOptions(sdkOptions);\n return this.caller.callWithOptions({ maxRetries }, async () => {\n try {\n // use parse if dealing with json_schema\n if (request.text?.format?.type === \"json_schema\" && !request.stream) {\n return await this.client.responses.parse(request, clientOptions);\n }\n return await this.client.responses.create(request, clientOptions);\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n });\n }\n\n /** @internal */\n protected _reduceChatOpenAITools(\n tools: ChatOpenAIToolType[],\n fields: { stream?: boolean; strict?: boolean }\n ): ResponsesTool[] {\n const reducedTools: ResponsesTool[] = [];\n for (const tool of tools) {\n if (isBuiltInTool(tool)) {\n if (tool.type === \"image_generation\" && fields?.stream) {\n // OpenAI sends a 400 error if partial_images is not set and we want to stream.\n // We also set it to 1 since we don't support partial images yet.\n tool.partial_images = 1;\n }\n reducedTools.push(tool);\n } else if (isCustomTool(tool)) {\n const customToolData = tool.metadata.customTool;\n reducedTools.push({\n type: \"custom\",\n name: customToolData.name,\n description: customToolData.description,\n format: customToolData.format,\n } as ResponsesTool);\n } else if (isOpenAIFunctionTool(tool)) {\n const extra: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(tool)) {\n if (k !== \"type\" && k !== \"function\") {\n extra[k] = v;\n }\n }\n reducedTools.push({\n type: \"function\",\n name: tool.function.name,\n parameters: tool.function.parameters,\n description: tool.function.description,\n strict: fields?.strict ?? null,\n ...extra,\n });\n } else if (isOpenAICustomTool(tool)) {\n reducedTools.push(convertCompletionsCustomTool(tool));\n }\n }\n return reducedTools;\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { BaseChatOpenAI, BaseChatOpenAICallOptions, BaseChatOpenAIFields } from
|
|
|
4
4
|
import { OpenAI } from "openai";
|
|
5
5
|
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
|
|
6
6
|
import { ChatModelStreamEvent } from "@langchain/core/language_models/event";
|
|
7
|
+
import { ModelProfile } from "@langchain/core/language_models/profile";
|
|
7
8
|
import { BaseMessage } from "@langchain/core/messages";
|
|
8
9
|
import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
|
|
9
10
|
//#region src/chat_models/responses.d.ts
|
|
@@ -42,6 +43,7 @@ type ChatResponsesInvocationParams = Omit<OpenAI.Responses.ResponseCreateParams,
|
|
|
42
43
|
declare class ChatOpenAIResponses<CallOptions extends ChatOpenAIResponsesCallOptions = ChatOpenAIResponsesCallOptions> extends BaseChatOpenAI<CallOptions> {
|
|
43
44
|
constructor(model: string, fields?: Omit<BaseChatOpenAIFields, "model">);
|
|
44
45
|
constructor(fields?: BaseChatOpenAIFields);
|
|
46
|
+
get profile(): ModelProfile;
|
|
45
47
|
invocationParams(options?: this["ParsedCallOptions"]): ChatResponsesInvocationParams;
|
|
46
48
|
_generate(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
|
|
47
49
|
_streamChatModelEvents(messages: BaseMessage[], options: this["ParsedCallOptions"], _runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatModelStreamEvent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;UAkCiB,uCAAuC;;;;;EAKtD,OAAO,OAAa,UAAU;;;;EAK9B,aAAa,OAAa,UAAU;;;;EAKpC,UAAU,OAAa,UAAU;;;;;EAMjC,uBAAuB,OAAa,UAAU;;;;EAK9C,YAAY;;KAGF,gCAAgC,KAC1C,OAAa,UAAU;;;;;;;;cAWZ,oBACX,oBAAoB,iCAClB,wCACM,eAAe;EACvB,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;MAQR,WAAW;EAIf,iBACP,sCACC;EAiGG,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EA4DJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;;gBAsCJ;EAIP,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe;;;;;;;EA8CZ,oBACJ,SAAS,OAAa,UAAU,+BAChC,iBAAiB,OAAa,iBAC7B,QAAQ,cAAc,OAAa,UAAU;EAE1C,oBACJ,SAAS,OAAa,UAAU,kCAChC,iBAAiB,OAAa,iBAC7B,QAAQ,OAAa,UAAU;;YA4BxB,uBACR,OAAO,sBACP;IAAU;IAAkB;MAC3B"}
|
|
@@ -6,6 +6,7 @@ import { BaseMessage } from "@langchain/core/messages";
|
|
|
6
6
|
import { ChatGenerationChunk, ChatResult } from "@langchain/core/outputs";
|
|
7
7
|
import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
|
|
8
8
|
import { ChatModelStreamEvent } from "@langchain/core/language_models/event";
|
|
9
|
+
import { ModelProfile } from "@langchain/core/language_models/profile";
|
|
9
10
|
//#region src/chat_models/responses.d.ts
|
|
10
11
|
interface ChatOpenAIResponsesCallOptions extends BaseChatOpenAICallOptions {
|
|
11
12
|
/**
|
|
@@ -42,6 +43,7 @@ type ChatResponsesInvocationParams = Omit<OpenAI.Responses.ResponseCreateParams,
|
|
|
42
43
|
declare class ChatOpenAIResponses<CallOptions extends ChatOpenAIResponsesCallOptions = ChatOpenAIResponsesCallOptions> extends BaseChatOpenAI<CallOptions> {
|
|
43
44
|
constructor(model: string, fields?: Omit<BaseChatOpenAIFields, "model">);
|
|
44
45
|
constructor(fields?: BaseChatOpenAIFields);
|
|
46
|
+
get profile(): ModelProfile;
|
|
45
47
|
invocationParams(options?: this["ParsedCallOptions"]): ChatResponsesInvocationParams;
|
|
46
48
|
_generate(messages: BaseMessage[], options: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
|
|
47
49
|
_streamChatModelEvents(messages: BaseMessage[], options: this["ParsedCallOptions"], _runManager?: CallbackManagerForLLMRun): AsyncGenerator<ChatModelStreamEvent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/chat_models/responses.ts"],"mappings":";;;;;;;;;;UAkCiB,uCAAuC;;;;;EAKtD,OAAO,OAAa,UAAU;;;;EAK9B,aAAa,OAAa,UAAU;;;;EAKpC,UAAU,OAAa,UAAU;;;;;EAMjC,uBAAuB,OAAa,UAAU;;;;EAK9C,YAAY;;KAGF,gCAAgC,KAC1C,OAAa,UAAU;;;;;;;;cAWZ,oBACX,oBAAoB,iCAClB,wCACM,eAAe;EACvB,YAAY,eAAe,SAAS,KAAK;EACzC,YAAY,SAAS;MAQR,WAAW;EAIf,iBACP,sCACC;EAiGG,UACJ,UAAU,eACV,oCACA,aAAa,2BACZ,QAAQ;EA4DJ,uBACL,UAAU,eACV,oCACA,cAAc,2BACb,eAAe;;gBAsCJ;EAIP,sBACL,UAAU,eACV,oCACA,aAAa,2BACZ,eAAe;;;;;;;EA8CZ,oBACJ,SAAS,OAAa,UAAU,+BAChC,iBAAiB,OAAa,iBAC7B,QAAQ,cAAc,OAAa,UAAU;EAE1C,oBACJ,SAAS,OAAa,UAAU,kCAChC,iBAAiB,OAAa,iBAC7B,QAAQ,OAAa,UAAU;;YA4BxB,uBACR,OAAO,sBACP;IAAU;IAAkB;MAC3B"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { wrapOpenAIClientError } from "../utils/client.js";
|
|
2
|
+
import { withoutFileMimeTypesUnlessSupported } from "../utils/file_mime_types.js";
|
|
2
3
|
import { convertCompletionsCustomTool, formatToOpenAIToolChoice, isBuiltInTool, isBuiltInToolChoice, isCustomTool, isOpenAICustomTool } from "../utils/tools.js";
|
|
4
|
+
import { normalizePromptCacheRetention } from "../utils/misc.js";
|
|
3
5
|
import { BaseChatOpenAI, getChatOpenAIModelParams } from "./base.js";
|
|
4
6
|
import { convertMessagesToResponsesInput, convertResponsesDeltaToChatGenerationChunk, convertResponsesMessageToAIMessage } from "../converters/responses.js";
|
|
5
7
|
import { convertOpenAIResponsesStream } from "../utils/responses_stream_events.js";
|
|
@@ -16,6 +18,9 @@ var ChatOpenAIResponses = class extends BaseChatOpenAI {
|
|
|
16
18
|
constructor(modelOrFields, fieldsArg) {
|
|
17
19
|
super(getChatOpenAIModelParams(modelOrFields, fieldsArg));
|
|
18
20
|
}
|
|
21
|
+
get profile() {
|
|
22
|
+
return withoutFileMimeTypesUnlessSupported(super.profile, true);
|
|
23
|
+
}
|
|
19
24
|
invocationParams(options) {
|
|
20
25
|
let strict;
|
|
21
26
|
if (options?.strict !== void 0) strict = options.strict;
|
|
@@ -75,10 +80,11 @@ var ChatOpenAIResponses = class extends BaseChatOpenAI {
|
|
|
75
80
|
})(),
|
|
76
81
|
parallel_tool_calls: options?.parallel_tool_calls,
|
|
77
82
|
max_output_tokens: this.maxTokens === -1 ? void 0 : this.maxTokens,
|
|
78
|
-
prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,
|
|
79
|
-
prompt_cache_retention: options?.promptCacheRetention ?? this.promptCacheRetention,
|
|
80
83
|
...this.zdrEnabled ? { store: false } : {},
|
|
81
|
-
...this.modelKwargs
|
|
84
|
+
...this.modelKwargs,
|
|
85
|
+
prompt_cache_key: options?.promptCacheKey ?? this.modelKwargs?.prompt_cache_key ?? this.promptCacheKey,
|
|
86
|
+
prompt_cache_retention: normalizePromptCacheRetention(options?.promptCacheRetention ?? this.modelKwargs?.prompt_cache_retention ?? this.promptCacheRetention),
|
|
87
|
+
prompt_cache_options: options?.promptCacheOptions ?? this.modelKwargs?.prompt_cache_options ?? this.promptCacheOptions
|
|
82
88
|
};
|
|
83
89
|
const reasoning = this._getReasoningParams(options);
|
|
84
90
|
if (reasoning !== void 0) params.reasoning = reasoning;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","names":["isOpenAIFunctionTool"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport { AIMessage, type BaseMessage } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { isOpenAITool as isOpenAIFunctionTool } from \"@langchain/core/language_models/base\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\nimport {\n ChatOpenAIToolType,\n convertCompletionsCustomTool,\n formatToOpenAIToolChoice,\n isBuiltInTool,\n isBuiltInToolChoice,\n isCustomTool,\n isOpenAICustomTool,\n ResponsesTool,\n} from \"../utils/tools.js\";\nimport {\n BaseChatOpenAI,\n BaseChatOpenAICallOptions,\n BaseChatOpenAIFields,\n getChatOpenAIModelParams,\n} from \"./base.js\";\nimport {\n convertMessagesToResponsesInput,\n convertResponsesDeltaToChatGenerationChunk,\n convertResponsesMessageToAIMessage,\n} from \"../converters/responses.js\";\nimport { OpenAIVerbosityParam } from \"../types.js\";\nimport { convertOpenAIResponsesStream } from \"../utils/responses_stream_events.js\";\n\nexport interface ChatOpenAIResponsesCallOptions extends BaseChatOpenAICallOptions {\n /**\n * Configuration options for a text response from the model. Can be plain text or\n * structured JSON data.\n */\n text?: OpenAIClient.Responses.ResponseCreateParams[\"text\"];\n\n /**\n * The truncation strategy to use for the model response.\n */\n truncation?: OpenAIClient.Responses.ResponseCreateParams[\"truncation\"];\n\n /**\n * Specify additional output data to include in the model response.\n */\n include?: OpenAIClient.Responses.ResponseCreateParams[\"include\"];\n\n /**\n * The unique ID of the previous response to the model. Use this to create multi-turn\n * conversations.\n */\n previous_response_id?: OpenAIClient.Responses.ResponseCreateParams[\"previous_response_id\"];\n\n /**\n * The verbosity of the model's response.\n */\n verbosity?: OpenAIVerbosityParam;\n}\n\nexport type ChatResponsesInvocationParams = Omit<\n OpenAIClient.Responses.ResponseCreateParams,\n \"input\"\n>;\n\n/**\n * OpenAI Responses API implementation.\n *\n * Will be exported in a later version of @langchain/openai.\n *\n * @internal\n */\nexport class ChatOpenAIResponses<\n CallOptions extends ChatOpenAIResponsesCallOptions =\n ChatOpenAIResponsesCallOptions,\n> extends BaseChatOpenAI<CallOptions> {\n constructor(model: string, fields?: Omit<BaseChatOpenAIFields, \"model\">);\n constructor(fields?: BaseChatOpenAIFields);\n constructor(\n modelOrFields?: string | BaseChatOpenAIFields,\n fieldsArg?: Omit<BaseChatOpenAIFields, \"model\">\n ) {\n super(getChatOpenAIModelParams(modelOrFields, fieldsArg));\n }\n\n override invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatResponsesInvocationParams {\n let strict: boolean | undefined;\n if (options?.strict !== undefined) {\n strict = options.strict;\n }\n if (strict === undefined && this.supportsStrictToolCalling !== undefined) {\n strict = this.supportsStrictToolCalling;\n }\n\n const params: ChatResponsesInvocationParams = {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n user: this.user,\n service_tier: this.service_tier,\n\n // if include_usage is set or streamUsage then stream must be set to true.\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n truncation: options?.truncation,\n include: options?.include,\n tools: options?.tools?.length\n ? this._reduceChatOpenAITools(options.tools, {\n stream: this.streaming,\n strict,\n })\n : undefined,\n tool_choice: isBuiltInToolChoice(options?.tool_choice)\n ? options?.tool_choice\n : (() => {\n const formatted = formatToOpenAIToolChoice(options?.tool_choice);\n if (typeof formatted === \"object\" && \"type\" in formatted) {\n if (formatted.type === \"function\") {\n return { type: \"function\", name: formatted.function.name };\n } else if (formatted.type === \"allowed_tools\") {\n return {\n type: \"allowed_tools\",\n mode: formatted.allowed_tools.mode,\n tools: formatted.allowed_tools.tools,\n };\n } else if (formatted.type === \"custom\") {\n return {\n type: \"custom\",\n name: formatted.custom.name,\n };\n }\n }\n return undefined;\n })(),\n text: (() => {\n if (options?.text) return options.text;\n const format = this._getResponseFormat(options?.response_format);\n if (format?.type === \"json_schema\") {\n if (format.json_schema.schema != null) {\n return {\n format: {\n type: \"json_schema\",\n schema: format.json_schema.schema,\n description: format.json_schema.description,\n name: format.json_schema.name,\n strict: format.json_schema.strict,\n },\n verbosity: options?.verbosity,\n };\n }\n return undefined;\n }\n return { format, verbosity: options?.verbosity };\n })(),\n parallel_tool_calls: options?.parallel_tool_calls,\n max_output_tokens: this.maxTokens === -1 ? undefined : this.maxTokens,\n prompt_cache_key: options?.promptCacheKey ?? this.promptCacheKey,\n prompt_cache_retention:\n options?.promptCacheRetention ?? this.promptCacheRetention,\n ...(this.zdrEnabled ? { store: false } : {}),\n ...this.modelKwargs,\n };\n\n const reasoning = this._getReasoningParams(options);\n\n if (reasoning !== undefined) {\n params.reasoning = reasoning;\n }\n\n return params;\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n } else {\n const data = await this.completionWithRetry(\n {\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n ...invocationParams,\n stream: false,\n },\n {\n signal: options?.signal,\n maxRetries: options?.maxRetries,\n ...options?.options,\n }\n );\n\n return {\n generations: [\n {\n text: data.output_text,\n message: convertResponsesMessageToAIMessage(data),\n },\n ],\n llmOutput: {\n id: data.id,\n estimatedTokenUsage: data.usage\n ? {\n promptTokens: data.usage.input_tokens,\n completionTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n const abortableStream = async function* (\n source: AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const data of source) {\n if (signal?.aborted) {\n return;\n }\n yield data;\n }\n };\n\n yield* convertOpenAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n {\n streamUsage: shouldStreamUsage ?? true,\n provider: this.streamEventProvider,\n }\n );\n }\n\n /** Provider id used in native stream protocol passthrough events. */\n protected get streamEventProvider(): string {\n return \"openai\";\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n try {\n for await (const data of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertResponsesDeltaToChatGenerationChunk(data);\n if (chunk == null) continue;\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text || \"\",\n {\n prompt: options.promptIndex ?? 0,\n completion: 0,\n },\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n }\n\n /**\n * Calls the Responses API with retry logic in case of failures.\n * @param request The request to send to the OpenAI API.\n * @param options Optional configuration for the API call.\n * @returns The response from the OpenAI API.\n */\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsNonStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<OpenAIClient.Responses.Response>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParams,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<\n | AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>\n | OpenAIClient.Responses.Response\n > {\n // The SDK has its own `maxRetries`; take it for our caller instead so\n // the two retry loops don't multiply.\n const { maxRetries, ...sdkOptions } = requestOptions ?? {};\n const clientOptions = this._getClientOptions(sdkOptions);\n return this.caller.callWithOptions({ maxRetries }, async () => {\n try {\n // use parse if dealing with json_schema\n if (request.text?.format?.type === \"json_schema\" && !request.stream) {\n return await this.client.responses.parse(request, clientOptions);\n }\n return await this.client.responses.create(request, clientOptions);\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n });\n }\n\n /** @internal */\n protected _reduceChatOpenAITools(\n tools: ChatOpenAIToolType[],\n fields: { stream?: boolean; strict?: boolean }\n ): ResponsesTool[] {\n const reducedTools: ResponsesTool[] = [];\n for (const tool of tools) {\n if (isBuiltInTool(tool)) {\n if (tool.type === \"image_generation\" && fields?.stream) {\n // OpenAI sends a 400 error if partial_images is not set and we want to stream.\n // We also set it to 1 since we don't support partial images yet.\n tool.partial_images = 1;\n }\n reducedTools.push(tool);\n } else if (isCustomTool(tool)) {\n const customToolData = tool.metadata.customTool;\n reducedTools.push({\n type: \"custom\",\n name: customToolData.name,\n description: customToolData.description,\n format: customToolData.format,\n } as ResponsesTool);\n } else if (isOpenAIFunctionTool(tool)) {\n const extra: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(tool)) {\n if (k !== \"type\" && k !== \"function\") {\n extra[k] = v;\n }\n }\n reducedTools.push({\n type: \"function\",\n name: tool.function.name,\n parameters: tool.function.parameters,\n description: tool.function.description,\n strict: fields?.strict ?? null,\n ...extra,\n });\n } else if (isOpenAICustomTool(tool)) {\n reducedTools.push(convertCompletionsCustomTool(tool));\n }\n }\n return reducedTools;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responses.js","names":["isOpenAIFunctionTool"],"sources":["../../src/chat_models/responses.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { CallbackManagerForLLMRun } from \"@langchain/core/callbacks/manager\";\nimport type { ChatModelStreamEvent } from \"@langchain/core/language_models/event\";\nimport type { ModelProfile } from \"@langchain/core/language_models/profile\";\nimport { AIMessage, type BaseMessage } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk, type ChatResult } from \"@langchain/core/outputs\";\nimport { isOpenAITool as isOpenAIFunctionTool } from \"@langchain/core/language_models/base\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\nimport {\n ChatOpenAIToolType,\n convertCompletionsCustomTool,\n formatToOpenAIToolChoice,\n isBuiltInTool,\n isBuiltInToolChoice,\n isCustomTool,\n isOpenAICustomTool,\n ResponsesTool,\n} from \"../utils/tools.js\";\nimport {\n BaseChatOpenAI,\n BaseChatOpenAICallOptions,\n BaseChatOpenAIFields,\n getChatOpenAIModelParams,\n} from \"./base.js\";\nimport {\n convertMessagesToResponsesInput,\n convertResponsesDeltaToChatGenerationChunk,\n convertResponsesMessageToAIMessage,\n} from \"../converters/responses.js\";\nimport { OpenAIVerbosityParam } from \"../types.js\";\nimport { convertOpenAIResponsesStream } from \"../utils/responses_stream_events.js\";\nimport { normalizePromptCacheRetention } from \"../utils/misc.js\";\nimport { withoutFileMimeTypesUnlessSupported } from \"../utils/file_mime_types.js\";\n\nexport interface ChatOpenAIResponsesCallOptions extends BaseChatOpenAICallOptions {\n /**\n * Configuration options for a text response from the model. Can be plain text or\n * structured JSON data.\n */\n text?: OpenAIClient.Responses.ResponseCreateParams[\"text\"];\n\n /**\n * The truncation strategy to use for the model response.\n */\n truncation?: OpenAIClient.Responses.ResponseCreateParams[\"truncation\"];\n\n /**\n * Specify additional output data to include in the model response.\n */\n include?: OpenAIClient.Responses.ResponseCreateParams[\"include\"];\n\n /**\n * The unique ID of the previous response to the model. Use this to create multi-turn\n * conversations.\n */\n previous_response_id?: OpenAIClient.Responses.ResponseCreateParams[\"previous_response_id\"];\n\n /**\n * The verbosity of the model's response.\n */\n verbosity?: OpenAIVerbosityParam;\n}\n\nexport type ChatResponsesInvocationParams = Omit<\n OpenAIClient.Responses.ResponseCreateParams,\n \"input\"\n>;\n\n/**\n * OpenAI Responses API implementation.\n *\n * Will be exported in a later version of @langchain/openai.\n *\n * @internal\n */\nexport class ChatOpenAIResponses<\n CallOptions extends ChatOpenAIResponsesCallOptions =\n ChatOpenAIResponsesCallOptions,\n> extends BaseChatOpenAI<CallOptions> {\n constructor(model: string, fields?: Omit<BaseChatOpenAIFields, \"model\">);\n constructor(fields?: BaseChatOpenAIFields);\n constructor(\n modelOrFields?: string | BaseChatOpenAIFields,\n fieldsArg?: Omit<BaseChatOpenAIFields, \"model\">\n ) {\n super(getChatOpenAIModelParams(modelOrFields, fieldsArg));\n }\n\n override get profile(): ModelProfile {\n return withoutFileMimeTypesUnlessSupported(super.profile, true);\n }\n\n override invocationParams(\n options?: this[\"ParsedCallOptions\"]\n ): ChatResponsesInvocationParams {\n let strict: boolean | undefined;\n if (options?.strict !== undefined) {\n strict = options.strict;\n }\n if (strict === undefined && this.supportsStrictToolCalling !== undefined) {\n strict = this.supportsStrictToolCalling;\n }\n\n const params: ChatResponsesInvocationParams = {\n model: this.model,\n temperature: this.temperature,\n top_p: this.topP,\n user: this.user,\n service_tier: this.service_tier,\n\n // if include_usage is set or streamUsage then stream must be set to true.\n stream: this.streaming,\n previous_response_id: options?.previous_response_id,\n truncation: options?.truncation,\n include: options?.include,\n tools: options?.tools?.length\n ? this._reduceChatOpenAITools(options.tools, {\n stream: this.streaming,\n strict,\n })\n : undefined,\n tool_choice: isBuiltInToolChoice(options?.tool_choice)\n ? options?.tool_choice\n : (() => {\n const formatted = formatToOpenAIToolChoice(options?.tool_choice);\n if (typeof formatted === \"object\" && \"type\" in formatted) {\n if (formatted.type === \"function\") {\n return { type: \"function\", name: formatted.function.name };\n } else if (formatted.type === \"allowed_tools\") {\n return {\n type: \"allowed_tools\",\n mode: formatted.allowed_tools.mode,\n tools: formatted.allowed_tools.tools,\n };\n } else if (formatted.type === \"custom\") {\n return {\n type: \"custom\",\n name: formatted.custom.name,\n };\n }\n }\n return undefined;\n })(),\n text: (() => {\n if (options?.text) return options.text;\n const format = this._getResponseFormat(options?.response_format);\n if (format?.type === \"json_schema\") {\n if (format.json_schema.schema != null) {\n return {\n format: {\n type: \"json_schema\",\n schema: format.json_schema.schema,\n description: format.json_schema.description,\n name: format.json_schema.name,\n strict: format.json_schema.strict,\n },\n verbosity: options?.verbosity,\n };\n }\n return undefined;\n }\n return { format, verbosity: options?.verbosity };\n })(),\n parallel_tool_calls: options?.parallel_tool_calls,\n max_output_tokens: this.maxTokens === -1 ? undefined : this.maxTokens,\n ...(this.zdrEnabled ? { store: false } : {}),\n ...this.modelKwargs,\n prompt_cache_key:\n options?.promptCacheKey ??\n this.modelKwargs?.prompt_cache_key ??\n this.promptCacheKey,\n prompt_cache_retention: normalizePromptCacheRetention(\n options?.promptCacheRetention ??\n this.modelKwargs?.prompt_cache_retention ??\n this.promptCacheRetention\n ),\n prompt_cache_options:\n options?.promptCacheOptions ??\n this.modelKwargs?.prompt_cache_options ??\n this.promptCacheOptions,\n };\n\n const reasoning = this._getReasoningParams(options);\n\n if (reasoning !== undefined) {\n params.reasoning = reasoning;\n }\n\n return params;\n }\n\n async _generate(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): Promise<ChatResult> {\n options.signal?.throwIfAborted();\n const invocationParams = this.invocationParams(options);\n if (invocationParams.stream) {\n const stream = this._streamResponseChunks(messages, options, runManager);\n let finalChunk: ChatGenerationChunk | undefined;\n for await (const chunk of stream) {\n chunk.message.response_metadata = {\n ...chunk.generationInfo,\n ...chunk.message.response_metadata,\n };\n finalChunk = finalChunk?.concat(chunk) ?? chunk;\n }\n\n return {\n generations: finalChunk ? [finalChunk] : [],\n llmOutput: {\n estimatedTokenUsage: (finalChunk?.message as AIMessage | undefined)\n ?.usage_metadata,\n },\n };\n } else {\n const data = await this.completionWithRetry(\n {\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n ...invocationParams,\n stream: false,\n },\n {\n signal: options?.signal,\n maxRetries: options?.maxRetries,\n ...options?.options,\n }\n );\n\n return {\n generations: [\n {\n text: data.output_text,\n message: convertResponsesMessageToAIMessage(data),\n },\n ],\n llmOutput: {\n id: data.id,\n estimatedTokenUsage: data.usage\n ? {\n promptTokens: data.usage.input_tokens,\n completionTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n },\n };\n }\n }\n\n async *_streamChatModelEvents(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n _runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatModelStreamEvent> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n const abortableStream = async function* (\n source: AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>,\n signal?: AbortSignal\n ) {\n for await (const data of source) {\n if (signal?.aborted) {\n return;\n }\n yield data;\n }\n };\n\n yield* convertOpenAIResponsesStream(\n abortableStream(streamIterable, options.signal),\n {\n streamUsage: shouldStreamUsage ?? true,\n provider: this.streamEventProvider,\n }\n );\n }\n\n /** Provider id used in native stream protocol passthrough events. */\n protected get streamEventProvider(): string {\n return \"openai\";\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this[\"ParsedCallOptions\"],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const streamIterable = await this.completionWithRetry(\n {\n ...this.invocationParams(options),\n input: convertMessagesToResponsesInput({\n messages,\n zdrEnabled: this.zdrEnabled ?? false,\n model: this.model,\n }),\n stream: true,\n },\n options\n );\n\n try {\n for await (const data of streamIterable) {\n if (options.signal?.aborted) {\n return;\n }\n const chunk = convertResponsesDeltaToChatGenerationChunk(data);\n if (chunk == null) continue;\n yield chunk;\n await runManager?.handleLLMNewToken(\n chunk.text || \"\",\n {\n prompt: options.promptIndex ?? 0,\n completion: 0,\n },\n undefined,\n undefined,\n undefined,\n { chunk }\n );\n }\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n }\n\n /**\n * Calls the Responses API with retry logic in case of failures.\n * @param request The request to send to the OpenAI API.\n * @param options Optional configuration for the API call.\n * @returns The response from the OpenAI API.\n */\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParamsNonStreaming,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<OpenAIClient.Responses.Response>;\n\n async completionWithRetry(\n request: OpenAIClient.Responses.ResponseCreateParams,\n requestOptions?: OpenAIClient.RequestOptions\n ): Promise<\n | AsyncIterable<OpenAIClient.Responses.ResponseStreamEvent>\n | OpenAIClient.Responses.Response\n > {\n // The SDK has its own `maxRetries`; take it for our caller instead so\n // the two retry loops don't multiply.\n const { maxRetries, ...sdkOptions } = requestOptions ?? {};\n const clientOptions = this._getClientOptions(sdkOptions);\n return this.caller.callWithOptions({ maxRetries }, async () => {\n try {\n // use parse if dealing with json_schema\n if (request.text?.format?.type === \"json_schema\" && !request.stream) {\n return await this.client.responses.parse(request, clientOptions);\n }\n return await this.client.responses.create(request, clientOptions);\n } catch (e) {\n const error = wrapOpenAIClientError(e);\n throw error;\n }\n });\n }\n\n /** @internal */\n protected _reduceChatOpenAITools(\n tools: ChatOpenAIToolType[],\n fields: { stream?: boolean; strict?: boolean }\n ): ResponsesTool[] {\n const reducedTools: ResponsesTool[] = [];\n for (const tool of tools) {\n if (isBuiltInTool(tool)) {\n if (tool.type === \"image_generation\" && fields?.stream) {\n // OpenAI sends a 400 error if partial_images is not set and we want to stream.\n // We also set it to 1 since we don't support partial images yet.\n tool.partial_images = 1;\n }\n reducedTools.push(tool);\n } else if (isCustomTool(tool)) {\n const customToolData = tool.metadata.customTool;\n reducedTools.push({\n type: \"custom\",\n name: customToolData.name,\n description: customToolData.description,\n format: customToolData.format,\n } as ResponsesTool);\n } else if (isOpenAIFunctionTool(tool)) {\n const extra: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(tool)) {\n if (k !== \"type\" && k !== \"function\") {\n extra[k] = v;\n }\n }\n reducedTools.push({\n type: \"function\",\n name: tool.function.name,\n parameters: tool.function.parameters,\n description: tool.function.description,\n strict: fields?.strict ?? null,\n ...extra,\n });\n } else if (isOpenAICustomTool(tool)) {\n reducedTools.push(convertCompletionsCustomTool(tool));\n }\n }\n return reducedTools;\n }\n}\n"],"mappings":"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"}
|
|
@@ -458,16 +458,16 @@ const convertStandardContentMessageToCompletionsMessage = ({ message, model }) =
|
|
|
458
458
|
if (role === "system" && require_misc.isReasoningModel(model)) role = "developer";
|
|
459
459
|
if (role === "developer") return {
|
|
460
460
|
role: "developer",
|
|
461
|
-
content: message.contentBlocks.filter((block) => block.type === "text")
|
|
461
|
+
content: message.contentBlocks.filter((block) => block.type === "text").map(require_misc.liftExtrasPromptCacheBreakpoint)
|
|
462
462
|
};
|
|
463
463
|
else if (role === "system") return {
|
|
464
464
|
role: "system",
|
|
465
|
-
content: message.contentBlocks.filter((block) => block.type === "text")
|
|
465
|
+
content: message.contentBlocks.filter((block) => block.type === "text").map(require_misc.liftExtrasPromptCacheBreakpoint)
|
|
466
466
|
};
|
|
467
467
|
else if (role === "assistant") {
|
|
468
468
|
const completionParam = {
|
|
469
469
|
role: "assistant",
|
|
470
|
-
content: message.contentBlocks.filter((block) => block.type === "text")
|
|
470
|
+
content: message.contentBlocks.filter((block) => block.type === "text").map(require_misc.liftExtrasPromptCacheBreakpoint)
|
|
471
471
|
};
|
|
472
472
|
if (_langchain_core_messages.AIMessage.isInstance(message) && !!message.tool_calls?.length) completionParam.tool_calls = message.tool_calls.map(_langchain_core_output_parsers_openai_tools.convertLangChainToolCallToOpenAI);
|
|
473
473
|
else if (message.additional_kwargs.tool_calls != null) completionParam.tool_calls = message.additional_kwargs.tool_calls;
|
|
@@ -476,7 +476,7 @@ const convertStandardContentMessageToCompletionsMessage = ({ message, model }) =
|
|
|
476
476
|
} else if (role === "tool" && _langchain_core_messages.ToolMessage.isInstance(message)) return {
|
|
477
477
|
role: "tool",
|
|
478
478
|
tool_call_id: message.tool_call_id,
|
|
479
|
-
content: message.contentBlocks.filter((block) => block.type === "text")
|
|
479
|
+
content: message.contentBlocks.filter((block) => block.type === "text").map(require_misc.liftExtrasPromptCacheBreakpoint)
|
|
480
480
|
};
|
|
481
481
|
else if (role === "function") return {
|
|
482
482
|
role: "function",
|
|
@@ -485,12 +485,12 @@ const convertStandardContentMessageToCompletionsMessage = ({ message, model }) =
|
|
|
485
485
|
};
|
|
486
486
|
function* iterateUserContent(blocks) {
|
|
487
487
|
for (const block of blocks) {
|
|
488
|
-
if (block.type === "text") yield {
|
|
488
|
+
if (block.type === "text") yield require_misc.applyPromptCacheBreakpoint(block, {
|
|
489
489
|
type: "text",
|
|
490
490
|
text: block.text
|
|
491
|
-
};
|
|
491
|
+
});
|
|
492
492
|
const data = convertStandardContentBlockToCompletionsContentPart(block);
|
|
493
|
-
if (data) yield data;
|
|
493
|
+
if (data) yield require_misc.applyPromptCacheBreakpoint(block, data);
|
|
494
494
|
}
|
|
495
495
|
}
|
|
496
496
|
return {
|
|
@@ -575,7 +575,8 @@ const convertMessagesToCompletionsMessageParams = ({ messages, model }) => {
|
|
|
575
575
|
let role = require_misc.messageToOpenAIRole(message);
|
|
576
576
|
if (role === "system" && require_misc.isReasoningModel(model)) role = "developer";
|
|
577
577
|
const content = typeof message.content === "string" ? message.content : message.content.flatMap((m) => {
|
|
578
|
-
if ((0, _langchain_core_messages.isDataContentBlock)(m)) return (0, _langchain_core_messages.convertToProviderContentBlock)(m, completionsApiContentBlockConverter);
|
|
578
|
+
if ((0, _langchain_core_messages.isDataContentBlock)(m)) return require_misc.applyPromptCacheBreakpoint(m, (0, _langchain_core_messages.convertToProviderContentBlock)(m, completionsApiContentBlockConverter));
|
|
579
|
+
if (m.type === "text") return require_misc.liftExtrasPromptCacheBreakpoint(m);
|
|
579
580
|
if (typeof m === "object" && m !== null && "type" in m && (m.type === "tool_use" || m.type === "tool_call" || m.type === "functionCall" || m.type === "reasoning" || m.type === "reasoning_content" || m.type === "thinking")) return [];
|
|
580
581
|
return m;
|
|
581
582
|
});
|