Grok Delphi API 客户端

· 组件

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 代码简洁一致。