Skip to content

Commit 46e26ab

Browse files
committed
add support for Mistral model in text generation and configuration
1 parent 1f0016a commit 46e26ab

File tree

4 files changed

+87
-0
lines changed

4 files changed

+87
-0
lines changed

agent/src/index.ts

+5
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,11 @@ export function getTokenForProvider(
376376
character.settings?.secrets?.GOOGLE_GENERATIVE_AI_API_KEY ||
377377
settings.GOOGLE_GENERATIVE_AI_API_KEY
378378
);
379+
case ModelProviderName.MISTRAL:
380+
return (
381+
character.settings?.secrets?.MISTRAL_API_KEY ||
382+
settings.MISTRAL_API_KEY
383+
);
379384
case ModelProviderName.LETZAI:
380385
return (
381386
character.settings?.secrets?.LETZAI_API_KEY ||

packages/core/generation.ts

+56
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { createAnthropic } from "@ai-sdk/anthropic";
22
import { createGoogleGenerativeAI } from "@ai-sdk/google";
3+
import { createMistral } from "@ai-sdk/mistral";
34
import { createGroq } from "@ai-sdk/groq";
45
import { createOpenAI } from "@ai-sdk/openai";
56
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
@@ -420,6 +421,34 @@ export async function generateText({
420421
break;
421422
}
422423

424+
case ModelProviderName.MISTRAL: {
425+
const mistral = createMistral({
426+
apiKey,
427+
fetch: runtime.fetch,
428+
});
429+
430+
const { text: mistralResponse } = await aiGenerateText({
431+
model: mistral(model),
432+
prompt: context,
433+
system:
434+
runtime.character.system ??
435+
settings.SYSTEM_PROMPT ??
436+
undefined,
437+
tools: tools,
438+
onStepFinish: onStepFinish,
439+
maxSteps: maxSteps,
440+
temperature: temperature,
441+
maxTokens: max_response_length,
442+
frequencyPenalty: frequency_penalty,
443+
presencePenalty: presence_penalty,
444+
experimental_telemetry: experimental_telemetry,
445+
});
446+
447+
response = mistralResponse;
448+
elizaLogger.debug("Received response from Mistral model.");
449+
break;
450+
}
451+
423452
case ModelProviderName.ANTHROPIC: {
424453
elizaLogger.debug("Initializing Anthropic model.");
425454

@@ -1687,6 +1716,8 @@ export async function handleProvider(
16871716
});
16881717
case ModelProviderName.GOOGLE:
16891718
return await handleGoogle(options);
1719+
case ModelProviderName.MISTRAL:
1720+
return await handleMistral(options);
16901721
case ModelProviderName.REDPILL:
16911722
return await handleRedPill(options);
16921723
case ModelProviderName.OPENROUTER:
@@ -1831,6 +1862,31 @@ async function handleGoogle({
18311862
});
18321863
}
18331864

1865+
/**
1866+
* Handles object generation for Mistral models.
1867+
*
1868+
* @param {ProviderOptions} options - Options specific to Mistral.
1869+
* @returns {Promise<GenerateObjectResult<unknown>>} - A promise that resolves to generated objects.
1870+
*/
1871+
async function handleMistral({
1872+
model,
1873+
schema,
1874+
schemaName,
1875+
schemaDescription,
1876+
mode,
1877+
modelOptions,
1878+
}: ProviderOptions): Promise<GenerateObjectResult<unknown>> {
1879+
const mistral = createMistral();
1880+
return await aiGenerateObject({
1881+
model: mistral(model),
1882+
schema,
1883+
schemaName,
1884+
schemaDescription,
1885+
mode,
1886+
...modelOptions,
1887+
});
1888+
}
1889+
18341890
/**
18351891
* Handles object generation for Redpill models.
18361892
*

packages/core/models.ts

+24
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,30 @@ export const models: Models = {
204204
"text-embedding-004",
205205
},
206206
},
207+
[ModelProviderName.MISTRAL]: {
208+
settings: {
209+
stop: [],
210+
maxInputTokens: 128000,
211+
maxOutputTokens: 8192,
212+
frequency_penalty: 0.4,
213+
presence_penalty: 0.4,
214+
temperature: 0.7,
215+
},
216+
model: {
217+
[ModelClass.SMALL]:
218+
settings.SMALL_MISTRAL_MODEL ||
219+
settings.MISTRAL_MODEL ||
220+
"mistral-small-latest",
221+
[ModelClass.MEDIUM]:
222+
settings.MEDIUM_MISTRAL_MODEL ||
223+
settings.MISTRAL_MODEL ||
224+
"mistral-large-latest",
225+
[ModelClass.LARGE]:
226+
settings.LARGE_MISTRAL_MODEL ||
227+
settings.MISTRAL_MODEL ||
228+
"mistral-large-latest",
229+
},
230+
},
207231
[ModelProviderName.REDPILL]: {
208232
endpoint: "https://api.red-pill.ai/v1",
209233
settings: {

packages/core/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ export type Models = {
198198
[ModelProviderName.TOGETHER]: Model;
199199
[ModelProviderName.LLAMALOCAL]: Model;
200200
[ModelProviderName.GOOGLE]: Model;
201+
[ModelProviderName.MISTRAL]: Model;
201202
[ModelProviderName.CLAUDE_VERTEX]: Model;
202203
[ModelProviderName.REDPILL]: Model;
203204
[ModelProviderName.OPENROUTER]: Model;
@@ -229,6 +230,7 @@ export enum ModelProviderName {
229230
TOGETHER = "together",
230231
LLAMALOCAL = "llama_local",
231232
GOOGLE = "google",
233+
MISTRAL = "mistral",
232234
CLAUDE_VERTEX = "claude_vertex",
233235
REDPILL = "redpill",
234236
OPENROUTER = "openrouter",

0 commit comments

Comments
 (0)