Mistral AI 已确立其作为欧洲领先 AI 提供商的地位,其高性能模型在多语言理解、代码生成、函数调用和结构化输出方面表现卓越。对于希望在 Delphi 应用程序中集成 Mistral 的开发者,sgcWebSockets 提供了 TsgcHTTP_API_Mistral——一个全面的原生组件,以简洁、类型安全的 Delphi 代码封装了完整的 Mistral API。
无论是构建智能聊天机器人、生成结构化 JSON 输出、分析图像、创建用于语义搜索的嵌入向量,还是编排工具增强的工作流,该组件都能直接访问每项 Mistral 功能。无需 REST 样板代码,无需 JSON 解析,只需拖放组件、设置 API 密钥,即可开始构建。
完整 API 覆盖
Mistral API 的所有主要功能均开箱即用。
| 对话补全 发送带系统提示词的消息,同步或流式接收响应。完整控制温度、top-p 和停止序列。 |
实时流式传输 通过 Server-Sent Events 逐 Token 流式传输响应,构建实时显示答案的响应式 UI。 |
视觉理解 通过发送 Base64 编码数据或图片 URL 与文本提示词一起分析图像。Pixtral 模型可描述、解读和推理视觉内容。 |
| JSON 模式 强制 Mistral 返回有效的 JSON 输出,非常适合数据提取、结构化响应和 API 集成管道。 |
工具调用 — 函数调用 使用 JSON Schema 定义自定义工具。Mistral 决定何时调用,支持智能体式多步骤工作流。 |
嵌入向量 生成高质量向量嵌入,为语义搜索、聚类、分类和推荐系统提供支持。 |
| 安全提示词 通过单个属性启用 Mistral 内置的安全护栏,自动过滤有害或不当内容。 |
模型管理 以编程方式列出所有可用的 Mistral 模型,查询模型 ID、所有者、创建日期和能力。 |
内置重试与日志记录 发生瞬时故障时自动重试,可配置重试次数和等待间隔。完整的请求/响应日志记录用于调试。 |
快速入门
在一分钟内将 Mistral AI 集成到您的 Delphi 项目中。拖放组件、配置 API 密钥并发送第一条消息。
// Create the component and configure the API key
var
Mistral: TsgcHTTP_API_Mistral;
vResponse: string;
begin
Mistral := TsgcHTTP_API_Mistral.Create(nil);
Try
Mistral.MistralOptions.ApiKey := 'YOUR_API_KEY';
// Send a simple message to Mistral
vResponse := Mistral._CreateMessage(
'mistral-large-latest', 'Hello, Mistral!');
ShowMessage(vResponse);
Finally
Mistral.Free;
End;
end;
两种 API 风格:每个功能均提供便捷方法(基于字符串,代码最少)和类型化请求/响应类(完整控制,类型安全)。
对话补全与流式传输
系统提示词
vResponse := Mistral._CreateMessageWithSystem(
'mistral-large-latest',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
实时流式传输
// Enable streaming via SSE
Mistral.OnHTTPAPISSE := OnSSEEvent;
Mistral._CreateMessageStream('mistral-large-latest',
'Explain the theory of relativity.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
Memo1.Lines.Add(aData);
end;
高级类型化 API
var
oRequest: TsgcMistralClass_Request_ChatCompletion;
oMessage: TsgcMistralClass_Request_Message;
oResponse: TsgcMistralClass_Response_ChatCompletion;
begin
oRequest := TsgcMistralClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'mistral-large-latest';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oRequest.TopP := 0.9;
oRequest.SafePrompt := True;
oRequest.RandomSeed := 42;
oMessage := TsgcMistralClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Mistral.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].Message.Content);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
视觉理解 — 图像分析
// Load an image and ask Mistral to analyze it
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('architecture-diagram.png'));
ShowMessage(Mistral._CreateVisionMessage(
'pixtral-large-latest',
'Describe the architecture shown in this diagram.',
vBase64, 'image/png'));
end;
JSON 模式
// Generate structured JSON output
vResponse := Mistral._CreateMessageJSON(
'mistral-large-latest',
'Extract the name, age, and city from: John is 30, lives in Madrid.');
// Returns: {"name": "John", "age": 30, "city": "Madrid"}
oRequest.ResponseFormat := 'json_object';
工具调用 — 函数调用
// Define a tool with JSON Schema
oTool := TsgcMistralClass_Request_Tool.Create;
oTool.FunctionName := 'get_weather';
oTool.FunctionDescription := 'Get the current weather in a location';
oTool.FunctionParameters :=
'{"type":"object","properties":{"location":{"type":"string",' +
'"description":"City and country"}},"required":["location"]}';
oRequest.Tools.Add(oTool);
oRequest.ToolChoice := 'auto';
oResponse := Mistral.CreateMessage(oRequest);
if oResponse.Choices[0].FinishReason = 'tool_calls' then
begin
for i := 0 to Length(oResponse.Choices[0].Message.ToolCalls) - 1 do
begin
vToolId := oResponse.Choices[0].Message.ToolCalls[i].Id;
vFuncName := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Name;
vFuncArgs := oResponse.Choices[0].Message.ToolCalls[i].FunctionCall.Arguments;
// Execute the tool and return the result
end;
end;
嵌入向量
// Generate embeddings for a text
var
vEmbedding: string;
begin
vEmbedding := Mistral._CreateEmbeddings(
'mistral-embed',
'Delphi is a powerful programming language.');
ShowMessage(vEmbedding);
end;
配置与选项
| 属性 | 说明 |
|---|---|
MistralOptions.ApiKey | 您的 Mistral API 密钥(必填) |
HttpOptions.ReadTimeout | HTTP 读取超时(毫秒,默认 60000) |
LogOptions.Enabled | 启用请求/响应日志记录 |
RetryOptions.Enabled | 发生瞬时故障时自动重试 |
RetryOptions.Retries | 最大重试次数(默认 3) |
RetryOptions.Wait | 重试间隔等待时间(毫秒,默认 3000) |
请求参数
| 参数 | 说明 |
|---|---|
Temperature | 采样温度(0.0–2.0),值越低输出越确定。 |
TopP | 核采样(0.0–1.0),控制累积概率截断。 |
MaxTokens | 响应的最大 Token 数(默认 4096)。 |
SafePrompt | 启用内置安全护栏进行内容过滤。 |
RandomSeed | 固定随机种子以获得可重现的输出,适用于测试。 |
ResponseFormat | 设为 'json_object' 可保证输出 JSON 格式。 |
ToolChoice | 控制工具选择:'auto'、'none' 或 'required'。 |
欧洲 AI 优势:Mistral 总部位于法国,提供欧盟境内推理服务,对于有欧洲数据驻留要求的组织而言是绝佳选择。结合 sgcWebSockets 组件内置的重试逻辑、日志记录和类型安全 API,您可以获得完全符合法规的生产级 AI 集成。
