OpenAI untuk Delphi adalah perpustakaan klien untuk terhubung ke OpenAI API dari Delphi dan Lazarus/FPC (Free Pascal Compiler). Dari perpustakaan ini Anda dapat menggunakan layanan OpenAI populer, seperti ChatGPT, langsung dari aplikasi Delphi atau Lazarus Anda.
Ini adalah perpustakaan tidak resmi. OpenAI tidak menyediakan perpustakaan resmi apa pun untuk Delphi.
Untuk menggunakan perpustakaan, cukup tambahkan folder Sumber ke jalur perpustakaan IDE, atau jalur sumber proyek Anda.
Untuk menggunakan klien, tambahkan unit OpenAIClient
dan OpenAIDtos
ke klausa penggunaan unit Anda.
uses
OpenAIClient, OpenAIDtos;
Pustaka perlu dikonfigurasi dengan kunci API rahasia akun Anda, yang tersedia di situs web. Kami merekomendasikan pengaturannya sebagai variabel lingkungan bernama OPENAI_API_KEY
. Setelah Anda memiliki kunci API, cukup buat klien dan atur kuncinya sebagai berikut:
var
Client: IOpenAIClient;
{ ... }
Client := TOpenAIClient.Create;
Client.Config.AccessToken := GetEnvironmentVariable( ' OPENAI_API_KEY ' );
Sebagian besar titik akhir OpenAI API tersedia di klien, di bawah antarmuka yang disediakan di properti OpenAI
. Contoh berikut menunjukkan cara mengajukan pertanyaan dan menerima jawaban menggunakan titik akhir 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 ;
Semua objek yang dibuat dan diteruskan sebagai parameter input, serta semua objek yang dibuat oleh klien dan disediakan sebagai hasil fungsi, harus dimusnahkan oleh Anda, jika tidak, Anda akan mengalami kebocoran memori.
Anda dapat menggunakan penyelesaian kode Delphi untuk memeriksa metode, parameter, tipe yang tersedia, dan membaca komentar dokumentasi.
Perpustakaan ini tidak memerlukan perpustakaan pihak ketiga. Ia bekerja pada semua versi Delphi terbaru yang menyediakan unit ( System.Net.HttpClient
) dan Lazarus/FPC. Meskipun belum sepenuhnya diuji, ini juga dapat berfungsi pada semua platform yang didukung (Windows, Linux, macOS, dll.).
Karena perpustakaan memerlukan kunci API rahasia Anda, tidak disarankan Anda menggunakannya pada aplikasi klien, karena kunci rahasia Anda akan terekspos, kecuali Anda yakin dengan risiko keamanannya.
Anda dapat menyesuaikan permintaan untuk kebutuhan Anda sendiri dengan menggunakan pabrik permintaan Anda sendiri. Cukup terapkan antarmuka IRestRequestFactory
dan atur di properti Config.RequestFactory
.
Misalnya, jika Anda ingin menyiapkan organisasi khusus (yang disediakan dalam header HTTP), ini adalah kode contohnya:
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);
Contoh penggunaan openai-delphi dengan WPP4Delphi di WPPConnect-Team
Komponen Opensource untuk pengiriman pesan terintegrasi ke dalam whatsapp web menggunakan Delphi
Contoh: Tampilan Demo
Contoh Kode di 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;
Kode Lengkap di WPP4Delphi