Grok 由 xAI 开发,是一款高性能 AI 模型,专为快速智能响应而设计,具备实时知识和高级推理能力。对于希望在应用中集成 Grok 的 Delphi 开发者,sgcWebSockets 提供 TsgcHTTP_API_Grok——一个使用简洁、类型安全的 Delphi 代码封装完整 xAI Grok API 的原生组件。
无论您是在构建对话式助手、分析图像、编排工具增强型工作流,还是流式传输实时响应,此组件都能让您直接访问每项 Grok 功能。无需 REST 样板代码,无需手动处理 JSON,只需放置组件、设置 API 密钥,即可开始构建。
完整 API 覆盖
xAI Grok API 的每项主要功能均开箱即用。
|
聊天补全 发送带系统提示的消息,同步或流式接收响应。完全控制温度、top-p、频率和存在惩罚。 |
实时流式传输 通过 Server-Sent Events 逐词元流式传输响应,构建能在生成过程中实时显示答案的响应式 UI。 |
视觉理解 将 base64 编码的图像数据或图像 URL 与文本提示一起发送,Grok 对视觉内容进行描述、解读和推理。 |
|
工具调用——函数调用 使用 JSON Schema 定义自定义工具,Grok 决定何时调用它们,支持构建智能体式的多步工作流。 |
模型管理 以编程方式列出所有可用 Grok 模型,查询模型 ID 和能力以选择最佳方案。 |
内置重试与日志 可配置重试次数和等待间隔,在瞬态故障时自动重试。提供完整请求/响应日志以便调试。 |
快速开始
在不到一分钟内将 xAI Grok 集成到您的 Delphi 项目中。放置组件、配置 API 密钥,发送第一条消息。
// Create the component and configure the API key
var
Grok: TsgcHTTP_API_Grok;
vResponse: string;
begin
Grok := TsgcHTTP_API_Grok.Create(nil);
Try
Grok.GrokOptions.ApiKey := 'YOUR_API_KEY';
// Send a simple message to Grok
vResponse := Grok._CreateMessage(
'grok-3', 'Hello, Grok!');
ShowMessage(vResponse);
Finally
Grok.Free;
End;
end;
两种 API 风格。每项功能均提供便捷方法(基于字符串,代码最少)和类型化请求/响应类(完全控制,类型安全)两种方式,可根据需要选择。
聊天补全与流式传输
聊天补全 API 是每次 Grok 交互的基础。发送文本(可附加系统提示),以同步或实时流式方式接收响应。
系统提示
通过提供设置对话上下文、人格或约束条件的系统提示来控制 Grok 的行为。
vResponse := Grok._CreateMessageWithSystem(
'grok-3',
'You are a helpful assistant that responds in Spanish.',
'What is the capital of France?');
// Returns: "La capital de Francia es París."
实时流式传输
对于响应式用户界面,通过 Server-Sent Events 逐词元流式传输 Grok 的响应。分配 OnHTTPAPISSE 事件处理程序并调用 _CreateMessageStream。
// Enable streaming via SSE
Grok.OnHTTPAPISSE := OnSSEEvent;
Grok._CreateMessageStream('grok-3',
'Explain the theory of relativity.');
procedure TForm1.OnSSEEvent(Sender: TObject;
const aEvent, aData: string; var Cancel: Boolean);
begin
// aData: JSON payload with generated content
Memo1.Lines.Add(aData);
end;
高级类型化 API
若需完全控制请求参数(温度、top-p、频率惩罚、存在惩罚、停止序列、补全数量),请使用类型化请求和响应类。
var
oRequest: TsgcGrokClass_Request_ChatCompletion;
oMessage: TsgcGrokClass_Request_Message;
oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
oRequest := TsgcGrokClass_Request_ChatCompletion.Create;
Try
oRequest.Model := 'grok-3';
oRequest.MaxTokens := 2048;
oRequest.Temperature := 0.7;
oRequest.TopP := 0.9;
oRequest.FrequencyPenalty := 0.5;
oRequest.N := 1;
oMessage := TsgcGrokClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Explain quantum computing in simple terms.';
oRequest.Messages.Add(oMessage);
oResponse := Grok.CreateMessage(oRequest);
Try
if Length(oResponse.Choices) > 0 then
ShowMessage(oResponse.Choices[0].Message.Content);
Finally
oResponse.Free;
End;
Finally
oRequest.Free;
End;
end;
视觉——图像理解
Grok 可以分析图像并进行推理。将照片、截图、图表或图形与文本提示一起发送,获取详细描述、数据提取或视觉问答。
// Load an image and ask Grok to analyze it
var
vBase64: string;
begin
vBase64 := sgcBase64Encode(LoadFileToBytes('dashboard-screenshot.png'));
ShowMessage(Grok._CreateVisionMessage(
'grok-3',
'Analyze this dashboard and summarize the key metrics.',
vBase64, 'image/png'));
end;
使用场景。自动化报告分析、从截图中提取数据、生成视觉内容描述,或构建具备图像感知能力的助手——全部通过原生 Delphi 代码实现。
工具调用——函数调用
使用 JSON Schema 定义自定义工具,Grok 将决定何时以何种方式调用它们。这是构建将 AI 与您的业务逻辑连接起来的智能体式多步工作流的基础。
var
oRequest: TsgcGrokClass_Request_ChatCompletion;
oTool: TsgcGrokClass_Request_Tool;
oResponse: TsgcGrokClass_Response_ChatCompletion;
begin
// Define a tool with JSON Schema
oTool := TsgcGrokClass_Request_Tool.Create;
oTool.Name := 'search_database';
oTool.Description := 'Search the product database by keyword';
oTool.Parameters :=
'{"type":"object","properties":{"query":{"type":"string",' +
'"description":"Search keyword"}},"required":["query"]}';
oRequest.Tools.Add(oTool);
oRequest.ToolChoice := 'auto';
oResponse := Grok.CreateMessage(oRequest);
// Check if Grok wants to call a tool
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;
模型管理
以编程方式查询可用 Grok 模型。列出所有模型以发现新功能。
// List all available Grok models
vModels := Grok._GetModels;
// Typed API: access model properties directly
var
oModels: TsgcGrokClass_Response_Models;
i: Integer;
begin
oModels := Grok.GetModels;
Try
for i := 0 to Length(oModels.Data) - 1 do
Memo1.Lines.Add(oModels.Data[i].Id);
Finally
oModels.Free;
End;
end;
配置与选项
通过全面的配置选项微调组件行为。
| 属性 | 说明 |
|---|---|
GrokOptions.ApiKey |
您的 xAI 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 |
响应中的最大词元数(默认:4096)。 |
FrequencyPenalty |
根据词元在文本中出现的频率对其施加惩罚。 |
PresencePenalty |
根据词元是否已出现在文本中对其施加惩罚。 |
N |
生成的补全数量(默认:1)。 |
ToolChoice |
控制工具选择方式:'auto'、'none' 或 'required'。 |
为何选择 Grok?xAI 以专注于有用性和实时知识为目标构建了 Grok,使其在需要最新信息和细致推理的任务中表现出色。sgcWebSockets 组件让您可以轻松在 Grok 和其他 AI 提供商之间切换,同时保持 Delphi 代码简洁一致。
