OpenAI para Delphi es una biblioteca cliente para conectarse a la API OpenAI desde Delphi y Lazarus/FPC (Free Pascal Compiler). Desde esta biblioteca puede utilizar servicios populares de OpenAI, como ChatGPT, directamente desde su aplicación Delphi o Lazarus.
Esta es una biblioteca no oficial. OpenAI no proporciona ninguna biblioteca oficial para Delphi.
Para usar la biblioteca, simplemente agregue la carpeta Fuente a la ruta de la biblioteca IDE o a la ruta fuente de su proyecto.
Para usar el cliente, agregue las unidades OpenAIClient
y OpenAIDtos
a la cláusula de usos de su unidad.
uses
OpenAIClient, OpenAIDtos;
La biblioteca debe configurarse con la clave API secreta de su cuenta, que está disponible en el sitio web. Recomendamos configurarlo como una variable de entorno denominada OPENAI_API_KEY
. Una vez que tenga la clave API, simplemente cree el cliente y configure la clave de la siguiente manera:
var
Client: IOpenAIClient;
{ ... }
Client := TOpenAIClient.Create;
Client.Config.AccessToken := GetEnvironmentVariable( ' OPENAI_API_KEY ' );
La mayoría de los puntos finales de la API de OpenAI están disponibles en el cliente, en la interfaz proporcionada en la propiedad OpenAI
. El siguiente ejemplo muestra cómo hacer una pregunta y recibir una respuesta utilizando el punto final 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 ;
Todos los objetos creados y pasados como parámetros de entrada, así como todos los objetos creados por el cliente y proporcionados como resultados de funciones, deben ser destruidos por usted; de lo contrario, se producirá una pérdida de memoria.
Puede utilizar la finalización de código Delphi para comprobar los métodos, parámetros y tipos disponibles y leer los comentarios de la documentación.
Esta biblioteca no requiere ninguna biblioteca de terceros. Funciona en todas las versiones recientes de Delphi que proporcionan unidad ( System.Net.HttpClient
) y Lazarus/FPC. Aunque no está completamente probado, también debería funcionar en todas las plataformas compatibles (Windows, Linux, macOS, etc.).
Dado que la biblioteca requiere su clave API secreta, no se recomienda usarla en aplicaciones cliente, ya que su clave secreta quedará expuesta, a menos que esté seguro de los riesgos de seguridad.
Puede personalizar la solicitud según sus propias necesidades utilizando su propia fábrica de solicitudes. Simplemente implemente la interfaz IRestRequestFactory
y configúrela en la propiedad Config.RequestFactory
.
Por ejemplo, si desea configurar una organización personalizada (que se proporciona en un encabezado HTTP), este es un código de muestra:
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);
Ejemplo de uso de openai-delphi con WPP4Delphi en WPPConnect-Team
Componente Opensource para envío de mensajes integrado en whatsapp web usando Delphi
Ejemplo: vista de demostración
Ejemplo de código en 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;
Código completo en WPP4Delphi