
Diese Repositorty enthält die Delphi -Implementierung über OpenAI Public API.
❗ Dies ist eine inoffizielle Bibliothek. OpenAI stellt keine offizielle Bibliothek für Delphi zur Verfügung.
| API | Status |
|---|---|
| Modelle | ? Erledigt |
| Abschluss (Vermächtnis) | ? Erledigt |
| Chat | ? Erledigt |
| Chat Vision | ? Erledigt |
| Änderungen | ? Erledigt |
| Bilder | ? Erledigt |
| Einbettungen | ? Erledigt |
| Audio | ? Erledigt |
| Dateien | ? Erledigt |
| Feinhöhe (deprimiert) | ? Erledigt |
| Feinabstimmung | ? Erledigt |
| Moderationen | ? Erledigt |
| Motoren (deprimiert) | ? Erledigt |
| Assistenten | ? Im Gange |
| Themen | ? Im Gange |
| Nachrichten | ? Im Gange |
| Läuft | ? Im Gange |
OpenAI ist eine gemeinnützige Organisation für künstliche Intelligenz, die 2015 in San Francisco, Kalifornien, gegründet wurde. Es wurde geschaffen, um die digitale Intelligenz auf eine Weise zu fördern, die die Menschheit als Ganzes zugute kommt und den gesellschaftlichen Fortschritt fördert. Die Organisation ist bestrebt, KI -Programme und -Systeme (künstliche Intelligenz) zu entwickeln, die sich selbst schnell denken, handeln und sich schnell anpassen können - autonom. OpenAIs Mission ist es, die sichere und verantwortungsvolle Nutzung von KI für bürgerschaftliches Gut, Wirtschaftswachstum und andere öffentliche Vorteile zu gewährleisten. Dies beinhaltet die modernste Forschung zu wichtigen Themen wie allgemeiner KI-Sicherheit, Verarbeitung natürlicher Sprache, angewandte Verstärkungslernmethoden, Maschinenaufwandalgorithmen usw.
Die OpenAI -API kann auf praktisch jede Aufgabe angewendet werden, die das Verständnis oder die Generierung von natürlicher Sprache oder Code umfasst. Wir bieten ein Spektrum von Modellen mit unterschiedlichen Leistungsstufen an, die für unterschiedliche Aufgaben geeignet sind, sowie die Möglichkeit, Ihre eigenen benutzerdefinierten Modelle zu optimieren. Diese Modelle können für alles von der Inhaltsgenerierung bis zur semantischen Suche und Klassifizierung verwendet werden.
Diese Bibliothek bietet Zugriff auf die API des OpenAI-Dienstes, auf deren Grundlage ChatGPT und beispielsweise die Erzeugung von Bildern aus Text mit DALL-E arbeiten.
Sie können das Paket von GetIt direkt in der IDE installieren. Wenn Sie die Bibliothek verwenden, fügen Sie einfach den root dem IDE -Bibliotheksweg oder Ihrem Projektquellweg hinzu.
Um die API -Instanz zu initialisieren, müssen Sie API -Token von Ihrer Open AI -Organisation erhalten.
Sobald Sie ein Token haben, können Sie TOpenAI -Klasse initialisieren, was ein Einstiegspunkt in die API ist.
Aufgrund der Tatsache, dass es viele Parameter geben kann und nicht alle erforderlich sind, werden sie mithilfe einer anonymen Funktion konfiguriert.
uses OpenAI;
var OpenAI := TOpenAIComponent.Create(Self, API_TOKEN);oder
uses OpenAI;
var OpenAI: IOpenAI := TOpenAI.Create(API_TOKEN);Sobald Sie das Token besitzen, besitzen Sie das Token, und die Instanz ist initialisiert, Sie sind bereit, Anfragen zu stellen.
Listen und beschreiben Sie die verschiedenen in der API verfügbaren Modelle. Sie können sich auf die Modelsdokumentation beziehen, um zu verstehen, welche Modelle verfügbar sind und welche Unterschiede zwischen ihnen sind.
var Models := OpenAI.Model.List();
try
for var Model in Models.Data do
MemoChat.Lines.Add(Model.Id);
finally
Models.Free;
end ;Überprüfende Modelle Dokumentation für weitere Informationen.
Angesichts einer Aufforderung gibt das Modell einen oder mehrere vorhergesagte Abschlüsse zurück und kann auch die Wahrscheinlichkeiten alternativer Token an jeder Position zurückgeben.
var Completions := OpenAI.Completion.Create(
procedure(Params: TCompletionParams)
begin
Params.Prompt(MemoPrompt.Text);
Params.MaxTokens( 2048 );
end );
try
for var Choice in Completions.Choices do
MemoChat.Lines.Add(Choice.Index.ToString + ' ' + Choice.Text);
finally
Completions.Free;
end ;Überprüfen Sie die Dokumentation der Abschlüsse für weitere Informationen.
Angesichts eines Chat -Gesprächs wird das Modell eine Reaktion des Chat -Abschlusses zurückgeben. Chatgpt wird von GPT-3,5-Turbo, OpenAs fortschrittlichsten Sprachmodell, angetrieben.
Mit der OpenAI-API können Sie Ihre eigenen Anwendungen mit GPT-3.5-Turbo erstellen, um Dinge wie zu tun:
In diesem Leitfaden wird erläutert, wie Sie einen API-Anruf für Chat-basierte Sprachmodelle erstellen und Tipps geben, um gute Ergebnisse zu erzielen.
var Chat := OpenAI.Chat.Create(
procedure(Params: TChatParams)
begin
Params.Messages([TChatMessageBuild.Create(TMessageRole.User, Text)]);
Params.MaxTokens( 1024 );
end );
try
for var Choice in Chat.Choices do
MemoChat.Lines.Add(Choice.Message.Content);
finally
Chat.Free;
end ;OpenAI.Chat.CreateStream(
procedure(Params: TChatParams)
begin
Params.Messages([TchatMessageBuild.User(Buf.Text)]);
Params.MaxTokens( 1024 );
Params.Stream;
end ,
procedure(Chat: TChat; IsDone: Boolean; var Cancel: Boolean)
begin
if ( not IsDone) and Assigned(Chat) then
Writeln(Chat.Choices[ 0 ].Delta.Content)
else if IsDone then
Writeln( ' DONE! ' );
Writeln( ' ------- ' );
Sleep( 100 );
end ); var Chat := OpenAI.Chat.Create(
procedure(Params: TChatParams)
begin
Params.Model( ' gpt-4-vision-preview ' );
var Content: TArray<TMessageContent>;
Content := Content + [TMessageContent.CreateText(Text)];
Content := Content + [TMessageContent.CreateImage(FileToBase64( ' file path ' ))];
Params.Messages([TChatMessageBuild.User(Content)]);
Params.MaxTokens( 1024 );
end );
try
for var Choice in Chat.Choices do
MemoChat.Lines.Add(Choice.Message.Content);
finally
Chat.Free;
end ;Überprüfen Sie die Chat -Dokumentation für weitere Informationen.
Bei einer Eingabeaufforderung und/oder einem Eingabebild erzeugt das Modell ein neues Bild.
var Images := OpenAI.Image.Create(
procedure(Params: TImageCreateParams)
begin
Params.Prompt(MemoPrompt.Text);
Params.ResponseFormat( ' url ' );
end );
try
for var Image in Images.Data do
Image1.Bitmap.LoadFromUrl(Image.Url);
finally
Images.Free;
end ;Überprüfen Sie die Bilderdokumentation für weitere Informationen.
In einem API-Anruf können Sie Funktionen für GPT-3,5-Turbo-0613 und GPT-4-0613 beschreiben und das Modell intelligent ein JSON-Objekt ausgeben, das Argumente enthält, um diese Funktionen aufzurufen. Die API der Chat -Abschlüsse ruft die Funktion nicht auf. Stattdessen generiert das Modell JSON, mit dem Sie die Funktion in Ihrem Code aufrufen können.
Die neuesten Modelle (GPT-3,5-Turbo-0613 und GPT-4-0613) wurden fein abgestimmt, um beide zu erkennen, wann eine Funktion aufgerufen werden sollte (abhängig von der Eingabe) und mit JSON zu reagieren, die an der Funktionssignatur haftet. Mit dieser Fähigkeit kommt auch potenzielle Risiken. Wir empfehlen dringend, in Benutzerbestätigungsströmen aufzubauen, bevor wir Maßnahmen ergreifen, die sich auf die Welt im Namen von Benutzern auswirken (Senden einer E -Mail, Online -Veröffentlichung, Kauf usw.).
var Chat := OpenAI.Chat.Create(
procedure(Params: TChatParams)
begin
Params.Functions(Funcs); // list of functions (TArray<IChatFunction>)
Params.FunctionCall(TFunctionCall.Auto);
Params.Messages([TChatMessageBuild.User(Text)]);
Params.MaxTokens( 1024 );
end );
try
for var Choice in Chat.Choices do
if Choice.FinishReason = TFinishReason.FunctionCall then
ProcFunction(Choice.Message.FunctionCall) // execute function (send result to chat, and continue)
else
MemoChat.Lines.Add(Choice.Message.Content);
finally
Chat.Free;
end ;
...
procedure ProcFunction (Func: TChatFunctionCall);
begin
var FuncResult := Execute(Func. Name , Func.Arguments); // execute function and get result (json)
var Chat := OpenAI.Chat.Create(
procedure(Params: TChatParams)
begin
Params.Functions(Funcs); // list of functions (TArray<IChatFunction>)
Params.FunctionCall(TFunctionCall.Auto);
Params.Messages([ // need all history
TChatMessageBuild.User(Text),
TChatMessageBuild.NewAsistantFunc(Func. Name , Func.Arguments),
TChatMessageBuild.Func(FuncResult, Func. Name )]);
Params.MaxTokens( 1024 );
end );
try
for var Choice in Chat.Choices do
MemoChat.Lines.Add(Choice.Message.Content);
finally
Chat.Free;
end ;
end ;Überprüfungsfunktionsdokumentation für weitere Informationen.
try
var Images := OpenAI.Image.Create(...);
except
on E: OpenAIExceptionRateLimitError do
ShowError( ' OpenAI Limit Error: ' + E.Message);
on E: OpenAIException do
ShowError( ' OpenAI Error: ' + E.Message);
end ;OpenAI.API.Client.ProxySettings := TProxySettings.Create(ProxyHost, ProxyPort, ProxyUserName, ProxyPassword);
Chatgpt (FMX)
Diese Bibliothek erfordert keine Bibliothek der Drittanbieter. Es funktioniert auf den letzten Delphi -Versionen (10.3+). Obwohl nicht vollständig getestet wurde, sollte es auch auf allen unterstützten Plattformen (Windows, Linux, MacOS, Android, iOS) funktionieren.
Da die Bibliothek Ihren geheimen API -Schlüssel verlangt, wird nicht empfohlen, sie für Kundenanwendungen zu verwenden, da Ihr geheimer Schlüssel offengelegt wird, es sei denn, Sie sind sich über die Sicherheitsrisiken sicher.
MIT License
Copyright (c) 2023 HemulGM
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.