Delphi から ChatGPT を使用する

· コンポーネント

ChatGPT は OpenAI が開発した大規模言語モデルです。教師なし学習と呼ばれる手法で訓練されており、大量のテキストデータセットが与えられ、それ以前の単語をもとに次の単語を予測することを学習しました。これにより ChatGPT は人間のようなテキストを生成できるようになり、チャットボットでのユーザー入力への応答生成やウェブサイト・SNS 向けのコンテンツ生成など、さまざまな目的に活用できます。

ChatGPT の主要な特徴の一つは、文脈を理解し、会話に基づいた適切な応答を生成する能力です。たとえば ChatGPT に質問すると、質問に関連した自然な会話の流れに沿った応答を生成します。これはモデルが会話内の以前の発言を「記憶」し、その情報を応答に活用する能力によって実現されています。

もう一つの重要な特徴は、多様でバリエーション豊かな応答を生成できる点です。大量のテキストデータで訓練されているため、幅広い知識を持ち、さまざまな状況やトピックに適した応答を生成できます。これにより、チャットボットでのユーザー入力への応答生成において非常に有用なツールとなっており、会話のトピックに関わらず適切で魅力的な応答を提供できます。

総じて ChatGPT は、人間のようなテキストを生成し、文脈や会話の流れを理解できる強力な言語モデルです。チャットボット・コンテンツ生成・言語翻訳など幅広い用途があり、私たちがテクノロジーと関わる方法を革新する可能性を秘めています。

ChatGPT は現在 API を公開していませんが、OpenAI のベータ API を使用して GPT-3 テキストトランスフォーマーと連携できます。必要なのは API キーのみで、以下から取得できます:

https://beta.openai.com/account/api-keys

これで API との連携を開始できます。

GPT-3 Delphi コード

API キーを取得したら、API との連携は非常に簡単です。sgcWebSockets ライブラリを使用したサンプルコードを以下に示します。 

function AskChatGPT(const aAPI, aQuestion: string): string;
var
  oHTTP: TsgcHTTP1Client;
  oStream: TStringStream;
  vPostData: string;
  oJSON: TJSONValue;
  oArray: TJSonArray;
begin
  oHTTP := TsgcHTTP1Client.Create(nil);
  Try
    oHTTP.Request.CustomHeaders.Add('Authorization: Bearer ' + aAPI);
    oHTTP.Request.ContentType := 'application/json';
    vPostData :=
      Format('{"model": "text-davinci-003","prompt": "%s","max_tokens": 2048,"temperature": 0}',
      [aQuestion]);
    // send request
    oStream := TStringStream.Create(vPostData);
    Try
      result := oHTTP.Post('https://api.openai.com/v1/completions', oStream);
      // parse response
      oJSON := TJSonObject.ParseJSONValue(result).GetValue<TJSONValue>
        ('choices');
      result := TJSonArray(oJSON).Items[0].GetValue<TJSONString>('text').Value;
    Finally
      oStream.Free;
    End;
  Finally
    oHTTP.Free;
  End;
end; 

この関数には 2 つの引数があります:

API: https://beta.openai.com/account/api-keys から取得した API キーです。

Question: 質問のメッセージです。

API キーは Bearer Token として送信され、メッセージは JSON オブジェクトとしてエンコードされます。サーバーはテキストメッセージが含まれる JSON オブジェクトとしてレスポンスを返します。


完全なプロジェクトと Windows 向けコンパイル済み実行ファイルを以下からダウンロードできます。