OpenAI for Delphi は、Delphi および Lazarus/FPC (Free Pascal Compiler) から OpenAI API に接続するためのクライアント ライブラリです。このライブラリを使用すると、ChatGPT などの一般的な OpenAI サービスを Delphi または Lazarus アプリケーションから直接使用できます。
これは非公式のライブラリです。 OpenAI は、Delphi 用の公式ライブラリを提供していません。
ライブラリを使用するには、ソース フォルダーを IDE ライブラリ パスまたはプロジェクトのソース パスに追加するだけです。
クライアントを使用するには、ユニットOpenAIClient
およびOpenAIDtos
ユニットの uses 句に追加します。
uses
OpenAIClient, OpenAIDtos;
ライブラリは、Web サイトで入手できるアカウントの秘密 API キーを使用して構成する必要があります。 OPENAI_API_KEY
という名前の環境変数として設定することをお勧めします。 API キーを取得したら、クライアントを作成し、次のようにキーを設定します。
var
Client: IOpenAIClient;
{ ... }
Client := TOpenAIClient.Create;
Client.Config.AccessToken := GetEnvironmentVariable( ' OPENAI_API_KEY ' );
OpenAI API エンドポイントのほとんどは、 OpenAI
プロパティで提供されるインターフェイスの下でクライアントで使用できます。次の例は、CreateCompletion エンドポイントを使用して質問し、回答を受け取る方法を示しています。
function AskQuestion ( const Question: string): string;
var
Request: TCreateCompletionRequest;
Response: TCreateCompletionResponse;
begin
Response := nil ;
Request := TCreateCompletionRequest.Create;
try
Request.Prompt := Question;
Request.Model := ' text-davinci-003 ' ;
Request.MaxTokens := 2048 ; // Be careful as this can quickly consume your API quota.
Response := Client.OpenAI.CreateCompletion(Request);
if Assigned(Response.Choices) and (Response.Choices.Count > 0 ) then
Result := Response.Choices[ 0 ].Text
else
Result := ' ' ;
finally
Request.Free;
Response.Free;
end ;
end ;
作成され入力パラメータとして渡されたすべてのオブジェクト、およびクライアントによって作成され関数の結果として提供されたすべてのオブジェクトは、ユーザーが破棄する必要があります。破棄しないと、メモリ リークが発生します。
Delphiコード補完を使用すると、利用可能なメソッド、パラメータ、型を確認し、ドキュメントのコメントを読むことができます。
このライブラリにはサードパーティのライブラリは必要ありません。これは、ユニット ( System.Net.HttpClient
) と Lazarus/FPC を提供するすべての最新の Delphi バージョンで動作します。完全にはテストされていませんが、サポートされているすべてのプラットフォーム (Windows、Linux、macOS など) でも動作するはずです。
ライブラリには秘密 API キーが必要であるため、セキュリティ リスクについて確信がない限り、秘密キーが公開されてしまうため、クライアント アプリケーションで使用することはお勧めできません。
独自のリクエスト ファクトリを使用して、独自のニーズに合わせてリクエストをカスタマイズできます。インターフェイスIRestRequestFactory
を実装し、それをプロパティConfig.RequestFactory
に設定するだけです。
たとえば、カスタム組織 (HTTP ヘッダーで提供される) をセットアップする場合のサンプル コードは次のとおりです。
uses { ... } , OpenApiRest;
type
TMyRequestFactory = class (TInterfacedObject, IRestRequestFactory)
strict private
FFactory: IRestRequestFactory;
public
constructor Create(AFactory: IRestRequestFactory);
function CreateRequest : IRestRequest;
end ;
constructor TMyRequestFactory.Create(AFactory: IRestRequestFactory);
begin
FFactory := AFactory;
end ;
function TMyRequestFactory.CreateRequest : IRestRequest;
begin
Result := FFactory.CreateRequest;
Result.AddHeader( ' OpenAI-Organization ' , ' org-nUilalMOTvqGjGeAopTDIsSB ' );
end ;
// Set it after creating the client
FClient := TOpenAIClient.Create;
FClient.Config.RequestFactory := TMyRequestFactory.Create(FClient.Config.RequestFactory);
WPPConnect-Team の WPP4Delphi で openai-delphi を使用する例
Delphi を使用して WhatsApp Web に統合されたメッセージを送信するためのコンポーネント オープンソース
例: デモビュー
Delphi でのコード例:
if SwtChatGPT.IsOn then
begin
if Question <> '' then
begin
//Credits --> https://github.com/landgraf-dev/openai-delphi
Answer := AskQuestion(Question, AChat.id);
phoneNumber := Copy(Answer, 1, pos('#', Answer)-1);
Answer := StringReplace(Answer, phoneNumber + '#', '',[]);
if Trim(Answer) <> '' then
frDemo.TWPPConnect1.SendTextMessageEx(phoneNumber, '?' + ' *ChatGPT* ' + Answer, 'createChat: true', '123')
else
frDemo.TWPPConnect1.SendTextMessageEx(phoneNumber, '?' + ' *ChatGPT* ' + 'Could not retrieve an answer.', 'createChat: true', '123');
end;
end;
WPP4Delphi でコードを完成させる