@memberjunction/ai-mistral 3.4.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -0
- package/dist/generic/mistral.types.js +1 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -18
- package/dist/index.js.map +1 -1
- package/dist/models/mistral.d.ts +0 -1
- package/dist/models/mistral.d.ts.map +1 -1
- package/dist/models/mistral.js +18 -21
- package/dist/models/mistral.js.map +1 -1
- package/dist/models/mistralEmbedding.d.ts +0 -1
- package/dist/models/mistralEmbedding.d.ts.map +1 -1
- package/dist/models/mistralEmbedding.js +19 -22
- package/dist/models/mistralEmbedding.js.map +1 -1
- package/package.json +8 -7
- package/readme.md +72 -361
package/README.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# @memberjunction/ai-mistral
|
|
2
|
+
|
|
3
|
+
MemberJunction AI provider for Mistral AI. This package provides both LLM and embedding capabilities using Mistral's models, implementing `BaseLLM` and `BaseEmbeddings` from `@memberjunction/ai`.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```mermaid
|
|
8
|
+
graph TD
|
|
9
|
+
A["MistralLLM<br/>(Provider)"] -->|extends| B["BaseLLM<br/>(@memberjunction/ai)"]
|
|
10
|
+
C["MistralEmbedding<br/>(Provider)"] -->|extends| D["BaseEmbeddings<br/>(@memberjunction/ai)"]
|
|
11
|
+
A -->|wraps| E["Mistral Client<br/>(@mistralai/mistralai)"]
|
|
12
|
+
C -->|wraps| E
|
|
13
|
+
A -->|provides| F["Chat Completions<br/>+ Streaming"]
|
|
14
|
+
C -->|provides| G["Text Embeddings"]
|
|
15
|
+
B -->|registered via| H["@RegisterClass"]
|
|
16
|
+
D -->|registered via| H
|
|
17
|
+
|
|
18
|
+
style A fill:#7c5295,stroke:#563a6b,color:#fff
|
|
19
|
+
style C fill:#7c5295,stroke:#563a6b,color:#fff
|
|
20
|
+
style B fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
21
|
+
style D fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
22
|
+
style E fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
23
|
+
style F fill:#b8762f,stroke:#8a5722,color:#fff
|
|
24
|
+
style G fill:#b8762f,stroke:#8a5722,color:#fff
|
|
25
|
+
style H fill:#b8762f,stroke:#8a5722,color:#fff
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Features
|
|
29
|
+
|
|
30
|
+
- **Chat Completions**: Conversational AI with Mistral Large, Medium, Small, and open models
|
|
31
|
+
- **Streaming**: Real-time response streaming support
|
|
32
|
+
- **Text Embeddings**: Vector embeddings via Mistral's embedding models
|
|
33
|
+
- **Thinking/Reasoning**: Extraction of thinking content from reasoning models
|
|
34
|
+
- **JSON Mode**: Response format control for structured outputs
|
|
35
|
+
- **Multimodal Support**: Handling of image content in messages
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install @memberjunction/ai-mistral
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
### Chat Completion
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { MistralLLM } from '@memberjunction/ai-mistral';
|
|
49
|
+
|
|
50
|
+
const llm = new MistralLLM('your-mistral-api-key');
|
|
51
|
+
|
|
52
|
+
const result = await llm.ChatCompletion({
|
|
53
|
+
model: 'mistral-large-latest',
|
|
54
|
+
messages: [
|
|
55
|
+
{ role: 'user', content: 'Explain transformers in machine learning.' }
|
|
56
|
+
],
|
|
57
|
+
temperature: 0.7
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (result.success) {
|
|
61
|
+
console.log(result.data.choices[0].message.content);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Streaming
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const result = await llm.ChatCompletion({
|
|
69
|
+
model: 'mistral-small-latest',
|
|
70
|
+
messages: [{ role: 'user', content: 'Write a poem.' }],
|
|
71
|
+
streaming: true,
|
|
72
|
+
streamingCallbacks: {
|
|
73
|
+
OnContent: (content) => process.stdout.write(content),
|
|
74
|
+
OnComplete: () => console.log('\nDone!')
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Embeddings
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import { MistralEmbedding } from '@memberjunction/ai-mistral';
|
|
83
|
+
|
|
84
|
+
const embedder = new MistralEmbedding('your-mistral-api-key');
|
|
85
|
+
|
|
86
|
+
const result = await embedder.EmbedText({
|
|
87
|
+
text: 'Sample text for embedding',
|
|
88
|
+
model: 'mistral-embed'
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
console.log(`Dimensions: ${result.vector.length}`);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Supported Parameters
|
|
95
|
+
|
|
96
|
+
| Parameter | Supported | Notes |
|
|
97
|
+
|-----------|-----------|-------|
|
|
98
|
+
| temperature | Yes | Controls randomness |
|
|
99
|
+
| maxOutputTokens | Yes | Maximum response length |
|
|
100
|
+
| topP | Yes | Nucleus sampling |
|
|
101
|
+
| seed | Yes | Deterministic outputs |
|
|
102
|
+
| responseFormat | Yes | JSON mode support |
|
|
103
|
+
| streaming | Yes | Real-time streaming |
|
|
104
|
+
|
|
105
|
+
## Class Registration
|
|
106
|
+
|
|
107
|
+
- `MistralLLM` -- Registered via `@RegisterClass(BaseLLM, 'MistralLLM')`
|
|
108
|
+
- `MistralEmbedding` -- Registered via `@RegisterClass(BaseEmbeddings, 'MistralEmbedding')`
|
|
109
|
+
|
|
110
|
+
## Dependencies
|
|
111
|
+
|
|
112
|
+
- `@memberjunction/ai` - Core AI abstractions
|
|
113
|
+
- `@memberjunction/global` - Class registration
|
|
114
|
+
- `@mistralai/mistralai` - Official Mistral AI SDK
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './models/mistral';
|
|
2
|
-
export * from './models/mistralEmbedding';
|
|
1
|
+
export * from './models/mistral.js';
|
|
2
|
+
export * from './models/mistralEmbedding.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./models/mistral"), exports);
|
|
18
|
-
__exportStar(require("./models/mistralEmbedding"), exports);
|
|
1
|
+
export * from './models/mistral.js';
|
|
2
|
+
export * from './models/mistralEmbedding.js';
|
|
19
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
|
package/dist/models/mistral.d.ts
CHANGED
|
@@ -42,5 +42,4 @@ export declare class MistralLLM extends BaseLLM {
|
|
|
42
42
|
ClassifyText(params: ClassifyParams): Promise<ClassifyResult>;
|
|
43
43
|
protected MapMJMessagesToMistral(messages: ChatMessage[]): Array<any>;
|
|
44
44
|
}
|
|
45
|
-
export declare function LoadMistralLLM(): void;
|
|
46
45
|
//# sourceMappingURL=mistral.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/models/mistral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAqC,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAc,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAElN,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,qBACa,UAAW,SAAQ,OAAO;IACnC,OAAO,CAAC,OAAO,CAAU;IAGzB,OAAO,CAAC,eAAe,CAUrB;gBAEU,MAAM,EAAE,MAAM;IAO1B,IAAW,MAAM,IAAI,OAAO,CAAuB;IAEnD;;OAEG;IACH,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAED;;OAEG;cACa,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAwHnF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;cACa,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAuDxE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG;QACzC,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf;IA4CD;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IA2EzC;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EACjC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,GAC9B,UAAU;IA+BA,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;CA+CxE
|
|
1
|
+
{"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/models/mistral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAqC,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAc,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AAElN,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,qBACa,UAAW,SAAQ,OAAO;IACnC,OAAO,CAAC,OAAO,CAAU;IAGzB,OAAO,CAAC,eAAe,CAUrB;gBAEU,MAAM,EAAE,MAAM;IAO1B,IAAW,MAAM,IAAI,OAAO,CAAuB;IAEnD;;OAEG;IACH,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAED;;OAEG;cACa,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAwHnF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;cACa,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAuDxE;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG;QACzC,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf;IA4CD;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IA2EzC;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EACjC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,GAC9B,UAAU;IA+BA,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhE,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;CA+CxE"}
|
package/dist/models/mistral.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseLLM, ChatResult, ChatMessageRole, ModelUsage } from '@memberjunction/ai';
|
|
11
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
|
+
import { Mistral } from "@mistralai/mistralai";
|
|
13
|
+
let MistralLLM = class MistralLLM extends BaseLLM {
|
|
14
14
|
constructor(apiKey) {
|
|
15
15
|
super(apiKey);
|
|
16
16
|
// State tracking for streaming thinking extraction
|
|
@@ -20,7 +20,7 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
20
20
|
pendingContent: '',
|
|
21
21
|
thinkingComplete: false
|
|
22
22
|
};
|
|
23
|
-
this._client = new
|
|
23
|
+
this._client = new Mistral({
|
|
24
24
|
apiKey: apiKey
|
|
25
25
|
});
|
|
26
26
|
}
|
|
@@ -103,7 +103,7 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
103
103
|
}
|
|
104
104
|
const res = {
|
|
105
105
|
message: {
|
|
106
|
-
role:
|
|
106
|
+
role: ChatMessageRole.assistant,
|
|
107
107
|
content: content,
|
|
108
108
|
thinking: thinkingContent || undefined
|
|
109
109
|
},
|
|
@@ -113,7 +113,7 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
113
113
|
return res;
|
|
114
114
|
});
|
|
115
115
|
// Create ModelUsage
|
|
116
|
-
const usage = new
|
|
116
|
+
const usage = new ModelUsage(chatResponse.usage.promptTokens, chatResponse.usage.completionTokens);
|
|
117
117
|
const chatResult = {
|
|
118
118
|
success: true,
|
|
119
119
|
statusText: "OK",
|
|
@@ -226,7 +226,7 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
226
226
|
}
|
|
227
227
|
// Save usage information if available
|
|
228
228
|
if (chunk?.data?.usage) {
|
|
229
|
-
usage = new
|
|
229
|
+
usage = new ModelUsage(chunk.data.usage.promptTokens || 0, chunk.data.usage.completionTokens || 0);
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
return {
|
|
@@ -318,21 +318,21 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
318
318
|
// Create dates (will be overridden by base class)
|
|
319
319
|
const now = new Date();
|
|
320
320
|
// Create a proper ChatResult instance with constructor params
|
|
321
|
-
const result = new
|
|
321
|
+
const result = new ChatResult(true, now, now);
|
|
322
322
|
// Get thinking content from streaming state
|
|
323
323
|
const thinkingContent = this._streamingState.accumulatedThinking.trim();
|
|
324
324
|
// Set all properties
|
|
325
325
|
result.data = {
|
|
326
326
|
choices: [{
|
|
327
327
|
message: {
|
|
328
|
-
role:
|
|
328
|
+
role: ChatMessageRole.assistant,
|
|
329
329
|
content: accumulatedContent ? accumulatedContent : '',
|
|
330
330
|
thinking: thinkingContent || undefined
|
|
331
331
|
},
|
|
332
332
|
finish_reason: lastChunk?.data?.choices?.[0]?.finishReason || 'stop',
|
|
333
333
|
index: 0
|
|
334
334
|
}],
|
|
335
|
-
usage: usage || new
|
|
335
|
+
usage: usage || new ModelUsage(0, 0)
|
|
336
336
|
};
|
|
337
337
|
result.statusText = 'success';
|
|
338
338
|
result.errorMessage = null;
|
|
@@ -393,12 +393,9 @@ let MistralLLM = class MistralLLM extends ai_1.BaseLLM {
|
|
|
393
393
|
return returnMessages;
|
|
394
394
|
}
|
|
395
395
|
};
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
(
|
|
396
|
+
MistralLLM = __decorate([
|
|
397
|
+
RegisterClass(BaseLLM, "MistralLLM"),
|
|
398
|
+
__metadata("design:paramtypes", [String])
|
|
399
399
|
], MistralLLM);
|
|
400
|
-
|
|
401
|
-
// this does nothing but prevents the class from being removed by the tree shaker
|
|
402
|
-
}
|
|
403
|
-
exports.LoadMistralLLM = LoadMistralLLM;
|
|
400
|
+
export { MistralLLM };
|
|
404
401
|
//# sourceMappingURL=mistral.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistral.js","sourceRoot":"","sources":["../../src/models/mistral.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mistral.js","sourceRoot":"","sources":["../../src/models/mistral.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,5 +14,4 @@ export declare class MistralEmbedding extends BaseEmbeddings {
|
|
|
14
14
|
EmbedTexts(params: EmbedTextsParams): Promise<EmbedTextsResult>;
|
|
15
15
|
GetEmbeddingModels(): Promise<any>;
|
|
16
16
|
}
|
|
17
|
-
export declare function LoadMistralEmbedding(): void;
|
|
18
17
|
//# sourceMappingURL=mistralEmbedding.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistralEmbedding.d.ts","sourceRoot":"","sources":["../../src/models/mistralEmbedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAc,eAAe,EAAE,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AAErJ,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,qBACa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,OAAO,CAAU;gBAET,MAAM,EAAE,MAAM;IAO1B,IAAW,MAAM,IAAI,OAAO,CAAuB;IAEvD;;OAEG;IACU,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCzE;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8B/D,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC;CASlD
|
|
1
|
+
{"version":3,"file":"mistralEmbedding.d.ts","sourceRoot":"","sources":["../../src/models/mistralEmbedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAc,eAAe,EAAE,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AAErJ,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,qBACa,gBAAiB,SAAQ,cAAc;IAChD,OAAO,CAAC,OAAO,CAAU;gBAET,MAAM,EAAE,MAAM;IAO1B,IAAW,MAAM,IAAI,OAAO,CAAuB;IAEvD;;OAEG;IACU,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCzE;;OAEG;IACU,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8B/D,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC;CASlD"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseEmbeddings, ModelUsage, ErrorAnalyzer } from "@memberjunction/ai";
|
|
11
|
+
import { RegisterClass } from "@memberjunction/global";
|
|
12
|
+
import { Mistral } from "@mistralai/mistralai";
|
|
13
|
+
let MistralEmbedding = class MistralEmbedding extends BaseEmbeddings {
|
|
14
14
|
constructor(apiKey) {
|
|
15
15
|
super(apiKey);
|
|
16
|
-
this._client = new
|
|
16
|
+
this._client = new Mistral({
|
|
17
17
|
apiKey: apiKey
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -36,19 +36,19 @@ let MistralEmbedding = class MistralEmbedding extends ai_1.BaseEmbeddings {
|
|
|
36
36
|
return {
|
|
37
37
|
object: response.object,
|
|
38
38
|
model: response.model,
|
|
39
|
-
ModelUsage: new
|
|
39
|
+
ModelUsage: new ModelUsage(response.usage.promptTokens, response.usage.completionTokens),
|
|
40
40
|
vector: vector
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
// Log error details for debugging
|
|
45
|
-
const errorInfo =
|
|
45
|
+
const errorInfo = ErrorAnalyzer.analyzeError(error, 'Mistral');
|
|
46
46
|
console.error('Mistral embedding error:', errorInfo);
|
|
47
47
|
// Return error result
|
|
48
48
|
return {
|
|
49
49
|
object: "object",
|
|
50
50
|
model: params.model || "mistral-embed",
|
|
51
|
-
ModelUsage: new
|
|
51
|
+
ModelUsage: new ModelUsage(0, 0),
|
|
52
52
|
vector: []
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -67,19 +67,19 @@ let MistralEmbedding = class MistralEmbedding extends ai_1.BaseEmbeddings {
|
|
|
67
67
|
return {
|
|
68
68
|
object: response.object,
|
|
69
69
|
model: response.model,
|
|
70
|
-
ModelUsage: new
|
|
70
|
+
ModelUsage: new ModelUsage(response.usage.promptTokens, response.usage.completionTokens),
|
|
71
71
|
vectors: response.data.map((data) => data.embedding)
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
catch (error) {
|
|
75
75
|
// Log error details for debugging
|
|
76
|
-
const errorInfo =
|
|
76
|
+
const errorInfo = ErrorAnalyzer.analyzeError(error, 'Mistral');
|
|
77
77
|
console.error('Mistral embedding error:', errorInfo);
|
|
78
78
|
// Return error result
|
|
79
79
|
return {
|
|
80
80
|
object: "list",
|
|
81
81
|
model: params.model || "mistral-embed",
|
|
82
|
-
ModelUsage: new
|
|
82
|
+
ModelUsage: new ModelUsage(0, 0),
|
|
83
83
|
vectors: []
|
|
84
84
|
};
|
|
85
85
|
}
|
|
@@ -90,17 +90,14 @@ let MistralEmbedding = class MistralEmbedding extends ai_1.BaseEmbeddings {
|
|
|
90
90
|
return allModels;
|
|
91
91
|
}
|
|
92
92
|
catch (error) {
|
|
93
|
-
console.error('Error listing Mistral embedding models:',
|
|
93
|
+
console.error('Error listing Mistral embedding models:', ErrorAnalyzer.analyzeError(error, 'Mistral'));
|
|
94
94
|
return [];
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
(
|
|
98
|
+
MistralEmbedding = __decorate([
|
|
99
|
+
RegisterClass(BaseEmbeddings, 'MistralEmbedding'),
|
|
100
|
+
__metadata("design:paramtypes", [String])
|
|
101
101
|
], MistralEmbedding);
|
|
102
|
-
|
|
103
|
-
// this does nothing but prevents the class from being removed by the tree shaker
|
|
104
|
-
}
|
|
105
|
-
exports.LoadMistralEmbedding = LoadMistralEmbedding;
|
|
102
|
+
export { MistralEmbedding };
|
|
106
103
|
//# sourceMappingURL=mistralEmbedding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mistralEmbedding.js","sourceRoot":"","sources":["../../src/models/mistralEmbedding.ts"],"names":[],"mappings":";;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"mistralEmbedding.js","sourceRoot":"","sources":["../../src/models/mistralEmbedding.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ai-mistral",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "4.1.0",
|
|
4
5
|
"description": "MemberJunction Wrapper for Mistral AI's AI Models",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
@@ -9,20 +10,20 @@
|
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
12
|
"start": "ts-node-dev src/index.ts",
|
|
12
|
-
"build": "tsc",
|
|
13
|
+
"build": "tsc && tsc-alias -f",
|
|
13
14
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
14
15
|
},
|
|
15
16
|
"author": "MemberJunction.com",
|
|
16
17
|
"license": "ISC",
|
|
17
18
|
"devDependencies": {
|
|
18
19
|
"ts-node-dev": "^2.0.0",
|
|
19
|
-
"typescript": "^5.
|
|
20
|
+
"typescript": "^5.9.3"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"@memberjunction/ai": "
|
|
23
|
-
"@memberjunction/global": "
|
|
24
|
-
"@mistralai/mistralai": "^1.
|
|
25
|
-
"axios-retry": "4.
|
|
23
|
+
"@memberjunction/ai": "4.1.0",
|
|
24
|
+
"@memberjunction/global": "4.1.0",
|
|
25
|
+
"@mistralai/mistralai": "^1.14.0",
|
|
26
|
+
"axios-retry": "4.5.0"
|
|
26
27
|
},
|
|
27
28
|
"repository": {
|
|
28
29
|
"type": "git",
|
package/readme.md
CHANGED
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
# @memberjunction/ai-mistral
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MemberJunction AI provider for Mistral AI. This package provides both LLM and embedding capabilities using Mistral's models, implementing `BaseLLM` and `BaseEmbeddings` from `@memberjunction/ai`.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```mermaid
|
|
8
|
+
graph TD
|
|
9
|
+
A["MistralLLM<br/>(Provider)"] -->|extends| B["BaseLLM<br/>(@memberjunction/ai)"]
|
|
10
|
+
C["MistralEmbedding<br/>(Provider)"] -->|extends| D["BaseEmbeddings<br/>(@memberjunction/ai)"]
|
|
11
|
+
A -->|wraps| E["Mistral Client<br/>(@mistralai/mistralai)"]
|
|
12
|
+
C -->|wraps| E
|
|
13
|
+
A -->|provides| F["Chat Completions<br/>+ Streaming"]
|
|
14
|
+
C -->|provides| G["Text Embeddings"]
|
|
15
|
+
B -->|registered via| H["@RegisterClass"]
|
|
16
|
+
D -->|registered via| H
|
|
17
|
+
|
|
18
|
+
style A fill:#7c5295,stroke:#563a6b,color:#fff
|
|
19
|
+
style C fill:#7c5295,stroke:#563a6b,color:#fff
|
|
20
|
+
style B fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
21
|
+
style D fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
22
|
+
style E fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
23
|
+
style F fill:#b8762f,stroke:#8a5722,color:#fff
|
|
24
|
+
style G fill:#b8762f,stroke:#8a5722,color:#fff
|
|
25
|
+
style H fill:#b8762f,stroke:#8a5722,color:#fff
|
|
26
|
+
```
|
|
4
27
|
|
|
5
28
|
## Features
|
|
6
29
|
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **Error Handling**: Robust error handling with detailed reporting
|
|
14
|
-
- **Chat Completion**: Full support for chat-based interactions with Mistral models
|
|
15
|
-
- **Text Embeddings**: Generate vector embeddings for text using Mistral's embedding models
|
|
30
|
+
- **Chat Completions**: Conversational AI with Mistral Large, Medium, Small, and open models
|
|
31
|
+
- **Streaming**: Real-time response streaming support
|
|
32
|
+
- **Text Embeddings**: Vector embeddings via Mistral's embedding models
|
|
33
|
+
- **Thinking/Reasoning**: Extraction of thinking content from reasoning models
|
|
34
|
+
- **JSON Mode**: Response format control for structured outputs
|
|
35
|
+
- **Multimodal Support**: Handling of image content in messages
|
|
16
36
|
|
|
17
37
|
## Installation
|
|
18
38
|
|
|
@@ -20,384 +40,75 @@ A comprehensive wrapper for Mistral AI's models, enabling seamless integration w
|
|
|
20
40
|
npm install @memberjunction/ai-mistral
|
|
21
41
|
```
|
|
22
42
|
|
|
23
|
-
## Requirements
|
|
24
|
-
|
|
25
|
-
- Node.js 16+
|
|
26
|
-
- TypeScript 5.4.5+
|
|
27
|
-
- A Mistral AI API key
|
|
28
|
-
- MemberJunction Core libraries (@memberjunction/ai, @memberjunction/global)
|
|
29
|
-
|
|
30
43
|
## Usage
|
|
31
44
|
|
|
32
|
-
### Basic Setup
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
import { MistralLLM } from '@memberjunction/ai-mistral';
|
|
36
|
-
|
|
37
|
-
// Initialize with your Mistral API key
|
|
38
|
-
const mistralLLM = new MistralLLM('your-mistral-api-key');
|
|
39
|
-
```
|
|
40
|
-
|
|
41
45
|
### Chat Completion
|
|
42
46
|
|
|
43
47
|
```typescript
|
|
44
|
-
import {
|
|
45
|
-
|
|
46
|
-
// Create chat parameters
|
|
47
|
-
const chatParams: ChatParams = {
|
|
48
|
-
model: 'mistral-large-latest', // or other models like 'open-mistral-7b', 'mistral-small-latest'
|
|
49
|
-
messages: [
|
|
50
|
-
{ role: ChatMessageRole.system, content: 'You are a helpful assistant.' },
|
|
51
|
-
{ role: ChatMessageRole.user, content: 'What are the main principles of machine learning?' }
|
|
52
|
-
],
|
|
53
|
-
temperature: 0.7,
|
|
54
|
-
maxOutputTokens: 1000
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
// Get a response
|
|
58
|
-
try {
|
|
59
|
-
const response = await mistralLLM.ChatCompletion(chatParams);
|
|
60
|
-
if (response.success) {
|
|
61
|
-
console.log('Response:', response.data.choices[0].message.content);
|
|
62
|
-
console.log('Token Usage:', response.data.usage);
|
|
63
|
-
console.log('Time Elapsed (ms):', response.timeElapsed);
|
|
64
|
-
} else {
|
|
65
|
-
console.error('Error:', response.errorMessage);
|
|
66
|
-
}
|
|
67
|
-
} catch (error) {
|
|
68
|
-
console.error('Exception:', error);
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### JSON Response Format
|
|
48
|
+
import { MistralLLM } from '@memberjunction/ai-mistral';
|
|
73
49
|
|
|
74
|
-
|
|
75
|
-
// Request a structured JSON response
|
|
76
|
-
const jsonParams: ChatParams = {
|
|
77
|
-
model: 'mistral-large-latest',
|
|
78
|
-
messages: [
|
|
79
|
-
{ role: ChatMessageRole.system, content: 'You are a helpful assistant that responds in JSON format.' },
|
|
80
|
-
{ role: ChatMessageRole.user, content: 'Give me data about the top 3 machine learning algorithms in JSON format' }
|
|
81
|
-
],
|
|
82
|
-
maxOutputTokens: 1000,
|
|
83
|
-
responseFormat: 'JSON' // This will add the appropriate response_format parameter
|
|
84
|
-
};
|
|
50
|
+
const llm = new MistralLLM('your-mistral-api-key');
|
|
85
51
|
|
|
86
|
-
const
|
|
52
|
+
const result = await llm.ChatCompletion({
|
|
53
|
+
model: 'mistral-large-latest',
|
|
54
|
+
messages: [
|
|
55
|
+
{ role: 'user', content: 'Explain transformers in machine learning.' }
|
|
56
|
+
],
|
|
57
|
+
temperature: 0.7
|
|
58
|
+
});
|
|
87
59
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const structuredData = JSON.parse(jsonResponse.data.choices[0].message.content);
|
|
91
|
-
console.log('Structured Data:', structuredData);
|
|
60
|
+
if (result.success) {
|
|
61
|
+
console.log(result.data.choices[0].message.content);
|
|
92
62
|
}
|
|
93
63
|
```
|
|
94
64
|
|
|
95
|
-
### Streaming
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
// Mistral supports streaming responses
|
|
99
|
-
const streamParams: ChatParams = {
|
|
100
|
-
model: 'mistral-large-latest',
|
|
101
|
-
messages: [
|
|
102
|
-
{ role: ChatMessageRole.system, content: 'You are a helpful assistant.' },
|
|
103
|
-
{ role: ChatMessageRole.user, content: 'Write a short story about AI' }
|
|
104
|
-
],
|
|
105
|
-
maxOutputTokens: 1000,
|
|
106
|
-
stream: true, // Enable streaming
|
|
107
|
-
streamCallback: (content: string) => {
|
|
108
|
-
// Handle each chunk of streamed content
|
|
109
|
-
process.stdout.write(content);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
const streamResponse = await mistralLLM.ChatCompletion(streamParams);
|
|
114
|
-
console.log('\nStreaming complete!');
|
|
115
|
-
console.log('Total tokens:', streamResponse.data.usage);
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Multi-Modal Messages
|
|
65
|
+
### Streaming
|
|
119
66
|
|
|
120
67
|
```typescript
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
{
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
{ type: 'text', content: 'What do you see in this image?' },
|
|
129
|
-
{ type: 'image_url', content: 'https://example.com/image.jpg' }
|
|
130
|
-
]
|
|
68
|
+
const result = await llm.ChatCompletion({
|
|
69
|
+
model: 'mistral-small-latest',
|
|
70
|
+
messages: [{ role: 'user', content: 'Write a poem.' }],
|
|
71
|
+
streaming: true,
|
|
72
|
+
streamingCallbacks: {
|
|
73
|
+
OnContent: (content) => process.stdout.write(content),
|
|
74
|
+
OnComplete: () => console.log('\nDone!')
|
|
131
75
|
}
|
|
132
|
-
|
|
133
|
-
maxOutputTokens: 1000
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
// For documents
|
|
137
|
-
const documentParams: ChatParams = {
|
|
138
|
-
model: 'mistral-large-latest',
|
|
139
|
-
messages: [
|
|
140
|
-
{
|
|
141
|
-
role: ChatMessageRole.user,
|
|
142
|
-
content: [
|
|
143
|
-
{ type: 'text', content: 'Summarize this document' },
|
|
144
|
-
{ type: 'file_url', content: 'https://example.com/document.pdf' } // Converted to document_url for Mistral
|
|
145
|
-
]
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
|
-
maxOutputTokens: 1000
|
|
149
|
-
};
|
|
76
|
+
});
|
|
150
77
|
```
|
|
151
78
|
|
|
152
|
-
###
|
|
79
|
+
### Embeddings
|
|
153
80
|
|
|
154
81
|
```typescript
|
|
155
82
|
import { MistralEmbedding } from '@memberjunction/ai-mistral';
|
|
156
|
-
import { EmbedTextParams, EmbedTextsParams } from '@memberjunction/ai';
|
|
157
|
-
|
|
158
|
-
// Initialize the embedding client
|
|
159
|
-
const mistralEmbedding = new MistralEmbedding('your-mistral-api-key');
|
|
160
|
-
|
|
161
|
-
// Embed a single text
|
|
162
|
-
const embedParams: EmbedTextParams = {
|
|
163
|
-
text: 'Machine learning is a subset of artificial intelligence.',
|
|
164
|
-
model: 'mistral-embed' // Optional, defaults to 'mistral-embed'
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
const embedResult = await mistralEmbedding.EmbedText(embedParams);
|
|
168
|
-
console.log('Embedding vector dimensions:', embedResult.vector.length); // 1024 dimensions
|
|
169
|
-
console.log('Token usage:', embedResult.ModelUsage);
|
|
170
|
-
|
|
171
|
-
// Embed multiple texts
|
|
172
|
-
const multiEmbedParams: EmbedTextsParams = {
|
|
173
|
-
texts: [
|
|
174
|
-
'Natural language processing enables computers to understand human language.',
|
|
175
|
-
'Deep learning uses neural networks with multiple layers.',
|
|
176
|
-
'Computer vision allows machines to interpret visual information.'
|
|
177
|
-
],
|
|
178
|
-
model: 'mistral-embed'
|
|
179
|
-
};
|
|
180
83
|
|
|
181
|
-
const
|
|
182
|
-
console.log('Number of embeddings:', multiEmbedResult.vectors.length);
|
|
183
|
-
console.log('Total token usage:', multiEmbedResult.ModelUsage);
|
|
84
|
+
const embedder = new MistralEmbedding('your-mistral-api-key');
|
|
184
85
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
### Direct Access to Mistral Client
|
|
191
|
-
|
|
192
|
-
```typescript
|
|
193
|
-
// Access the underlying Mistral client for advanced usage
|
|
194
|
-
const mistralClient = mistralLLM.Client;
|
|
86
|
+
const result = await embedder.EmbedText({
|
|
87
|
+
text: 'Sample text for embedding',
|
|
88
|
+
model: 'mistral-embed'
|
|
89
|
+
});
|
|
195
90
|
|
|
196
|
-
|
|
197
|
-
const modelList = await mistralClient.models.list();
|
|
198
|
-
console.log('Available models:', modelList);
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
## Supported Models
|
|
202
|
-
|
|
203
|
-
Mistral AI offers several models with different capabilities and price points:
|
|
204
|
-
|
|
205
|
-
- `mistral-large-latest`: Mistral's most powerful model (at the time of writing)
|
|
206
|
-
- `mistral-medium-latest`: Mid-tier model balancing performance and cost
|
|
207
|
-
- `mistral-small-latest`: Smaller, more efficient model
|
|
208
|
-
- `open-mistral-7b`: Open-source 7B parameter model
|
|
209
|
-
- `open-mixtral-8x7b`: Open-source mixture-of-experts model
|
|
210
|
-
|
|
211
|
-
Check the [Mistral AI documentation](https://docs.mistral.ai/) for the latest list of supported models.
|
|
212
|
-
|
|
213
|
-
## API Reference
|
|
214
|
-
|
|
215
|
-
### MistralLLM Class
|
|
216
|
-
|
|
217
|
-
A class that extends BaseLLM to provide Mistral-specific functionality.
|
|
218
|
-
|
|
219
|
-
#### Constructor
|
|
220
|
-
|
|
221
|
-
```typescript
|
|
222
|
-
new MistralLLM(apiKey: string)
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
#### Properties
|
|
226
|
-
|
|
227
|
-
- `Client`: (read-only) Returns the underlying Mistral client instance
|
|
228
|
-
- `SupportsStreaming`: (read-only) Returns `true` - Mistral supports streaming
|
|
229
|
-
|
|
230
|
-
#### Methods
|
|
231
|
-
|
|
232
|
-
- `ChatCompletion(params: ChatParams): Promise<ChatResult>` - Perform a chat completion (supports both streaming and non-streaming)
|
|
233
|
-
- `SummarizeText(params: SummarizeParams): Promise<SummarizeResult>` - Not implemented yet
|
|
234
|
-
- `ClassifyText(params: ClassifyParams): Promise<ClassifyResult>` - Not implemented yet
|
|
235
|
-
|
|
236
|
-
### MistralEmbedding Class
|
|
237
|
-
|
|
238
|
-
A class that extends BaseEmbeddings to provide Mistral embedding functionality.
|
|
239
|
-
|
|
240
|
-
#### Constructor
|
|
241
|
-
|
|
242
|
-
```typescript
|
|
243
|
-
new MistralEmbedding(apiKey: string)
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
#### Properties
|
|
247
|
-
|
|
248
|
-
- `Client`: (read-only) Returns the underlying Mistral client instance
|
|
249
|
-
|
|
250
|
-
#### Methods
|
|
251
|
-
|
|
252
|
-
- `EmbedText(params: EmbedTextParams): Promise<EmbedTextResult>` - Generate embedding for a single text
|
|
253
|
-
- `EmbedTexts(params: EmbedTextsParams): Promise<EmbedTextsResult>` - Generate embeddings for multiple texts
|
|
254
|
-
- `GetEmbeddingModels(): Promise<any>` - Get list of available embedding models
|
|
255
|
-
|
|
256
|
-
## Response Format Control
|
|
257
|
-
|
|
258
|
-
The wrapper supports different response formats:
|
|
259
|
-
|
|
260
|
-
```typescript
|
|
261
|
-
// For JSON responses
|
|
262
|
-
const params: ChatParams = {
|
|
263
|
-
// ...other parameters
|
|
264
|
-
responseFormat: 'JSON'
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
// For regular text responses (default)
|
|
268
|
-
const textParams: ChatParams = {
|
|
269
|
-
// ...other parameters
|
|
270
|
-
// No need to specify responseFormat for regular text
|
|
271
|
-
};
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## Error Handling
|
|
275
|
-
|
|
276
|
-
The wrapper provides detailed error information:
|
|
277
|
-
|
|
278
|
-
```typescript
|
|
279
|
-
try {
|
|
280
|
-
const response = await mistralLLM.ChatCompletion(params);
|
|
281
|
-
if (!response.success) {
|
|
282
|
-
console.error('Error:', response.errorMessage);
|
|
283
|
-
console.error('Status:', response.statusText);
|
|
284
|
-
console.error('Exception:', response.exception);
|
|
285
|
-
}
|
|
286
|
-
} catch (error) {
|
|
287
|
-
console.error('Exception occurred:', error);
|
|
288
|
-
}
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
## Token Usage Tracking
|
|
292
|
-
|
|
293
|
-
Monitor token usage for billing and quota management:
|
|
294
|
-
|
|
295
|
-
```typescript
|
|
296
|
-
const response = await mistralLLM.ChatCompletion(params);
|
|
297
|
-
if (response.success) {
|
|
298
|
-
console.log('Prompt Tokens:', response.data.usage.promptTokens);
|
|
299
|
-
console.log('Completion Tokens:', response.data.usage.completionTokens);
|
|
300
|
-
console.log('Total Tokens:', response.data.usage.totalTokens);
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
## Special Behaviors
|
|
305
|
-
|
|
306
|
-
### Message Formatting
|
|
307
|
-
- The wrapper automatically ensures Mistral's requirement that the last message must be from 'user' or 'tool'
|
|
308
|
-
- If the last message is not from a user, a placeholder user message "ok" is automatically appended
|
|
309
|
-
|
|
310
|
-
### Multi-Modal Content
|
|
311
|
-
- Image URLs are passed through as `image_url` type
|
|
312
|
-
- File URLs are converted to `document_url` type for Mistral compatibility
|
|
313
|
-
- Unsupported content types are filtered out with a warning
|
|
314
|
-
|
|
315
|
-
## Limitations
|
|
316
|
-
|
|
317
|
-
Currently, the wrapper implements:
|
|
318
|
-
- Chat completion functionality with full streaming support
|
|
319
|
-
- Text embedding functionality with single and batch processing
|
|
320
|
-
- Token usage tracking for both chat and embeddings
|
|
321
|
-
|
|
322
|
-
Not yet implemented:
|
|
323
|
-
- `SummarizeText` functionality
|
|
324
|
-
- `ClassifyText` functionality
|
|
325
|
-
- `effortLevel`/`reasoning_effort` parameter (not currently supported by Mistral API)
|
|
326
|
-
|
|
327
|
-
## Integration with MemberJunction
|
|
328
|
-
|
|
329
|
-
This package is designed to work seamlessly with the MemberJunction AI framework:
|
|
330
|
-
|
|
331
|
-
### Class Registration
|
|
332
|
-
Both `MistralLLM` and `MistralEmbedding` are automatically registered with the MemberJunction class factory using the `@RegisterClass` decorator:
|
|
333
|
-
|
|
334
|
-
```typescript
|
|
335
|
-
// Classes are registered and can be instantiated via the class factory
|
|
336
|
-
import { ClassFactory } from '@memberjunction/global';
|
|
337
|
-
|
|
338
|
-
const mistralLLM = ClassFactory.CreateInstance<BaseLLM>(BaseLLM, 'MistralLLM', apiKey);
|
|
339
|
-
const mistralEmbedding = ClassFactory.CreateInstance<BaseEmbeddings>(BaseEmbeddings, 'MistralEmbedding', apiKey);
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### Tree-Shaking Prevention
|
|
343
|
-
The package exports loader functions to prevent tree-shaking:
|
|
344
|
-
|
|
345
|
-
```typescript
|
|
346
|
-
import { LoadMistralLLM, LoadMistralEmbedding } from '@memberjunction/ai-mistral';
|
|
347
|
-
|
|
348
|
-
// Call these in your application initialization to ensure classes are registered
|
|
349
|
-
LoadMistralLLM();
|
|
350
|
-
LoadMistralEmbedding();
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
## Dependencies
|
|
354
|
-
|
|
355
|
-
- `@mistralai/mistralai`: ^1.6.0 - Official Mistral AI Node.js SDK
|
|
356
|
-
- `@memberjunction/ai`: 2.43.0 - MemberJunction AI core framework
|
|
357
|
-
- `@memberjunction/global`: 2.43.0 - MemberJunction global utilities
|
|
358
|
-
- `axios-retry`: 4.3.0 - Retry mechanism for API calls
|
|
359
|
-
|
|
360
|
-
## Development
|
|
361
|
-
|
|
362
|
-
### Building
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
npm run build
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
### Development Mode
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
npm start
|
|
91
|
+
console.log(`Dimensions: ${result.vector.length}`);
|
|
372
92
|
```
|
|
373
93
|
|
|
374
94
|
## Supported Parameters
|
|
375
95
|
|
|
376
|
-
|
|
96
|
+
| Parameter | Supported | Notes |
|
|
97
|
+
|-----------|-----------|-------|
|
|
98
|
+
| temperature | Yes | Controls randomness |
|
|
99
|
+
| maxOutputTokens | Yes | Maximum response length |
|
|
100
|
+
| topP | Yes | Nucleus sampling |
|
|
101
|
+
| seed | Yes | Deterministic outputs |
|
|
102
|
+
| responseFormat | Yes | JSON mode support |
|
|
103
|
+
| streaming | Yes | Real-time streaming |
|
|
377
104
|
|
|
378
|
-
|
|
379
|
-
- `temperature` - Controls randomness in the output (0.0-1.0)
|
|
380
|
-
- `maxOutputTokens` - Maximum number of tokens to generate
|
|
381
|
-
- `topP` - Nucleus sampling threshold (0.0-1.0)
|
|
382
|
-
- `topK` - Limits vocabulary to top K tokens
|
|
383
|
-
- `seed` - For deterministic outputs (passed as `randomSeed` to Mistral API)
|
|
384
|
-
- `stopSequences` - Array of sequences where the API will stop generating
|
|
385
|
-
- `responseFormat` - Output format (Text or JSON)
|
|
105
|
+
## Class Registration
|
|
386
106
|
|
|
387
|
-
|
|
388
|
-
- `
|
|
389
|
-
- `presencePenalty` - Not available in Mistral API
|
|
390
|
-
- `minP` - Not available in Mistral API
|
|
107
|
+
- `MistralLLM` -- Registered via `@RegisterClass(BaseLLM, 'MistralLLM')`
|
|
108
|
+
- `MistralEmbedding` -- Registered via `@RegisterClass(BaseEmbeddings, 'MistralEmbedding')`
|
|
391
109
|
|
|
392
|
-
##
|
|
393
|
-
|
|
394
|
-
ISC
|
|
395
|
-
|
|
396
|
-
## Contributing
|
|
110
|
+
## Dependencies
|
|
397
111
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
3. Add appropriate error handling
|
|
402
|
-
4. Update documentation for any new features
|
|
403
|
-
5. Test with various Mistral models
|
|
112
|
+
- `@memberjunction/ai` - Core AI abstractions
|
|
113
|
+
- `@memberjunction/global` - Class registration
|
|
114
|
+
- `@mistralai/mistralai` - Official Mistral AI SDK
|