ChatGPT Delphi 客户端(2 / 5)

· 功能

OpenAI API 允许您使用 ChatGPT Turbo 构建自己的 AI 聊天应用。借助 sgcWebSockets 库与 API 交互非常简单——给定聊天对话上下文,模型将返回聊天补全响应。

ChatGPT Delphi 示例

OpenAI 要求构建请求时传入发送给 ChatGPT Turbo 的消息和温度参数(用于控制输出的随机程度)……以下是可用参数列表。

- model:(必填)要使用的模型 ID。请查阅模型端点兼容性表,了解哪些模型支持 Chat API。
- messages:(必填)用于生成聊天补全的消息列表,采用聊天格式。
- temperature:采样温度,介于 0 到 2 之间。较高的值(如 0.8)会使输出更随机,较低的值(如 0.2)会使输出更聚焦和确定。
- top_p:温度采样的替代方案,称为核采样——模型仅考虑概率累积达到 top_p 的 Token。例如 0.1 表示只考虑概率质量前 10% 的 Token。
- n:为每条输入消息生成多少个聊天补全候选结果。
- stream:若设置,将以类似 ChatGPT 的方式流式发送部分消息增量。Token 将以纯数据服务器推送事件(SSE)的形式实时发送,流以 data: [DONE] 消息结束。
- stop:最多 4 个序列,API 遇到这些序列时将停止生成更多 Token。
- max_tokens:聊天补全中生成的最大 Token 数量。输入 Token 与生成 Token 的总长度受模型上下文长度限制。
- presence_penalty:介于 -2.0 到 2.0 之间的数值。正值会根据 Token 是否已出现在文本中对其施加惩罚,从而提高模型讨论新话题的倾向。
- frequency_penalty:介于 -2.0 到 2.0 之间的数值。正值会根据 Token 在文本中已出现的频率施加惩罚,降低模型逐字重复相同内容的可能性。
- logit_bias:修改指定 Token 出现在补全结果中的概率。接受一个 JSON 对象,将 Token(按分词器中的 Token ID 指定)映射到 -100 到 100 的偏差值。该偏差在采样前叠加到模型生成的 logit 上。
- user:代表终端用户的唯一标识符,有助于 OpenAI 监控和检测滥用行为。



以下是向 ChatGPT-Turbo 发送消息的简单示例。

procedure SendMessageChatGPT(const aMessage: string);
var
  i: Integer;
  oMessages: TsgcOpenAIArray_Request_Completion_Messages;
  oMessage: TsgcOpenAIClass_Request_Completion_Message;
  oRequest: TsgcOpenAIClass_Request_ChatCompletion;
  oResponse: TsgcOpenAIClass_Response_ChatCompletion;
begin  
  oRequest := TsgcOpenAIClass_Request_ChatCompletion.Create;
  Try
    // ... model
    oRequest.Model := 'gpt-3.5-turbo';
    // ... create message
    oMessage := TsgcOpenAIClass_Request_Completion_Message.Create;
    oMessage.Content := aMessage;
    oMessages := oRequest.Messages;
    SetLength(oMessages, 1);
    oMessages[0] := oMessage;
    oRequest.Messages := oMessages;
    // ... send message
    oResponse := OpenAI.CreateChatCompletion(oRequest);
    // ... process response
    for i := 0 to Length(oResponse.Choices) - 1 do
      DoLog('[' + oResponse.Choices[i]._Message.Role + '] ' + oResponse.Choices[i]._Message.Content);    
  Finally
    oRequest.Free
  End;
End; 

以下是使用 sgcWebSockets OpenAI Delphi 库的 Windows 编译演示程序。