OpenAI for Delphi 是一個客戶端程式庫,用於連接 Delphi 和 Lazarus/FPC(Free Pascal 編譯器)的 OpenAI API。從此程式庫中,您可以直接從 Delphi 或 Lazarus 應用程式使用流行的 OpenAI 服務,例如 ChatGPT。
這是一個非官方圖書館。 OpenAI 沒有為 Delphi 提供任何官方函式庫。
若要使用該庫,只需將 Source 資料夾新增至 IDE 庫路徑或您的專案來源路徑。
若要使用客戶端,請將單元OpenAIClient
和OpenAIDtos
新增至您的單元使用子句中。
uses
OpenAIClient, OpenAIDtos;
該庫需要使用您帳戶的 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 中使用 openai-delphi 和 WPP4Delphi 的範例
使用 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 中的完整程式碼