@flink-app/mistral-适应器
Flink AI框架的Mistral AI适配器. 通过使用官方的 Chat Professions API 提供与 Mistral 模型的集成 @mistralai/mistralai SDK(英语:SDK).
安装
npm install @flink-app/mistral-adapter
# or
pnpm add @flink-app/mistral-adapter
这个 @mistralai/mistralai 软件包包含为依赖,所以不需要单独安装.
使用量
基本设置
import { MistralAdapter } from "@flink-app/mistral-adapter";
import { FlinkApp } from "@flink-app/flink";
const app = new FlinkApp({
ai: {
llms: {
default: new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "mistral-large-4-0"
}),
},
},
});
await app.start();
遗产 API( 仍然支持 ):
// Backward-compatible constructor
new MistralAdapter(process.env.MISTRAL_API_KEY!, "mistral-medium-latest")
代理指令
使用 instructions 属性 :
// src/agents/support_agent.ts
export const Agent: FlinkAgentProps = {
name: "support_agent",
instructions: "You are a helpful customer support agent.",
tools: ["get_order_status"],
model: { adapterId: "default" },
};
如何运作:
- 指令是作为系统信息准备给每个对话
- 遵循 Vercel AI SDK 一致性模式
- 对话中的其他系统消息按原样传送
多个适配器
可以注册多个具有不同配置的Mistral适配器:
const app = new FlinkApp({
ai: {
llms: {
// Frontier model - best for agentic and coding use cases
default: new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "mistral-medium-latest"
}),
// Efficient model - good balance of capability and cost
fast: new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "mistral-small-latest"
}),
// Code completion specialist
code: new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "codestral-latest"
}),
},
},
});
理由(中型大4型、中型3.5型、小型4型)
Mistral的当代是 混合指令和理由 模型:同一个模型直接回答或首先思考,每个请求以 reasoning_effort适配器将它暴露为 reasoningEffort 选项 :
const adapter = new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "mistral-large-4-0",
reasoningEffort: "high", // "high" | "none" (+ "minimal" | "low" | "medium" | "xhigh" accepted by the API)
});
| 数值 | 行为 |
|---|---|
| (已发出) | 未发送参数; 该模型使用默认值 |
"high" | 在回答/工具调用前充分思考追踪. Mistral 推荐此用于代理和编码工作. 花费更多的产出代币. |
"none" | 最小的思维,没有思维块返回 |
思考如何通过Flink:
- 思绪如
reasoning块并被物剂浮出水面reasoning_delta活动fullStream。它从未包括在textStream或者说result.message。 。 。 . - 追踪被存储为
thinking助理消息的内容块和 在以后的回合和工具呼叫中重放到MistralMistral的文档警告说,在转弯之间抛出微量会显著地降低输出质量,所以这自动发生. - 没有任何痕迹的助理消息仍然以平庸的字符串形式发出,完全如前.
for await (const event of response.fullStream) {
if (event.type === "reasoning_delta") process.stderr.write(event.delta); // model's thinking
if (event.type === "text_delta") process.stdout.write(event.delta); // answer
}
工具调用不变: Mistral Large 4 使用相同的 tools 编号 : tool_calls 编号 : role: "tool" 聊天补全格式作为更早的模型,包括并行的工具调用.
结构化输出和工具选择
经纪人的 model.structuredOutput 以 responseFormat: { type: "json_schema", jsonSchema: { name, description, schemaDefinition, strict } } (单位:千美元)strict 默认为 true) (中文(简体) ). 解析后的答复如下: result.structured。 。 。 .
model.toolChoice 以 toolChoice数字 : "auto", (中文(简体) ), "none" 财务报告和审定财务报表 "required" 路过, { type: "tool", name } 变成 { type: "function", function: { name } }。只有当请求带有工具时才发出.
除错日志
const adapter = new MistralAdapter({
apiKey: process.env.MISTRAL_API_KEY!,
model: "mistral-medium-latest",
debug: true // Enable debug logging for this adapter
});
何时 debug: true,适配器记录了LLM作出的完整请求参数和工具调用决定.
支持的模式
这个适配器与所有Mistral聊天模式配合. 截止2026年10月:
| 使用大小写 | 推荐模式 | 为什么 |
|---|---|---|
| 边框/代理/编码/推理 | mistral-large-4-0 | Mistral Lige 4 - 1T参数(52B活性)开量混合指令-和-解释-MOE,本土多模式,160+语言. Mistral 广告为 1M- token 上下文,但预览 API 路由目前报告为~512K;检查您使用的端点限制. 支助 reasoningEffort。 。 。 . |
| 平衡代理/编码 | mistral-medium-latest | Mistral Medium 3.5 - 用于代理和编码使用案例的前沿级多模式优化。 支助 reasoningEffort。 。 。 . |
| 具有成本效益的任务 | mistral-small-latest | Mistral Small 4 - 混合模型统一指示,推理,和编码. 支助 reasoningEffort。 。 。 . |
| 上一代( Apache 2. 0) | mistral-large-latest | Mistral Lige 3 - 通用多式车型. 验证哪个版本 -latest 化名在Mistral的模型文档中确定. |
| 代码补全 | codestral-latest | 代码- 代码补全专家 |
| 边缘/ 小足迹 | (3B、8B、14B) | 契约文本和愿景模式 |
Mistral Large 4在Mistral的API上公开预览(发行于2026-10-06). 绑定 mistral-large-4-0 编号而不是a -latest 别名.
见 迷雾模型概览 为完整的,最新的型号ID列表.
特征
- ✅ 完整工具呼叫支持 - 在单一答复中包括并行工具呼叫
- ✅ 理由 - 说吧
reasoning_effort混合模型; 思维流程为reasoning_delta,不包含回答文本,然后在转弯处重放 - ✅ 事件流 - 通过SDK的
chat.stream() - ✅ 多式联运投入 - 文本+图像内容块(https URL和base64数据URL)
- ✅ 工具调用 ID 正常化 - Mistral要求工具调用ID精确为9个字母数字字符;来自对话历史的ID来源于另一个提供者,是决定性的重新映射
- ✅ 调用跟踪 - 根据请求报告迅速和完成的标志
- ✅ Schema 消毒 - 为Mistral兼容性清理工具输入计划
API 密码
MistralAdapter
new MistralAdapter(options: MistralAdapterOptions)
new MistralAdapter(apiKey: string, model: string) // legacy
| 选项 | 类型 | 默认 | 说明 |
|---|---|---|---|
apiKey | string | —— 说 | Mistral API 密钥 |
model | string | —— 说 | 型号标识,例如:. mistral-large-4-0 |
reasoningEffort | MistralReasoningEffort | (未发送) | "none" | "minimal" | "low" | "medium" | "high" | "xhigh"; 作为 reasoning_effort |
debug | boolean | false | 日志完整请求参数和工具调用决定 |
输出 : MistralAdapter, (中文(简体) ), MistralAdapterOptions, (中文(简体) ), MistralReasoningEffort。 。 。 .
结构说明
Flink 整合
适配器执行 Flink 的 LLMAdapter 接口 :
- 闪闪发光
instructions∗ 预编为{ role: "system" }消息 - 闪闪发光
messages• 转换为米斯特拉尔聊天信息(系统/用户/助理/工具角色) - Flink 的工具 schema 已转换为 Mistral 函数格式(
{ type: "function", function: {...} }(中文(简体) ) - 流出三角洲 已映射到Flink
LLMStreamChunk事件(文本、推理、工具 调用、使用、完成) - 闪闪发光
thinking内容块QQ MistralThinkChunks (单位:千美元){ type: "thinking", thinking: [{ type: "text", text }], signature? }(中文(简体) )
每一次API呼叫都是一个转弯:
- Flink的 AgentRunner 处理多回合循环(调用 API ~ 执行工具 ~ 再次调用 API)
- 工具结果以
{ role: "tool", toolCallId, content }信件
仅限无害环境管理的 SDK
这个 @mistralai/mistralai SDK v2 仅限无害环境管理. 此适配器被编译为 CommunityJS( 如 Flink 生态系统的其余部分) , 通过动态加载 SDK import(),因此它在没有配置的通用JS和无害环境管理应用中都起作用.
温度
温度只有在代理明确配置一个时才被发送到API——Mistral建议值为0.0至0.7之间,默认值因型号而异.
所需资源
- 节点.js 18
- @flink-app/flink >= 2.0.0-alpha.125 (用于:
reasoning流块和thinking内容块)
许可证
麻省理工学院
资源
- Mistral AI 文档
- 迷雾模型概览
- 函数调用指南
- 理由指南 (单位:千美元)
reasoning_effort,思维块) - 4号大雾