@librechat/agents 2.4.15 → 2.4.17
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/dist/cjs/llm/anthropic/{llm.cjs → index.cjs} +19 -8
- package/dist/cjs/llm/anthropic/index.cjs.map +1 -0
- package/dist/cjs/llm/openai/index.cjs +197 -0
- package/dist/cjs/llm/openai/index.cjs.map +1 -0
- package/dist/cjs/llm/openrouter/{llm.cjs → index.cjs} +4 -4
- package/dist/cjs/llm/openrouter/index.cjs.map +1 -0
- package/dist/cjs/llm/providers.cjs +9 -11
- package/dist/cjs/llm/providers.cjs.map +1 -1
- package/dist/cjs/main.cjs +2 -0
- package/dist/cjs/main.cjs.map +1 -1
- package/dist/esm/graphs/Graph.mjs +2 -2
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/anthropic/{llm.mjs → index.mjs} +19 -8
- package/dist/esm/llm/anthropic/index.mjs.map +1 -0
- package/dist/esm/llm/openai/index.mjs +190 -0
- package/dist/esm/llm/openai/index.mjs.map +1 -0
- package/dist/esm/llm/openrouter/{llm.mjs → index.mjs} +3 -3
- package/dist/esm/llm/openrouter/index.mjs.map +1 -0
- package/dist/esm/llm/providers.mjs +3 -5
- package/dist/esm/llm/providers.mjs.map +1 -1
- package/dist/esm/main.mjs +1 -0
- package/dist/esm/main.mjs.map +1 -1
- package/dist/esm/run.mjs +2 -2
- package/dist/esm/run.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/llm/openai/index.d.ts +23 -0
- package/dist/types/llm/openrouter/{llm.d.ts → index.d.ts} +2 -2
- package/dist/types/types/llm.d.ts +5 -7
- package/package.json +2 -2
- package/src/index.ts +4 -1
- package/src/llm/anthropic/{llm.ts → index.ts} +62 -19
- package/src/llm/openai/index.ts +233 -0
- package/src/llm/openrouter/{llm.ts → index.ts} +27 -13
- package/src/llm/providers.ts +8 -5
- package/src/types/llm.ts +11 -11
- package/src/utils/llmConfig.ts +1 -1
- package/dist/cjs/llm/anthropic/llm.cjs.map +0 -1
- package/dist/cjs/llm/openrouter/llm.cjs.map +0 -1
- package/dist/esm/llm/anthropic/llm.mjs.map +0 -1
- package/dist/esm/llm/openrouter/llm.mjs.map +0 -1
- /package/dist/types/llm/anthropic/{llm.d.ts → index.d.ts} +0 -0
|
@@ -62,13 +62,19 @@ function cloneChunk(text, tokenType, chunk) {
|
|
|
62
62
|
}
|
|
63
63
|
const content = chunk.content[0];
|
|
64
64
|
if (tokenType === 'content' && content.type === 'text') {
|
|
65
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
65
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
66
|
+
content: [Object.assign({}, content, { text })],
|
|
67
|
+
}));
|
|
66
68
|
}
|
|
67
69
|
else if (tokenType === 'content' && content.type === 'text_delta') {
|
|
68
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
70
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
71
|
+
content: [Object.assign({}, content, { text })],
|
|
72
|
+
}));
|
|
69
73
|
}
|
|
70
74
|
else if (tokenType === 'content' && content.type?.startsWith('thinking')) {
|
|
71
|
-
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
75
|
+
return new messages.AIMessageChunk(Object.assign({}, chunk, {
|
|
76
|
+
content: [Object.assign({}, content, { thinking: text })],
|
|
77
|
+
}));
|
|
72
78
|
}
|
|
73
79
|
return chunk;
|
|
74
80
|
}
|
|
@@ -90,7 +96,7 @@ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
|
90
96
|
if (this.emitted_usage === true) {
|
|
91
97
|
return;
|
|
92
98
|
}
|
|
93
|
-
const inputUsage =
|
|
99
|
+
const inputUsage = this.message_start?.message.usage;
|
|
94
100
|
const outputUsage = this.message_delta?.usage;
|
|
95
101
|
if (!outputUsage) {
|
|
96
102
|
return;
|
|
@@ -100,7 +106,8 @@ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
|
100
106
|
output_tokens: outputUsage.output_tokens ?? 0,
|
|
101
107
|
total_tokens: (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),
|
|
102
108
|
};
|
|
103
|
-
if (inputUsage?.cache_creation_input_tokens != null ||
|
|
109
|
+
if (inputUsage?.cache_creation_input_tokens != null ||
|
|
110
|
+
inputUsage?.cache_read_input_tokens != null) {
|
|
104
111
|
totalUsage.input_token_details = {
|
|
105
112
|
cache_creation: inputUsage.cache_creation_input_tokens ?? 0,
|
|
106
113
|
cache_read: inputUsage.cache_read_input_tokens ?? 0,
|
|
@@ -116,7 +123,9 @@ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
|
116
123
|
this.tools_in_params = undefined;
|
|
117
124
|
}
|
|
118
125
|
createGenerationChunk({ token, chunk, usageMetadata, shouldStreamUsage, }) {
|
|
119
|
-
const usage_metadata = shouldStreamUsage
|
|
126
|
+
const usage_metadata = shouldStreamUsage
|
|
127
|
+
? (usageMetadata ?? chunk.usage_metadata)
|
|
128
|
+
: undefined;
|
|
120
129
|
return new outputs.ChatGenerationChunk({
|
|
121
130
|
message: new messages.AIMessageChunk({
|
|
122
131
|
// Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().
|
|
@@ -170,7 +179,9 @@ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
|
170
179
|
continue;
|
|
171
180
|
const { chunk } = result;
|
|
172
181
|
const [token = '', tokenType] = extractToken(chunk);
|
|
173
|
-
if (!tokenType ||
|
|
182
|
+
if (!tokenType ||
|
|
183
|
+
tokenType === 'input' ||
|
|
184
|
+
(token === '' && usageMetadata)) {
|
|
174
185
|
const generationChunk = this.createGenerationChunk({
|
|
175
186
|
token,
|
|
176
187
|
chunk,
|
|
@@ -214,4 +225,4 @@ class CustomAnthropic extends anthropic.ChatAnthropicMessages {
|
|
|
214
225
|
}
|
|
215
226
|
|
|
216
227
|
exports.CustomAnthropic = CustomAnthropic;
|
|
217
|
-
//# sourceMappingURL=
|
|
228
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/llm/anthropic/index.ts"],"sourcesContent":["import { AIMessageChunk } from '@langchain/core/messages';\nimport { ChatAnthropicMessages } from '@langchain/anthropic';\nimport { ChatGenerationChunk } from '@langchain/core/outputs';\nimport type { BaseChatModelParams } from '@langchain/core/language_models/chat_models';\nimport type {\n BaseMessage,\n MessageContentComplex,\n} from '@langchain/core/messages';\nimport type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';\nimport type { AnthropicInput } from '@langchain/anthropic';\nimport type {\n AnthropicMessageCreateParams,\n AnthropicStreamingMessageCreateParams,\n AnthropicStreamUsage,\n AnthropicMessageStartEvent,\n AnthropicMessageDeltaEvent,\n} from '@/llm/anthropic/types';\nimport { _makeMessageChunkFromAnthropicEvent } from './utils/message_outputs';\nimport { _convertMessagesToAnthropicPayload } from './utils/message_inputs';\nimport { TextStream } from '@/llm/text';\n\nfunction _toolsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.tools && params.tools.length > 0);\n}\nfunction _documentsInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n for (const message of params.messages ?? []) {\n if (typeof message.content === 'string') {\n continue;\n }\n for (const block of message.content ?? []) {\n if (\n typeof block === 'object' &&\n block != null &&\n block.type === 'document' &&\n typeof block.citations === 'object' &&\n block.citations.enabled\n ) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction _thinkingInParams(\n params: AnthropicMessageCreateParams | AnthropicStreamingMessageCreateParams\n): boolean {\n return !!(params.thinking && params.thinking.type === 'enabled');\n}\n\nfunction extractToken(\n chunk: AIMessageChunk\n): [string, 'string' | 'input' | 'content'] | [undefined] {\n if (typeof chunk.content === 'string') {\n return [chunk.content, 'string'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'input' in chunk.content[0]\n ) {\n return typeof chunk.content[0].input === 'string'\n ? [chunk.content[0].input, 'input']\n : [JSON.stringify(chunk.content[0].input), 'input'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'text' in chunk.content[0]\n ) {\n return [chunk.content[0].text, 'content'];\n } else if (\n Array.isArray(chunk.content) &&\n chunk.content.length >= 1 &&\n 'thinking' in chunk.content[0]\n ) {\n return [chunk.content[0].thinking, 'content'];\n }\n return [undefined];\n}\n\nfunction cloneChunk(\n text: string,\n tokenType: string,\n chunk: AIMessageChunk\n): AIMessageChunk {\n if (tokenType === 'string') {\n return new AIMessageChunk(Object.assign({}, chunk, { content: text }));\n } else if (tokenType === 'input') {\n return chunk;\n }\n const content = chunk.content[0] as MessageContentComplex;\n if (tokenType === 'content' && content.type === 'text') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type === 'text_delta') {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { text })],\n })\n );\n } else if (tokenType === 'content' && content.type?.startsWith('thinking')) {\n return new AIMessageChunk(\n Object.assign({}, chunk, {\n content: [Object.assign({}, content, { thinking: text })],\n })\n );\n }\n\n return chunk;\n}\n\nexport type CustomAnthropicInput = AnthropicInput & {\n _lc_stream_delay?: number;\n} & BaseChatModelParams;\n\nexport class CustomAnthropic extends ChatAnthropicMessages {\n _lc_stream_delay: number;\n private message_start: AnthropicMessageStartEvent | undefined;\n private message_delta: AnthropicMessageDeltaEvent | undefined;\n private tools_in_params?: boolean;\n private emitted_usage?: boolean;\n constructor(fields?: CustomAnthropicInput) {\n super(fields);\n this._lc_stream_delay = fields?._lc_stream_delay ?? 25;\n }\n\n /**\n * Get stream usage as returned by this client's API response.\n * @returns {AnthropicStreamUsage} The stream usage object.\n */\n getStreamUsage(): AnthropicStreamUsage | undefined {\n if (this.emitted_usage === true) {\n return;\n }\n const inputUsage = this.message_start?.message.usage as\n | undefined\n | AnthropicStreamUsage;\n const outputUsage = this.message_delta?.usage as\n | undefined\n | Partial<AnthropicStreamUsage>;\n if (!outputUsage) {\n return;\n }\n const totalUsage: AnthropicStreamUsage = {\n input_tokens: inputUsage?.input_tokens ?? 0,\n output_tokens: outputUsage.output_tokens ?? 0,\n total_tokens:\n (inputUsage?.input_tokens ?? 0) + (outputUsage.output_tokens ?? 0),\n };\n\n if (\n inputUsage?.cache_creation_input_tokens != null ||\n inputUsage?.cache_read_input_tokens != null\n ) {\n totalUsage.input_token_details = {\n cache_creation: inputUsage.cache_creation_input_tokens ?? 0,\n cache_read: inputUsage.cache_read_input_tokens ?? 0,\n };\n }\n\n this.emitted_usage = true;\n return totalUsage;\n }\n\n resetTokenEvents(): void {\n this.message_start = undefined;\n this.message_delta = undefined;\n this.emitted_usage = undefined;\n this.tools_in_params = undefined;\n }\n\n private createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n }: {\n token?: string;\n chunk: AIMessageChunk;\n shouldStreamUsage: boolean;\n usageMetadata?: AnthropicStreamUsage;\n }): ChatGenerationChunk {\n const usage_metadata = shouldStreamUsage\n ? (usageMetadata ?? chunk.usage_metadata)\n : undefined;\n return new ChatGenerationChunk({\n message: new AIMessageChunk({\n // Just yield chunk as it is and tool_use will be concat by BaseChatModel._generateUncached().\n content: chunk.content,\n additional_kwargs: chunk.additional_kwargs,\n tool_call_chunks: chunk.tool_call_chunks,\n response_metadata: chunk.response_metadata,\n usage_metadata,\n id: chunk.id,\n }),\n text: token ?? '',\n });\n }\n\n async *_streamResponseChunks(\n messages: BaseMessage[],\n options: this['ParsedCallOptions'],\n runManager?: CallbackManagerForLLMRun\n ): AsyncGenerator<ChatGenerationChunk> {\n const params = this.invocationParams(options);\n const formattedMessages = _convertMessagesToAnthropicPayload(messages);\n const payload = {\n ...params,\n ...formattedMessages,\n stream: true,\n } as const;\n const coerceContentToString =\n !_toolsInParams(payload) &&\n !_documentsInParams(payload) &&\n !_thinkingInParams(payload);\n\n const stream = await this.createStreamWithRetry(\n {\n ...params,\n ...formattedMessages,\n stream: true,\n },\n {\n headers: options.headers,\n }\n );\n\n const shouldStreamUsage = this.streamUsage ?? options.streamUsage;\n\n for await (const data of stream) {\n if (options.signal?.aborted === true) {\n stream.controller.abort();\n throw new Error('AbortError: User aborted the request.');\n }\n\n if (data.type === 'message_start') {\n this.message_start = data as AnthropicMessageStartEvent;\n } else if (data.type === 'message_delta') {\n this.message_delta = data as AnthropicMessageDeltaEvent;\n }\n\n let usageMetadata: AnthropicStreamUsage | undefined;\n if (this.tools_in_params !== true && this.emitted_usage !== true) {\n usageMetadata = this.getStreamUsage();\n }\n\n const result = _makeMessageChunkFromAnthropicEvent(data, {\n streamUsage: shouldStreamUsage,\n coerceContentToString,\n });\n if (!result) continue;\n\n const { chunk } = result;\n const [token = '', tokenType] = extractToken(chunk);\n\n if (\n !tokenType ||\n tokenType === 'input' ||\n (token === '' && usageMetadata)\n ) {\n const generationChunk = this.createGenerationChunk({\n token,\n chunk,\n usageMetadata,\n shouldStreamUsage,\n });\n yield generationChunk;\n await runManager?.handleLLMNewToken(\n token,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n continue;\n }\n\n const textStream = new TextStream(token, {\n delay: this._lc_stream_delay,\n firstWordChunk: true,\n minChunkSize: 4,\n maxChunkSize: 8,\n });\n\n const generator = textStream.generateText();\n try {\n let emittedUsage = false;\n for await (const currentToken of generator) {\n const newChunk = cloneChunk(currentToken, tokenType, chunk);\n\n const generationChunk = this.createGenerationChunk({\n token: currentToken,\n chunk: newChunk,\n usageMetadata: emittedUsage ? undefined : usageMetadata,\n shouldStreamUsage,\n });\n\n if (usageMetadata && !emittedUsage) {\n emittedUsage = true;\n }\n yield generationChunk;\n\n await runManager?.handleLLMNewToken(\n token,\n undefined,\n undefined,\n undefined,\n undefined,\n { chunk: generationChunk }\n );\n }\n } finally {\n await generator.return();\n }\n }\n\n this.resetTokenEvents();\n }\n}\n"],"names":["AIMessageChunk","ChatAnthropicMessages","ChatGenerationChunk","_convertMessagesToAnthropicPayload","_makeMessageChunkFromAnthropicEvent","TextStream"],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var openai$1 = require('openai');
|
|
4
|
+
var xai = require('@langchain/xai');
|
|
5
|
+
var deepseek = require('@langchain/deepseek');
|
|
6
|
+
var openai = require('@langchain/openai');
|
|
7
|
+
|
|
8
|
+
class CustomOpenAIClient extends openai.OpenAIClient {
|
|
9
|
+
async fetchWithTimeout(url, init, ms, controller) {
|
|
10
|
+
const { signal, ...options } = init || {};
|
|
11
|
+
const handler = () => controller.abort();
|
|
12
|
+
if (signal)
|
|
13
|
+
signal.addEventListener('abort', handler);
|
|
14
|
+
const timeout = setTimeout(() => handler, ms);
|
|
15
|
+
const fetchOptions = {
|
|
16
|
+
signal: controller.signal,
|
|
17
|
+
...options,
|
|
18
|
+
};
|
|
19
|
+
if (fetchOptions.method != null) {
|
|
20
|
+
// Custom methods like 'patch' need to be uppercased
|
|
21
|
+
// See https://github.com/nodejs/undici/issues/2294
|
|
22
|
+
fetchOptions.method = fetchOptions.method.toUpperCase();
|
|
23
|
+
}
|
|
24
|
+
return (
|
|
25
|
+
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
|
+
/** @ts-ignore */
|
|
28
|
+
this.fetch.call(undefined, url, fetchOptions).finally(() => {
|
|
29
|
+
if (signal)
|
|
30
|
+
signal.removeEventListener('abort', handler);
|
|
31
|
+
clearTimeout(timeout);
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class CustomAzureOpenAIClient extends openai$1.AzureOpenAI {
|
|
36
|
+
async fetchWithTimeout(url, init, ms, controller) {
|
|
37
|
+
const { signal, ...options } = init || {};
|
|
38
|
+
const handler = () => controller.abort();
|
|
39
|
+
if (signal)
|
|
40
|
+
signal.addEventListener('abort', handler);
|
|
41
|
+
const timeout = setTimeout(() => handler, ms);
|
|
42
|
+
const fetchOptions = {
|
|
43
|
+
signal: controller.signal,
|
|
44
|
+
...options,
|
|
45
|
+
};
|
|
46
|
+
if (fetchOptions.method != null) {
|
|
47
|
+
// Custom methods like 'patch' need to be uppercased
|
|
48
|
+
// See https://github.com/nodejs/undici/issues/2294
|
|
49
|
+
fetchOptions.method = fetchOptions.method.toUpperCase();
|
|
50
|
+
}
|
|
51
|
+
return (
|
|
52
|
+
// use undefined this binding; fetch errors if bound to something else in browser/cloudflare
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
54
|
+
/** @ts-ignore */
|
|
55
|
+
this.fetch.call(undefined, url, fetchOptions).finally(() => {
|
|
56
|
+
if (signal)
|
|
57
|
+
signal.removeEventListener('abort', handler);
|
|
58
|
+
clearTimeout(timeout);
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
class ChatOpenAI extends openai.ChatOpenAI {
|
|
63
|
+
_getClientOptions(options) {
|
|
64
|
+
if (!this.client) {
|
|
65
|
+
const openAIEndpointConfig = {
|
|
66
|
+
baseURL: this.clientConfig.baseURL,
|
|
67
|
+
};
|
|
68
|
+
const endpoint = openai.getEndpoint(openAIEndpointConfig);
|
|
69
|
+
const params = {
|
|
70
|
+
...this.clientConfig,
|
|
71
|
+
baseURL: endpoint,
|
|
72
|
+
timeout: this.timeout,
|
|
73
|
+
maxRetries: 0,
|
|
74
|
+
};
|
|
75
|
+
if (params.baseURL == null) {
|
|
76
|
+
delete params.baseURL;
|
|
77
|
+
}
|
|
78
|
+
this.client = new CustomOpenAIClient(params);
|
|
79
|
+
}
|
|
80
|
+
const requestOptions = {
|
|
81
|
+
...this.clientConfig,
|
|
82
|
+
...options,
|
|
83
|
+
};
|
|
84
|
+
return requestOptions;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
class AzureChatOpenAI extends openai.AzureChatOpenAI {
|
|
88
|
+
_getClientOptions(options) {
|
|
89
|
+
if (!this.client) {
|
|
90
|
+
const openAIEndpointConfig = {
|
|
91
|
+
azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,
|
|
92
|
+
azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,
|
|
93
|
+
azureOpenAIApiKey: this.azureOpenAIApiKey,
|
|
94
|
+
azureOpenAIBasePath: this.azureOpenAIBasePath,
|
|
95
|
+
azureADTokenProvider: this.azureADTokenProvider,
|
|
96
|
+
baseURL: this.clientConfig.baseURL,
|
|
97
|
+
};
|
|
98
|
+
const endpoint = openai.getEndpoint(openAIEndpointConfig);
|
|
99
|
+
const params = {
|
|
100
|
+
...this.clientConfig,
|
|
101
|
+
baseURL: endpoint,
|
|
102
|
+
timeout: this.timeout,
|
|
103
|
+
maxRetries: 0,
|
|
104
|
+
};
|
|
105
|
+
if (!this.azureADTokenProvider) {
|
|
106
|
+
params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;
|
|
107
|
+
}
|
|
108
|
+
if (params.baseURL == null) {
|
|
109
|
+
delete params.baseURL;
|
|
110
|
+
}
|
|
111
|
+
params.defaultHeaders = {
|
|
112
|
+
...params.defaultHeaders,
|
|
113
|
+
'User-Agent': params.defaultHeaders?.['User-Agent'] != null
|
|
114
|
+
? `${params.defaultHeaders['User-Agent']}: langchainjs-azure-openai-v2`
|
|
115
|
+
: 'langchainjs-azure-openai-v2',
|
|
116
|
+
};
|
|
117
|
+
this.client = new CustomAzureOpenAIClient({
|
|
118
|
+
apiVersion: this.azureOpenAIApiVersion,
|
|
119
|
+
azureADTokenProvider: this.azureADTokenProvider,
|
|
120
|
+
...params,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
const requestOptions = {
|
|
124
|
+
...this.clientConfig,
|
|
125
|
+
...options,
|
|
126
|
+
};
|
|
127
|
+
if (this.azureOpenAIApiKey != null) {
|
|
128
|
+
requestOptions.headers = {
|
|
129
|
+
'api-key': this.azureOpenAIApiKey,
|
|
130
|
+
...requestOptions.headers,
|
|
131
|
+
};
|
|
132
|
+
requestOptions.query = {
|
|
133
|
+
'api-version': this.azureOpenAIApiVersion,
|
|
134
|
+
...requestOptions.query,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return requestOptions;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
class ChatDeepSeek extends deepseek.ChatDeepSeek {
|
|
141
|
+
_getClientOptions(options) {
|
|
142
|
+
if (!this.client) {
|
|
143
|
+
const openAIEndpointConfig = {
|
|
144
|
+
baseURL: this.clientConfig.baseURL,
|
|
145
|
+
};
|
|
146
|
+
const endpoint = openai.getEndpoint(openAIEndpointConfig);
|
|
147
|
+
const params = {
|
|
148
|
+
...this.clientConfig,
|
|
149
|
+
baseURL: endpoint,
|
|
150
|
+
timeout: this.timeout,
|
|
151
|
+
maxRetries: 0,
|
|
152
|
+
};
|
|
153
|
+
if (params.baseURL == null) {
|
|
154
|
+
delete params.baseURL;
|
|
155
|
+
}
|
|
156
|
+
this.client = new CustomOpenAIClient(params);
|
|
157
|
+
}
|
|
158
|
+
const requestOptions = {
|
|
159
|
+
...this.clientConfig,
|
|
160
|
+
...options,
|
|
161
|
+
};
|
|
162
|
+
return requestOptions;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
class ChatXAI extends xai.ChatXAI {
|
|
166
|
+
_getClientOptions(options) {
|
|
167
|
+
if (!this.client) {
|
|
168
|
+
const openAIEndpointConfig = {
|
|
169
|
+
baseURL: this.clientConfig.baseURL,
|
|
170
|
+
};
|
|
171
|
+
const endpoint = openai.getEndpoint(openAIEndpointConfig);
|
|
172
|
+
const params = {
|
|
173
|
+
...this.clientConfig,
|
|
174
|
+
baseURL: endpoint,
|
|
175
|
+
timeout: this.timeout,
|
|
176
|
+
maxRetries: 0,
|
|
177
|
+
};
|
|
178
|
+
if (params.baseURL == null) {
|
|
179
|
+
delete params.baseURL;
|
|
180
|
+
}
|
|
181
|
+
this.client = new CustomOpenAIClient(params);
|
|
182
|
+
}
|
|
183
|
+
const requestOptions = {
|
|
184
|
+
...this.clientConfig,
|
|
185
|
+
...options,
|
|
186
|
+
};
|
|
187
|
+
return requestOptions;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
exports.AzureChatOpenAI = AzureChatOpenAI;
|
|
192
|
+
exports.ChatDeepSeek = ChatDeepSeek;
|
|
193
|
+
exports.ChatOpenAI = ChatOpenAI;
|
|
194
|
+
exports.ChatXAI = ChatXAI;
|
|
195
|
+
exports.CustomAzureOpenAIClient = CustomAzureOpenAIClient;
|
|
196
|
+
exports.CustomOpenAIClient = CustomOpenAIClient;
|
|
197
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/llm/openai/index.ts"],"sourcesContent":["import { AzureOpenAI as AzureOpenAIClient } from 'openai';\nimport { ChatXAI as OriginalChatXAI } from '@langchain/xai';\nimport { ChatDeepSeek as OriginalChatDeepSeek } from '@langchain/deepseek';\nimport {\n getEndpoint,\n OpenAIClient,\n ChatOpenAI as OriginalChatOpenAI,\n AzureChatOpenAI as OriginalAzureChatOpenAI,\n} from '@langchain/openai';\nimport type * as t from '@langchain/openai';\n\nexport class CustomOpenAIClient extends OpenAIClient {\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = (): void => controller.abort();\n if (signal) signal.addEventListener('abort', handler);\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n if (signal) signal.removeEventListener('abort', handler);\n clearTimeout(timeout);\n })\n );\n }\n}\nexport class CustomAzureOpenAIClient extends AzureOpenAIClient {\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController\n ): Promise<Response> {\n const { signal, ...options } = init || {};\n const handler = (): void => controller.abort();\n if (signal) signal.addEventListener('abort', handler);\n\n const timeout = setTimeout(() => handler, ms);\n\n const fetchOptions = {\n signal: controller.signal as AbortSignal,\n ...options,\n };\n if (fetchOptions.method != null) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /** @ts-ignore */\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n if (signal) signal.removeEventListener('abort', handler);\n clearTimeout(timeout);\n })\n );\n }\n}\n\nexport class ChatOpenAI extends OriginalChatOpenAI<t.ChatOpenAICallOptions> {\n protected _getClientOptions(\n options?: t.OpenAICoreRequestOptions\n ): t.OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as t.OpenAICoreRequestOptions;\n return requestOptions;\n }\n}\n\nexport class AzureChatOpenAI extends OriginalAzureChatOpenAI {\n protected _getClientOptions(\n options: t.OpenAICoreRequestOptions | undefined\n ): t.OpenAICoreRequestOptions {\n if (!(this.client as AzureOpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,\n azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,\n azureOpenAIApiKey: this.azureOpenAIApiKey,\n azureOpenAIBasePath: this.azureOpenAIBasePath,\n azureADTokenProvider: this.azureADTokenProvider,\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n\n if (!this.azureADTokenProvider) {\n params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;\n }\n\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n params.defaultHeaders = {\n ...params.defaultHeaders,\n 'User-Agent':\n params.defaultHeaders?.['User-Agent'] != null\n ? `${params.defaultHeaders['User-Agent']}: langchainjs-azure-openai-v2`\n : 'langchainjs-azure-openai-v2',\n };\n\n this.client = new CustomAzureOpenAIClient({\n apiVersion: this.azureOpenAIApiVersion,\n azureADTokenProvider: this.azureADTokenProvider,\n ...params,\n });\n }\n\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as t.OpenAICoreRequestOptions;\n if (this.azureOpenAIApiKey != null) {\n requestOptions.headers = {\n 'api-key': this.azureOpenAIApiKey,\n ...requestOptions.headers,\n };\n requestOptions.query = {\n 'api-version': this.azureOpenAIApiVersion,\n ...requestOptions.query,\n };\n }\n return requestOptions;\n }\n}\n\nexport class ChatDeepSeek extends OriginalChatDeepSeek {\n protected _getClientOptions(\n options?: t.OpenAICoreRequestOptions\n ): t.OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as t.OpenAICoreRequestOptions;\n return requestOptions;\n }\n}\n\nexport class ChatXAI extends OriginalChatXAI {\n protected _getClientOptions(\n options?: t.OpenAICoreRequestOptions\n ): t.OpenAICoreRequestOptions {\n if (!(this.client as OpenAIClient | undefined)) {\n const openAIEndpointConfig: t.OpenAIEndpointConfig = {\n baseURL: this.clientConfig.baseURL,\n };\n\n const endpoint = getEndpoint(openAIEndpointConfig);\n const params = {\n ...this.clientConfig,\n baseURL: endpoint,\n timeout: this.timeout,\n maxRetries: 0,\n };\n if (params.baseURL == null) {\n delete params.baseURL;\n }\n\n this.client = new CustomOpenAIClient(params);\n }\n const requestOptions = {\n ...this.clientConfig,\n ...options,\n } as t.OpenAICoreRequestOptions;\n return requestOptions;\n }\n}\n"],"names":["OpenAIClient","AzureOpenAIClient","OriginalChatOpenAI","getEndpoint","OriginalAzureChatOpenAI","OriginalChatDeepSeek","OriginalChatXAI"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var index = require('../openai/index.cjs');
|
|
4
4
|
|
|
5
|
-
class ChatOpenRouter extends
|
|
5
|
+
class ChatOpenRouter extends index.ChatOpenAI {
|
|
6
6
|
constructor(_fields) {
|
|
7
7
|
const { include_reasoning, ...fields } = _fields;
|
|
8
8
|
super({
|
|
9
9
|
...fields,
|
|
10
10
|
modelKwargs: {
|
|
11
11
|
include_reasoning,
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
_convertOpenAIDeltaToBaseMessageChunk(
|
|
@@ -22,4 +22,4 @@ class ChatOpenRouter extends openai.ChatOpenAI {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
exports.ChatOpenRouter = ChatOpenRouter;
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/llm/openrouter/index.ts"],"sourcesContent":["import type { ChatOpenAICallOptions, OpenAIClient } from '@langchain/openai';\nimport type {\n AIMessageChunk,\n HumanMessageChunk,\n SystemMessageChunk,\n FunctionMessageChunk,\n ToolMessageChunk,\n ChatMessageChunk,\n} from '@langchain/core/messages';\nimport { ChatOpenAI } from '@/llm/openai';\n\nexport interface ChatOpenRouterCallOptions extends ChatOpenAICallOptions {\n include_reasoning?: boolean;\n}\nexport class ChatOpenRouter extends ChatOpenAI {\n constructor(_fields: Partial<ChatOpenRouterCallOptions>) {\n const { include_reasoning, ...fields } = _fields;\n super({\n ...fields,\n modelKwargs: {\n include_reasoning,\n },\n });\n }\n protected override _convertOpenAIDeltaToBaseMessageChunk(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n delta: Record<string, any>,\n rawResponse: OpenAIClient.ChatCompletionChunk,\n defaultRole?:\n | 'function'\n | 'user'\n | 'system'\n | 'developer'\n | 'assistant'\n | 'tool'\n ):\n | AIMessageChunk\n | HumanMessageChunk\n | SystemMessageChunk\n | FunctionMessageChunk\n | ToolMessageChunk\n | ChatMessageChunk {\n const messageChunk = super._convertOpenAIDeltaToBaseMessageChunk(\n delta,\n rawResponse,\n defaultRole\n );\n messageChunk.additional_kwargs.reasoning = delta.reasoning;\n return messageChunk;\n }\n}\n"],"names":["ChatOpenAI"],"mappings":";;;;AAcM,MAAO,cAAe,SAAQA,gBAAU,CAAA;AAC5C,IAAA,WAAA,CAAY,OAA2C,EAAA;QACrD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO;AAChD,QAAA,KAAK,CAAC;AACJ,YAAA,GAAG,MAAM;AACT,YAAA,WAAW,EAAE;gBACX,iBAAiB;AAClB,aAAA;AACF,SAAA,CAAC;;IAEe,qCAAqC;;IAEtD,KAA0B,EAC1B,WAA6C,EAC7C,WAMU,EAAA;AAQV,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,qCAAqC,CAC9D,KAAK,EACL,WAAW,EACX,WAAW,CACZ;QACD,YAAY,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AAC1D,QAAA,OAAO,YAAY;;AAEtB;;;;"}
|
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var xai = require('@langchain/xai');
|
|
4
3
|
var ollama = require('@langchain/ollama');
|
|
5
|
-
var deepseek = require('@langchain/deepseek');
|
|
6
4
|
var mistralai = require('@langchain/mistralai');
|
|
7
5
|
var aws = require('@langchain/aws');
|
|
8
6
|
var googleVertexai = require('@langchain/google-vertexai');
|
|
9
|
-
var openai = require('@langchain/openai');
|
|
10
7
|
var googleGenai = require('@langchain/google-genai');
|
|
11
8
|
var web = require('@langchain/community/chat_models/bedrock/web');
|
|
12
|
-
var
|
|
13
|
-
var
|
|
9
|
+
var index$1 = require('./anthropic/index.cjs');
|
|
10
|
+
var index = require('./openrouter/index.cjs');
|
|
11
|
+
var index$2 = require('./openai/index.cjs');
|
|
14
12
|
var _enum = require('../common/enum.cjs');
|
|
15
13
|
|
|
16
14
|
// src/llm/providers.ts
|
|
17
15
|
const llmProviders = {
|
|
18
|
-
[_enum.Providers.XAI]:
|
|
19
|
-
[_enum.Providers.OPENAI]:
|
|
16
|
+
[_enum.Providers.XAI]: index$2.ChatXAI,
|
|
17
|
+
[_enum.Providers.OPENAI]: index$2.ChatOpenAI,
|
|
20
18
|
[_enum.Providers.OLLAMA]: ollama.ChatOllama,
|
|
21
|
-
[_enum.Providers.AZURE]:
|
|
19
|
+
[_enum.Providers.AZURE]: index$2.AzureChatOpenAI,
|
|
22
20
|
[_enum.Providers.VERTEXAI]: googleVertexai.ChatVertexAI,
|
|
23
|
-
[_enum.Providers.DEEPSEEK]:
|
|
21
|
+
[_enum.Providers.DEEPSEEK]: index$2.ChatDeepSeek,
|
|
24
22
|
[_enum.Providers.MISTRALAI]: mistralai.ChatMistralAI,
|
|
25
23
|
[_enum.Providers.MISTRAL]: mistralai.ChatMistralAI,
|
|
26
|
-
[_enum.Providers.ANTHROPIC]:
|
|
27
|
-
[_enum.Providers.OPENROUTER]:
|
|
24
|
+
[_enum.Providers.ANTHROPIC]: index$1.CustomAnthropic,
|
|
25
|
+
[_enum.Providers.OPENROUTER]: index.ChatOpenRouter,
|
|
28
26
|
[_enum.Providers.BEDROCK_LEGACY]: web.BedrockChat,
|
|
29
27
|
[_enum.Providers.BEDROCK]: aws.ChatBedrockConverse,
|
|
30
28
|
// [Providers.ANTHROPIC]: ChatAnthropic,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.cjs","sources":["../../../src/llm/providers.ts"],"sourcesContent":["// src/llm/providers.ts\nimport {
|
|
1
|
+
{"version":3,"file":"providers.cjs","sources":["../../../src/llm/providers.ts"],"sourcesContent":["// src/llm/providers.ts\nimport { ChatOllama } from '@langchain/ollama';\nimport { ChatMistralAI } from '@langchain/mistralai';\nimport { ChatBedrockConverse } from '@langchain/aws';\n// import { ChatAnthropic } from '@langchain/anthropic';\nimport { ChatVertexAI } from '@langchain/google-vertexai';\nimport { ChatGoogleGenerativeAI } from '@langchain/google-genai';\nimport { BedrockChat } from '@langchain/community/chat_models/bedrock/web';\nimport type {\n ChatModelConstructorMap,\n ProviderOptionsMap,\n ChatModelMap,\n} from '@/types';\nimport { CustomAnthropic } from '@/llm/anthropic';\nimport { ChatOpenRouter } from '@/llm/openrouter';\nimport {\n ChatXAI,\n ChatOpenAI,\n ChatDeepSeek,\n AzureChatOpenAI,\n} from '@/llm/openai';\nimport { Providers } from '@/common';\n\nexport const llmProviders: Partial<ChatModelConstructorMap> = {\n [Providers.XAI]: ChatXAI,\n [Providers.OPENAI]: ChatOpenAI,\n [Providers.OLLAMA]: ChatOllama,\n [Providers.AZURE]: AzureChatOpenAI,\n [Providers.VERTEXAI]: ChatVertexAI,\n [Providers.DEEPSEEK]: ChatDeepSeek,\n [Providers.MISTRALAI]: ChatMistralAI,\n [Providers.MISTRAL]: ChatMistralAI,\n [Providers.ANTHROPIC]: CustomAnthropic,\n [Providers.OPENROUTER]: ChatOpenRouter,\n [Providers.BEDROCK_LEGACY]: BedrockChat,\n [Providers.BEDROCK]: ChatBedrockConverse,\n // [Providers.ANTHROPIC]: ChatAnthropic,\n [Providers.GOOGLE]: ChatGoogleGenerativeAI,\n};\n\nexport const manualToolStreamProviders = new Set<Providers | string>([\n Providers.ANTHROPIC,\n Providers.BEDROCK,\n Providers.OLLAMA,\n]);\n\nexport const getChatModelClass = <P extends Providers>(\n provider: P\n): new (config: ProviderOptionsMap[P]) => ChatModelMap[P] => {\n const ChatModelClass = llmProviders[provider];\n if (!ChatModelClass) {\n throw new Error(`Unsupported LLM provider: ${provider}`);\n }\n\n return ChatModelClass;\n};\n"],"names":["Providers","ChatXAI","ChatOpenAI","ChatOllama","AzureChatOpenAI","ChatVertexAI","ChatDeepSeek","ChatMistralAI","CustomAnthropic","ChatOpenRouter","BedrockChat","ChatBedrockConverse","ChatGoogleGenerativeAI"],"mappings":";;;;;;;;;;;;;AAAA;AAuBa,MAAA,YAAY,GAAqC;AAC5D,IAAA,CAACA,eAAS,CAAC,GAAG,GAAGC,eAAO;AACxB,IAAA,CAACD,eAAS,CAAC,MAAM,GAAGE,kBAAU;AAC9B,IAAA,CAACF,eAAS,CAAC,MAAM,GAAGG,iBAAU;AAC9B,IAAA,CAACH,eAAS,CAAC,KAAK,GAAGI,uBAAe;AAClC,IAAA,CAACJ,eAAS,CAAC,QAAQ,GAAGK,2BAAY;AAClC,IAAA,CAACL,eAAS,CAAC,QAAQ,GAAGM,oBAAY;AAClC,IAAA,CAACN,eAAS,CAAC,SAAS,GAAGO,uBAAa;AACpC,IAAA,CAACP,eAAS,CAAC,OAAO,GAAGO,uBAAa;AAClC,IAAA,CAACP,eAAS,CAAC,SAAS,GAAGQ,uBAAe;AACtC,IAAA,CAACR,eAAS,CAAC,UAAU,GAAGS,oBAAc;AACtC,IAAA,CAACT,eAAS,CAAC,cAAc,GAAGU,eAAW;AACvC,IAAA,CAACV,eAAS,CAAC,OAAO,GAAGW,uBAAmB;;AAExC,IAAA,CAACX,eAAS,CAAC,MAAM,GAAGY,kCAAsB;;AAG/B,MAAA,yBAAyB,GAAG,IAAI,GAAG,CAAqB;AACnE,IAAAZ,eAAS,CAAC,SAAS;AACnB,IAAAA,eAAS,CAAC,OAAO;AACjB,IAAAA,eAAS,CAAC,MAAM;AACjB,CAAA;AAEY,MAAA,iBAAiB,GAAG,CAC/B,QAAW,KAC+C;AAC1D,IAAA,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC;IAC7C,IAAI,CAAC,cAAc,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAA,CAAE,CAAC;;AAG1D,IAAA,OAAO,cAAc;AACvB;;;;;;"}
|
package/dist/cjs/main.cjs
CHANGED
|
@@ -15,6 +15,7 @@ var llm = require('./utils/llm.cjs');
|
|
|
15
15
|
var misc = require('./utils/misc.cjs');
|
|
16
16
|
var run$1 = require('./utils/run.cjs');
|
|
17
17
|
var tokens = require('./utils/tokens.cjs');
|
|
18
|
+
var index = require('./llm/openai/index.cjs');
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
|
|
@@ -108,4 +109,5 @@ exports.RunnableCallable = run$1.RunnableCallable;
|
|
|
108
109
|
exports.sleep = run$1.sleep;
|
|
109
110
|
exports.createTokenCounter = tokens.createTokenCounter;
|
|
110
111
|
exports.getTokenCountForMessage = tokens.getTokenCountForMessage;
|
|
112
|
+
exports.CustomOpenAIClient = index.CustomOpenAIClient;
|
|
111
113
|
//# sourceMappingURL=main.cjs.map
|
package/dist/cjs/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,7 +2,7 @@ import { nanoid } from 'nanoid';
|
|
|
2
2
|
import { concat } from '@langchain/core/utils/stream';
|
|
3
3
|
import { ChatVertexAI } from '@langchain/google-vertexai';
|
|
4
4
|
import { StateGraph, START, END } from '@langchain/langgraph';
|
|
5
|
-
import { ChatOpenAI, AzureChatOpenAI } from '@langchain/openai';
|
|
5
|
+
import { ChatOpenAI as ChatOpenAI$1, AzureChatOpenAI as AzureChatOpenAI$1 } from '@langchain/openai';
|
|
6
6
|
import { dispatchCustomEvent } from '@langchain/core/callbacks/dispatch';
|
|
7
7
|
import { SystemMessage, AIMessageChunk, ToolMessage } from '@langchain/core/messages';
|
|
8
8
|
import { GraphNodeKeys, ContentTypes, Providers, GraphEvents, StepTypes } from '../common/enum.mjs';
|
|
@@ -219,7 +219,7 @@ class StandardGraph extends Graph {
|
|
|
219
219
|
const ChatModelClass = getChatModelClass(this.provider);
|
|
220
220
|
const model = new ChatModelClass(this.clientOptions);
|
|
221
221
|
if (isOpenAILike(this.provider) &&
|
|
222
|
-
(model instanceof ChatOpenAI || model instanceof AzureChatOpenAI)) {
|
|
222
|
+
(model instanceof ChatOpenAI$1 || model instanceof AzureChatOpenAI$1)) {
|
|
223
223
|
model.temperature = this.clientOptions
|
|
224
224
|
.temperature;
|
|
225
225
|
model.topP = this.clientOptions.topP;
|