Cette Repositorty contient l'implémentation de Delphi sur l'API publique OpenAI.
❗ Il s'agit d'une bibliothèque non officielle. OpenAI ne fournit aucune bibliothèque officielle pour Delphi.
API | Statut |
---|---|
Modèles | ? Fait |
Complétions (héritage) | ? Fait |
Chat | ? Fait |
Vision du chat | ? Fait |
Modification | ? Fait |
Images | ? Fait |
Incorporer | ? Fait |
Audio | ? Fait |
Fichiers | ? Fait |
Fines-tunes (privées) | ? Fait |
Réglage fin | ? Fait |
Modérations | ? Fait |
Moteurs (déprité) | ? Fait |
Assistants | ? En cours |
Threads | ? En cours |
Messages | ? En cours |
Courses | ? En cours |
OpenAI est une organisation de recherche sur l'intelligence artificielle à but non lucratif fondée à San Francisco, en Californie, en 2015. Elle a été créée dans le but de faire progresser l'intelligence numérique d'une manière qui profite à l'humanité dans son ensemble et à la promotion du progrès sociétal. L'organisation s'efforce de développer des programmes et des systèmes de l'IA (intelligence artificielle) qui peuvent penser, agir et s'adapter rapidement à eux-mêmes - de manière autonome. La mission d'Openai est d'assurer une utilisation sûre et responsable de l'IA pour le bien civique, la croissance économique et d'autres avantages publics; Cela comprend des recherches de pointe sur des sujets importants tels que la sécurité générale de l'IA, le traitement du langage naturel, les méthodes d'apprentissage du renforcement appliqué, les algorithmes de vision machine, etc.
L'API OpenAI peut être appliquée à pratiquement n'importe quelle tâche qui implique la compréhension ou la génération de langage naturel ou de code. Nous offrons un éventail de modèles avec différents niveaux de puissance adaptés à différentes tâches, ainsi que la possibilité de régler vos propres modèles personnalisés. Ces modèles peuvent être utilisés pour tout, de la génération de contenu à la recherche et à la classification sémantiques.
Cette bibliothèque donne accès à l'API du service OpenAI, sur la base de laquelle Chatgpt fonctionne et, par exemple, de la génération d'images à partir de texte à l'aide DALL-E
.
Vous pouvez installer le package à partir de GetIt
directement dans l'IDE. Ou, pour utiliser la bibliothèque, ajoutez simplement le dossier root
au chemin de la bibliothèque IDE ou le chemin de votre source de projet.
Pour initialiser l'instance API, vous devez obtenir un jeton API de votre organisation AI ouverte.
Une fois que vous avez un jeton, vous pouvez initialiser la classe TOpenAI
, qui est un point d'entrée à l'API.
En raison du fait qu'il peut y avoir de nombreux paramètres et tous ne sont pas nécessaires, ils sont configurés à l'aide d'une fonction anonyme.
uses OpenAI;
var OpenAI := TOpenAIComponent.Create(Self, API_TOKEN);
ou
uses OpenAI;
var OpenAI: IOpenAI := TOpenAI.Create(API_TOKEN);
Une fois le jeton, vous possédez le jeton, et l'instance est initialisée, vous êtes prêt à faire des demandes.
Énumérez et décrivez les différents modèles disponibles dans l'API. Vous pouvez vous référer à la documentation des modèles pour comprendre quels modèles sont disponibles et les différences entre elles.
var Models := OpenAI.Model.List();
try
for var Model in Models.Data do
MemoChat.Lines.Add(Model.Id);
finally
Models.Free;
end ;
Revoir la documentation des modèles pour plus d'informations.
Compte tenu d'une invite, le modèle renverra un ou plusieurs complétions prévues et peut également renvoyer les probabilités de jetons alternatifs à chaque position.
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 ;
Revoir la documentation de complétion pour plus d'informations.
Compte tenu d'une conversation de chat, le modèle renverra une réponse d'achèvement de chat. ChatGPT est alimenté par GPT-3.5-Turbo, le modèle linguistique le plus avancé d'Openai.
En utilisant l'API OpenAI, vous pouvez créer vos propres applications avec GPT-3.5-Turbo pour faire des choses comme:
Ce guide explique comment faire un appel API pour les modèles de langage basés sur le chat et partage des conseils pour obtenir de bons résultats.
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 ;
Examiner la documentation de chat pour plus d'informations.
Étant donné une invite et / ou une image d'entrée, le modèle générera une nouvelle image.
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 ;
Passez en revue la documentation des images pour plus d'informations.
Dans un appel API, vous pouvez décrire les fonctions de GPT-3.5-Turbo-0613 et GPT-4-0613, et de faire choisir intelligemment un objet JSON contenant des arguments pour appeler ces fonctions. L'API CHAT EXCELIONS n'appelle pas la fonction; Au lieu de cela, le modèle génère JSON que vous pouvez utiliser pour appeler la fonction dans votre code.
Les derniers modèles (GPT-3.5-Turbo-0613 et GPT-4-0613) ont été affinés pour détecter à la fois quand une fonction doit être appelée (en fonction de l'entrée) et répondre avec JSON qui adhère à la signature de la fonction. Cette capacité vient également des risques potentiels. Nous recommandons fortement de construire des flux de confirmation des utilisateurs avant de prendre des mesures qui ont un impact sur le monde au nom des utilisateurs (envoyer un e-mail, publier quelque chose en ligne, faire un achat, etc.).
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 ;
Revoir la documentation des fonctions pour plus d'informations.
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)
Cette bibliothèque ne nécessite aucune bibliothèque tierce. Il fonctionne sur les versions récentes Delphi (10.3+). Bien que ce ne soit pas entièrement testé, il devrait également fonctionner sur toutes les plates-formes prises en charge (Windows, Linux, MacOS, Android, iOS).
Étant donné que la bibliothèque nécessite votre clé API secrète, il n'est pas recommandé de l'utiliser sur les applications client, car votre clé secrète sera exposée, sauf si vous êtes sûr des risques de sécurité.
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.