@langchain/openai 1.6.0 → 1.6.2
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 +17 -0
- package/dist/chat_models/base.cjs +1 -1
- package/dist/chat_models/base.d.cts +1 -1
- package/dist/chat_models/base.js +1 -1
- package/dist/chat_models/completions.cjs +4 -0
- 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 +4 -0
- package/dist/chat_models/completions.js.map +1 -1
- package/dist/chat_models/index.cjs +4 -0
- package/dist/chat_models/index.cjs.map +1 -1
- package/dist/chat_models/index.d.cts +2 -0
- package/dist/chat_models/index.d.cts.map +1 -1
- package/dist/chat_models/index.d.ts +2 -0
- package/dist/chat_models/index.d.ts.map +1 -1
- package/dist/chat_models/index.js +4 -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 +4 -0
- 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 +4 -0
- package/dist/chat_models/responses.js.map +1 -1
- package/dist/converters/completions.cjs +4 -1
- 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 +5 -2
- package/dist/converters/completions.js.map +1 -1
- package/dist/converters/responses.cjs +41 -11
- 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 +42 -12
- package/dist/converters/responses.js.map +1 -1
- package/dist/llms.cjs +1 -1
- package/dist/llms.js +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 +26 -0
- package/dist/utils/misc.cjs.map +1 -1
- package/dist/utils/misc.d.cts.map +1 -1
- package/dist/utils/misc.d.ts.map +1 -1
- package/dist/utils/misc.js +26 -2
- package/dist/utils/misc.js.map +1 -1
- package/package.json +4 -4
package/dist/utils/misc.js
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
import { ChatMessage } from "@langchain/core/messages";
|
|
1
|
+
import { AIMessage, ChatMessage, SystemMessage } from "@langchain/core/messages";
|
|
2
2
|
//#region src/utils/misc.ts
|
|
3
3
|
const iife$1 = (fn) => fn();
|
|
4
|
+
/**
|
|
5
|
+
* Returns the provider payload a content block carries: the `value` of a
|
|
6
|
+
* `non_standard` wrapper, or the block itself.
|
|
7
|
+
*/
|
|
8
|
+
function unwrapNonStandard(block) {
|
|
9
|
+
if (block.type === "non_standard" && typeof block.value === "object" && block.value !== null) return block.value;
|
|
10
|
+
return block;
|
|
11
|
+
}
|
|
12
|
+
const ADDITIONAL_TOOLS_PLACEMENT_ERROR = "`additional_tools` must be carried on a `SystemMessage`. OpenAI restricts the input item to `role: \"developer\"`, so it cannot be sent on any other message.";
|
|
13
|
+
const ADDITIONAL_TOOLS_TRANSPORT_ERROR = "`additional_tools` requires the Responses API and cannot be sent via Chat Completions. Set `useResponsesApi: true`.";
|
|
14
|
+
/**
|
|
15
|
+
* Throws if `message` carries an `additional_tools` block, in either spelling,
|
|
16
|
+
* that cannot reach the wire.
|
|
17
|
+
*
|
|
18
|
+
* OpenAI takes `additional_tools` only as a Responses API input item with
|
|
19
|
+
* `role: "developer"`, so only a `SystemMessage` sent via the Responses API
|
|
20
|
+
* can carry it. Assistant messages are exempt: their content is replayed model
|
|
21
|
+
* output, not an instruction from the caller.
|
|
22
|
+
*/
|
|
23
|
+
function assertAdditionalToolsPlacement(message, api) {
|
|
24
|
+
if (AIMessage.isInstance(message) || !Array.isArray(message.content) || !message.content.some((block) => unwrapNonStandard(block).type === "additional_tools")) return;
|
|
25
|
+
if (!SystemMessage.isInstance(message)) throw new Error(ADDITIONAL_TOOLS_PLACEMENT_ERROR);
|
|
26
|
+
if (api === "chat/completions") throw new Error(ADDITIONAL_TOOLS_TRANSPORT_ERROR);
|
|
27
|
+
}
|
|
4
28
|
function normalizePromptCacheRetention(retention) {
|
|
5
29
|
return retention === "in-memory" ? "in_memory" : retention;
|
|
6
30
|
}
|
|
@@ -71,6 +95,6 @@ function _modelPrefersResponsesAPI(model) {
|
|
|
71
95
|
return false;
|
|
72
96
|
}
|
|
73
97
|
//#endregion
|
|
74
|
-
export { LC_AUTOGENERATED_FILENAME, _modelPrefersResponsesAPI, applyPromptCacheBreakpoint, extractGenericMessageCustomRole, getFilenameFromMetadata, getRequiredFilenameFromMetadata, hasExtrasPromptCacheBreakpoint, iife$1 as iife, isReasoningModel, liftExtrasPromptCacheBreakpoint, messageToOpenAIRole, normalizePromptCacheRetention };
|
|
98
|
+
export { LC_AUTOGENERATED_FILENAME, _modelPrefersResponsesAPI, applyPromptCacheBreakpoint, assertAdditionalToolsPlacement, extractGenericMessageCustomRole, getFilenameFromMetadata, getRequiredFilenameFromMetadata, hasExtrasPromptCacheBreakpoint, iife$1 as iife, isReasoningModel, liftExtrasPromptCacheBreakpoint, messageToOpenAIRole, normalizePromptCacheRetention, unwrapNonStandard };
|
|
75
99
|
|
|
76
100
|
//# sourceMappingURL=misc.js.map
|
package/dist/utils/misc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","names":["iife"],"sources":["../../src/utils/misc.ts"],"sourcesContent":["import type { OpenAI as OpenAIClient } from \"openai\";\nimport type { OpenAICacheRetentionParam } from \"../types.js\";\nimport {\n BaseMessage,\n ChatMessage,\n ContentBlock,\n Data,\n} from \"@langchain/core/messages\";\n\nexport const iife = <T>(fn: () => T) => fn();\n\nexport function normalizePromptCacheRetention(\n retention: OpenAICacheRetentionParam | undefined\n): Exclude<OpenAICacheRetentionParam, \"in-memory\"> | undefined {\n return retention === \"in-memory\" ? \"in_memory\" : retention;\n}\n\nexport function applyPromptCacheBreakpoint<T extends object>(\n source: Record<string, unknown>,\n target: T\n): T {\n if (\"prompt_cache_breakpoint\" in source) {\n return {\n ...target,\n prompt_cache_breakpoint: source.prompt_cache_breakpoint,\n };\n }\n if (hasExtrasPromptCacheBreakpoint(source)) {\n return {\n ...target,\n prompt_cache_breakpoint: source.extras.prompt_cache_breakpoint,\n };\n }\n return target;\n}\n\nexport function hasExtrasPromptCacheBreakpoint(\n block: Record<string, unknown>\n): block is { extras: { prompt_cache_breakpoint: unknown } } {\n const { extras } = block;\n return (\n typeof extras === \"object\" &&\n extras !== null &&\n \"prompt_cache_breakpoint\" in extras\n );\n}\n\nexport function liftExtrasPromptCacheBreakpoint<T extends object>(block: T): T {\n const source = block as Record<string, unknown>;\n if (!hasExtrasPromptCacheBreakpoint(source)) {\n return block;\n }\n const { extras: _extras, ...rest } = source;\n return applyPromptCacheBreakpoint(source, rest) as T;\n}\n\nexport function isReasoningModel(model?: string) {\n if (!model) return false;\n if (/^o\\d/.test(model ?? \"\")) return true;\n if (model.startsWith(\"gpt-5\") && !model.startsWith(\"gpt-5-chat\")) return true;\n if (model.startsWith(\"gpt-6\") && !model.startsWith(\"gpt-6-chat\")) return true;\n return false;\n}\n\nexport function extractGenericMessageCustomRole(message: ChatMessage) {\n if (\n message.role !== \"system\" &&\n message.role !== \"developer\" &&\n message.role !== \"assistant\" &&\n message.role !== \"user\" &&\n message.role !== \"function\" &&\n message.role !== \"tool\"\n ) {\n console.warn(`Unknown message role: ${message.role}`);\n }\n\n return message.role as OpenAIClient.ChatCompletionRole;\n}\n\nexport function getFilenameFromMetadata(\n block:\n | ContentBlock.Multimodal.File\n | ContentBlock.Multimodal.Video\n | Data.StandardFileBlock\n): string | undefined {\n return (block.metadata?.filename ??\n block.metadata?.name ??\n block.metadata?.title) as string;\n}\n\nexport const LC_AUTOGENERATED_FILENAME = \"LC_AUTOGENERATED\";\n\nexport function getRequiredFilenameFromMetadata(\n block:\n | ContentBlock.Multimodal.File\n | ContentBlock.Multimodal.Video\n | Data.StandardFileBlock\n): string {\n const filename = (block.metadata?.filename ??\n block.metadata?.name ??\n block.metadata?.title) as string;\n\n if (!filename) {\n console.warn(\n \"OpenAI may require a filename for file uploads. Specify a filename \" +\n \"in the content block metadata, e.g.: { type: 'file', mimeType: \" +\n \"'...', data: '...', metadata: { filename: 'my-file.pdf' } }. \" +\n \"Using placeholder filename 'LC_AUTOGENERATED'.\"\n );\n return LC_AUTOGENERATED_FILENAME;\n }\n\n return filename;\n}\nexport function messageToOpenAIRole(\n message: BaseMessage\n): OpenAIClient.ChatCompletionRole {\n const type = message._getType();\n switch (type) {\n case \"system\":\n return \"system\";\n case \"ai\":\n return \"assistant\";\n case \"human\":\n return \"user\";\n case \"function\":\n return \"function\";\n case \"tool\":\n return \"tool\";\n case \"generic\": {\n if (!ChatMessage.isInstance(message))\n throw new Error(\"Invalid generic chat message\");\n return extractGenericMessageCustomRole(message);\n }\n default:\n throw new Error(`Unknown message type: ${type}`);\n }\n}\n\nexport function _modelPrefersResponsesAPI(model: string): boolean {\n if (model.includes(\"gpt-5.2-pro\")) return true;\n if (model.includes(\"gpt-5.4-pro\")) return true;\n if (model.includes(\"gpt-5.5-pro\")) return true;\n if (model.includes(\"gpt-5.6\")) return true;\n // Codex models are Responses API only\n if (model.includes(\"codex\")) return true;\n return false;\n}\n"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"misc.js","names":["iife"],"sources":["../../src/utils/misc.ts"],"sourcesContent":["import type { OpenAI as OpenAIClient } from \"openai\";\nimport type { OpenAICacheRetentionParam } from \"../types.js\";\nimport {\n AIMessage,\n BaseMessage,\n ChatMessage,\n ContentBlock,\n Data,\n SystemMessage,\n} from \"@langchain/core/messages\";\n\nexport const iife = <T>(fn: () => T) => fn();\n\n/**\n * Returns the provider payload a content block carries: the `value` of a\n * `non_standard` wrapper, or the block itself.\n */\nexport function unwrapNonStandard(block: ContentBlock): ContentBlock {\n if (\n block.type === \"non_standard\" &&\n typeof block.value === \"object\" &&\n block.value !== null\n ) {\n return block.value as ContentBlock;\n }\n return block;\n}\n\nconst ADDITIONAL_TOOLS_PLACEMENT_ERROR =\n \"`additional_tools` must be carried on a `SystemMessage`. OpenAI restricts \" +\n 'the input item to `role: \"developer\"`, so it cannot be sent on any other ' +\n \"message.\";\n\nconst ADDITIONAL_TOOLS_TRANSPORT_ERROR =\n \"`additional_tools` requires the Responses API and cannot be sent via Chat \" +\n \"Completions. Set `useResponsesApi: true`.\";\n\n/**\n * Throws if `message` carries an `additional_tools` block, in either spelling,\n * that cannot reach the wire.\n *\n * OpenAI takes `additional_tools` only as a Responses API input item with\n * `role: \"developer\"`, so only a `SystemMessage` sent via the Responses API\n * can carry it. Assistant messages are exempt: their content is replayed model\n * output, not an instruction from the caller.\n */\nexport function assertAdditionalToolsPlacement(\n message: BaseMessage,\n api: \"responses\" | \"chat/completions\"\n): void {\n if (\n AIMessage.isInstance(message) ||\n !Array.isArray(message.content) ||\n !message.content.some(\n (block) => unwrapNonStandard(block).type === \"additional_tools\"\n )\n ) {\n return;\n }\n if (!SystemMessage.isInstance(message)) {\n throw new Error(ADDITIONAL_TOOLS_PLACEMENT_ERROR);\n }\n if (api === \"chat/completions\") {\n throw new Error(ADDITIONAL_TOOLS_TRANSPORT_ERROR);\n }\n}\n\nexport function normalizePromptCacheRetention(\n retention: OpenAICacheRetentionParam | undefined\n): Exclude<OpenAICacheRetentionParam, \"in-memory\"> | undefined {\n return retention === \"in-memory\" ? \"in_memory\" : retention;\n}\n\nexport function applyPromptCacheBreakpoint<T extends object>(\n source: Record<string, unknown>,\n target: T\n): T {\n if (\"prompt_cache_breakpoint\" in source) {\n return {\n ...target,\n prompt_cache_breakpoint: source.prompt_cache_breakpoint,\n };\n }\n if (hasExtrasPromptCacheBreakpoint(source)) {\n return {\n ...target,\n prompt_cache_breakpoint: source.extras.prompt_cache_breakpoint,\n };\n }\n return target;\n}\n\nexport function hasExtrasPromptCacheBreakpoint(\n block: Record<string, unknown>\n): block is { extras: { prompt_cache_breakpoint: unknown } } {\n const { extras } = block;\n return (\n typeof extras === \"object\" &&\n extras !== null &&\n \"prompt_cache_breakpoint\" in extras\n );\n}\n\nexport function liftExtrasPromptCacheBreakpoint<T extends object>(block: T): T {\n const source = block as Record<string, unknown>;\n if (!hasExtrasPromptCacheBreakpoint(source)) {\n return block;\n }\n const { extras: _extras, ...rest } = source;\n return applyPromptCacheBreakpoint(source, rest) as T;\n}\n\nexport function isReasoningModel(model?: string) {\n if (!model) return false;\n if (/^o\\d/.test(model ?? \"\")) return true;\n if (model.startsWith(\"gpt-5\") && !model.startsWith(\"gpt-5-chat\")) return true;\n if (model.startsWith(\"gpt-6\") && !model.startsWith(\"gpt-6-chat\")) return true;\n return false;\n}\n\nexport function extractGenericMessageCustomRole(message: ChatMessage) {\n if (\n message.role !== \"system\" &&\n message.role !== \"developer\" &&\n message.role !== \"assistant\" &&\n message.role !== \"user\" &&\n message.role !== \"function\" &&\n message.role !== \"tool\"\n ) {\n console.warn(`Unknown message role: ${message.role}`);\n }\n\n return message.role as OpenAIClient.ChatCompletionRole;\n}\n\nexport function getFilenameFromMetadata(\n block:\n | ContentBlock.Multimodal.File\n | ContentBlock.Multimodal.Video\n | Data.StandardFileBlock\n): string | undefined {\n return (block.metadata?.filename ??\n block.metadata?.name ??\n block.metadata?.title) as string;\n}\n\nexport const LC_AUTOGENERATED_FILENAME = \"LC_AUTOGENERATED\";\n\nexport function getRequiredFilenameFromMetadata(\n block:\n | ContentBlock.Multimodal.File\n | ContentBlock.Multimodal.Video\n | Data.StandardFileBlock\n): string {\n const filename = (block.metadata?.filename ??\n block.metadata?.name ??\n block.metadata?.title) as string;\n\n if (!filename) {\n console.warn(\n \"OpenAI may require a filename for file uploads. Specify a filename \" +\n \"in the content block metadata, e.g.: { type: 'file', mimeType: \" +\n \"'...', data: '...', metadata: { filename: 'my-file.pdf' } }. \" +\n \"Using placeholder filename 'LC_AUTOGENERATED'.\"\n );\n return LC_AUTOGENERATED_FILENAME;\n }\n\n return filename;\n}\nexport function messageToOpenAIRole(\n message: BaseMessage\n): OpenAIClient.ChatCompletionRole {\n const type = message._getType();\n switch (type) {\n case \"system\":\n return \"system\";\n case \"ai\":\n return \"assistant\";\n case \"human\":\n return \"user\";\n case \"function\":\n return \"function\";\n case \"tool\":\n return \"tool\";\n case \"generic\": {\n if (!ChatMessage.isInstance(message))\n throw new Error(\"Invalid generic chat message\");\n return extractGenericMessageCustomRole(message);\n }\n default:\n throw new Error(`Unknown message type: ${type}`);\n }\n}\n\nexport function _modelPrefersResponsesAPI(model: string): boolean {\n if (model.includes(\"gpt-5.2-pro\")) return true;\n if (model.includes(\"gpt-5.4-pro\")) return true;\n if (model.includes(\"gpt-5.5-pro\")) return true;\n if (model.includes(\"gpt-5.6\")) return true;\n // Codex models are Responses API only\n if (model.includes(\"codex\")) return true;\n return false;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langchain/openai",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "OpenAI integrations for LangChain.js",
|
|
5
5
|
"author": "LangChain",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"zod": "^3.25.76 || ^4"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
|
-
"@langchain/core": "^1.2.
|
|
22
|
+
"@langchain/core": "^1.2.14"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@azure/identity": "^4.13.2",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"typescript": "~7.0.2",
|
|
34
34
|
"vitest": "^4.1.11",
|
|
35
35
|
"zod-to-json-schema": "^3.25.2",
|
|
36
|
-
"@langchain/
|
|
36
|
+
"@langchain/tsconfig": "0.0.1",
|
|
37
37
|
"@langchain/standard-tests": "0.0.23",
|
|
38
|
-
"@langchain/
|
|
38
|
+
"@langchain/core": "^1.2.14"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|