fix(Mistral Cloud Node): Support citation reference chunks (#38952)

This commit is contained in:
Mayank SIngh 2026-09-24 15:13:31 +00:00 committed by GitHub
parent d4999a2b2f
commit a9bc9c57e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 86 additions and 18 deletions

View File

@ -0,0 +1,39 @@
import { ChatMistralAI } from '@langchain/mistralai';
import { HTTPClient } from '@mistralai/mistralai/lib/http.js';
describe('Mistral reference chunks', () => {
it('should stream reference chunks with string and numeric IDs', async () => {
const event = {
id: 'completion-1',
object: 'chat.completion.chunk',
created: 0,
model: 'mistral-test',
choices: [
{
index: 0,
delta: {
role: 'assistant',
content: [{ type: 'reference', reference_ids: ['document-1', 2] }],
},
finish_reason: null,
},
],
};
const body = `data: ${JSON.stringify(event)}\n\ndata: [DONE]\n\n`;
const httpClient = new HTTPClient({
fetcher: async () => new Response(body, { headers: { 'content-type': 'text/event-stream' } }),
});
const model = new ChatMistralAI({
apiKey: 'test-api-key',
model: 'mistral-test',
httpClient,
maxRetries: 0,
});
const chunks = [];
for await (const chunk of await model.stream('Cite the source')) chunks.push(chunk);
expect(chunks).toHaveLength(1);
expect(chunks[0]?.content).toEqual([{ type: 'reference', referenceIds: ['document-1', 2] }]);
});
});

View File

@ -259,7 +259,7 @@
"@langchain/groq": "1.0.2",
"@langchain/langgraph": "catalog:",
"@langchain/langgraph-checkpoint": "catalog:",
"@langchain/mistralai": "1.0.1",
"@langchain/mistralai": "1.1.0",
"@langchain/mongodb": "1.0.1",
"@langchain/ollama": "1.2.6",
"@langchain/openai": "catalog:",
@ -273,7 +273,7 @@
"@microsoft/agents-a365-tooling": "1.0.0",
"@microsoft/agents-activity": "1.6.1",
"@microsoft/agents-hosting": "1.6.1",
"@mistralai/mistralai": "^1.10.0",
"@mistralai/mistralai": "^2.2.1",
"@modelcontextprotocol/sdk": "catalog:",
"@mozilla/readability": "catalog:",
"@n8n/ai-utilities": "workspace:*",

View File

@ -944,7 +944,7 @@ overrides:
baseline-browser-mapping: ^2.10.31
'@azure/identity': 4.13.0
'@lezer/common': ^1.2.0
'@mistralai/mistralai': ^1.10.0
'@mistralai/mistralai': ^2.2.1
'@n8n/typeorm>@sentry/node': 10.70.0
mssql@12.7.0>tedious: 20.0.5
'@opentelemetry/api': 1.9.1
@ -3497,8 +3497,8 @@ importers:
specifier: 'catalog:'
version: 1.0.0(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
'@langchain/mistralai':
specifier: 1.0.1
version: 1.0.1(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
specifier: 1.1.0
version: 1.1.0(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(bufferutil@4.0.9)(utf-8-validate@5.0.10)
'@langchain/mongodb':
specifier: 1.0.1
version: 1.0.1(@aws-sdk/credential-providers@3.808.0)(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(gcp-metadata@5.3.0(supports-color@8.1.1))(socks@2.8.3)
@ -3539,8 +3539,8 @@ importers:
specifier: 1.6.1
version: 1.6.1(@opentelemetry/api-logs@0.221.0)(@opentelemetry/api@1.9.1)(supports-color@8.1.1)
'@mistralai/mistralai':
specifier: ^1.10.0
version: 1.10.0
specifier: ^2.2.1
version: 2.7.0(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(bufferutil@4.0.9)(utf-8-validate@5.0.10)
'@modelcontextprotocol/sdk':
specifier: 'catalog:'
version: 1.26.0(supports-color@8.1.1)(zod@3.25.76)
@ -3564,7 +3564,7 @@ importers:
version: link:../json-schema-to-zod
'@n8n/typeorm':
specifier: 0.3.20-16
version: 0.3.20-16(@sentry/node@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))(supports-color@8.1.1))(mysql2@3.23.1(@types/node@20.19.41))(pg-native@3.8.0)(pg-query-stream@4.16.0(pg@8.21.0(pg-native@3.8.0)))(pg@8.21.0(pg-native@3.8.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@8.1.1))(supports-color@8.1.1)
version: 0.3.20-16(@sentry/node@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(supports-color@8.1.1))(mysql2@3.23.1(@types/node@20.19.41))(pg-native@3.8.0)(pg-query-stream@4.16.0(pg@8.21.0(pg-native@3.8.0)))(pg@8.21.0(pg-native@3.8.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@8.1.1))(supports-color@8.1.1)
'@n8n/typescript-config':
specifier: workspace:*
version: link:../typescript-config
@ -11008,8 +11008,8 @@ packages:
'@langchain/core': ^1.1.48
zod: 3.25.76
'@langchain/mistralai@1.0.1':
resolution: {integrity: sha512-neIM/o3Y+0WSMMKDsM4Vfc1KFHqO0IDII4fouPXbn0INvJpniBFEUEnLayd4y3NwCeMsg155L3SBhMqpDZBPmQ==}
'@langchain/mistralai@1.1.0':
resolution: {integrity: sha512-MUGLKgJbfH81UIvvKLRHmMZxWnyg6qPTeiXnIu3zbzjJR456W5eWOWjr4LLuXIRTy1hRxX+mZZHyqHu4Bkq+0Q==}
engines: {node: '>=20'}
peerDependencies:
'@langchain/core': ^1.0.0
@ -11271,8 +11271,22 @@ packages:
'@miragejs/pretender-node-polyfill@0.1.2':
resolution: {integrity: sha512-M/BexG/p05C5lFfMunxo/QcgIJnMT2vDVCd00wNqK2ImZONIlEETZwWJu1QtLxtmYlSHlCFl3JNzp0tLe7OJ5g==}
'@mistralai/mistralai@1.10.0':
resolution: {integrity: sha512-tdIgWs4Le8vpvPiUEWne6tK0qbVc+jMenujnvTqOjogrJUsCSQhus0tHTU1avDDh5//Rq2dFgP9mWRAdIEoBqg==}
'@mistralai/mistralai@2.7.0':
resolution: {integrity: sha512-zCrx6MtNpcz+EL/Nqvg55QubSgmfwJfBmd3d3wSYfJGfnvlNnWcJYlxEW5xQpS3KR6A5qK9KUyRBwMDIWnyVGA==}
peerDependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/exporter-trace-otlp-http': ^0.220.0
'@opentelemetry/resources': ^2.9.0
'@opentelemetry/sdk-trace-base': ^2.9.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@opentelemetry/exporter-trace-otlp-http':
optional: true
'@opentelemetry/resources':
optional: true
'@opentelemetry/sdk-trace-base':
optional: true
'@mixmark-io/domino@2.2.0':
resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==}
@ -29470,11 +29484,17 @@ snapshots:
- svelte
- vue
'@langchain/mistralai@1.0.1(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))':
'@langchain/mistralai@1.1.0(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(bufferutil@4.0.9)(utf-8-validate@5.0.10)':
dependencies:
'@langchain/core': 1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@mistralai/mistralai': 1.10.0
uuid: 13.0.1
'@mistralai/mistralai': 2.7.0(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(bufferutil@4.0.9)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/exporter-trace-otlp-http'
- '@opentelemetry/resources'
- '@opentelemetry/sdk-trace-base'
- bufferutil
- utf-8-validate
'@langchain/mongodb@1.0.1(@aws-sdk/credential-providers@3.808.0)(@langchain/core@1.2.8(@opentelemetry/api@1.9.1)(@opentelemetry/exporter-trace-otlp-proto@0.221.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(openai@6.46.0(@aws-sdk/credential-provider-node@3.972.80)(@smithy/signature-v4@5.7.2)(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ws@8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)))(gcp-metadata@5.3.0(supports-color@8.1.1))(socks@2.8.3)':
dependencies:
@ -29937,10 +29957,19 @@ snapshots:
'@miragejs/pretender-node-polyfill@0.1.2': {}
'@mistralai/mistralai@1.10.0':
'@mistralai/mistralai@2.7.0(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))(bufferutil@4.0.9)(utf-8-validate@5.0.10)':
dependencies:
'@opentelemetry/semantic-conventions': 1.43.0
ws: 8.21.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)
zod: 3.25.76
zod-to-json-schema: 3.25.2(zod@3.25.76)
optionalDependencies:
'@opentelemetry/api': 1.9.1
'@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1)
'@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
'@mixmark-io/domino@2.2.0': {}
@ -30030,7 +30059,7 @@ snapshots:
- debug
- supports-color
'@n8n/typeorm@0.3.20-16(@sentry/node@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/exporter-trace-otlp-http@0.221.0(@opentelemetry/api@1.9.1))(supports-color@8.1.1))(mysql2@3.23.1(@types/node@20.19.41))(pg-native@3.8.0)(pg-query-stream@4.16.0(pg@8.21.0(pg-native@3.8.0)))(pg@8.21.0(pg-native@3.8.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@8.1.1))(supports-color@8.1.1)':
'@n8n/typeorm@0.3.20-16(@sentry/node@10.70.0(@opentelemetry/core@2.10.0(@opentelemetry/api@1.9.1))(supports-color@8.1.1))(mysql2@3.23.1(@types/node@20.19.41))(pg-native@3.8.0)(pg-query-stream@4.16.0(pg@8.21.0(pg-native@3.8.0)))(pg@8.21.0(pg-native@3.8.0))(sqlite3@5.1.7(bluebird@3.7.2)(supports-color@8.1.1))(supports-color@8.1.1)':
dependencies:
app-root-path: 3.1.0
async-mutex: 0.5.0

View File

@ -369,7 +369,7 @@ overrides:
baseline-browser-mapping: ^2.10.31
'@azure/identity': 4.13.0
'@lezer/common': ^1.2.0
'@mistralai/mistralai': ^1.10.0
'@mistralai/mistralai': ^2.2.1
'@n8n/typeorm>@sentry/node': catalog:sentry
'mssql@12.7.0>tedious': 20.0.5
'@opentelemetry/api': 'catalog:'