OpenAI für Delphi ist eine Client-Bibliothek zur Verbindung mit der OpenAI-API von Delphi und Lazarus/FPC (Free Pascal Compiler). Von dieser Bibliothek aus können Sie beliebte OpenAI-Dienste wie ChatGPT direkt aus Ihrer Delphi- oder Lazarus-Anwendung nutzen.
Dies ist eine inoffizielle Bibliothek. OpenAI stellt keine offizielle Bibliothek für Delphi bereit.
Um die Bibliothek zu verwenden, fügen Sie einfach den Quellordner zum IDE-Bibliothekspfad oder Ihrem Projektquellpfad hinzu.
Um den Client zu verwenden, fügen Sie die Einheiten OpenAIClient
und OpenAIDtos
zu Ihrer Unit-Uses-Klausel hinzu.
uses
OpenAIClient, OpenAIDtos;
Die Bibliothek muss mit dem geheimen API-Schlüssel Ihres Kontos konfiguriert werden, der auf der Website verfügbar ist. Wir empfehlen, es als Umgebungsvariable mit dem Namen OPENAI_API_KEY
festzulegen. Sobald Sie den API-Schlüssel haben, erstellen Sie einfach den Client und legen Sie den Schlüssel wie folgt fest:
var
Client: IOpenAIClient;
{ ... }
Client := TOpenAIClient.Create;
Client.Config.AccessToken := GetEnvironmentVariable( ' OPENAI_API_KEY ' );
Die meisten OpenAI-API-Endpunkte sind im Client unter der in der OpenAI
Eigenschaft bereitgestellten Schnittstelle verfügbar. Das folgende Beispiel zeigt, wie Sie mithilfe des CreateCompletion-Endpunkts eine Frage stellen und eine Antwort erhalten:
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 ;
Alle erstellten und als Eingabeparameter übergebenen Objekte sowie alle vom Client erstellten und als Funktionsergebnisse bereitgestellten Objekte müssen von Ihnen zerstört werden, andernfalls kommt es zu einem Speicherverlust.
Mithilfe der Delphi- Codevervollständigung können Sie die verfügbaren Methoden, Parameter und Typen überprüfen und Dokumentationskommentare lesen.
Für diese Bibliothek ist keine Bibliothek eines Drittanbieters erforderlich. Es funktioniert auf allen neueren Delphi-Versionen, die Unit ( System.Net.HttpClient
) und Lazarus/FPC bereitstellen. Obwohl noch nicht vollständig getestet, sollte es auch auf allen unterstützten Plattformen (Windows, Linux, macOS usw.) funktionieren.
Da die Bibliothek Ihren geheimen API-Schlüssel erfordert, wird die Verwendung in Clientanwendungen nicht empfohlen, da Ihr geheimer Schlüssel offengelegt wird, es sei denn, Sie sind sich der Sicherheitsrisiken sicher.
Sie können die Anfrage an Ihre eigenen Bedürfnisse anpassen, indem Sie Ihre eigene Anfragefabrik verwenden. Implementieren Sie einfach die Schnittstelle IRestRequestFactory
und legen Sie sie in der Eigenschaft Config.RequestFactory
fest.
Wenn Sie beispielsweise eine benutzerdefinierte Organisation einrichten möchten (die in einem HTTP-Header bereitgestellt wird), ist dies ein Beispielcode:
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);
Beispiel für die Verwendung von openai-delphi mit WPP4Delphi im WPPConnect-Team
OpenSource-Komponente zum Versenden von Nachrichten, integriert in WhatsApp Web mithilfe von Delphi
Beispiel: Demoansicht
Codebeispiel in 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;
Vollständiger Code in WPP4Delphi