Repositorty ini berisi implementasi Delphi melalui OpenAI Public API.
❗ Ini adalah perpustakaan tidak resmi. Openai tidak menyediakan perpustakaan resmi untuk Delphi.
API | Status |
---|---|
Model | ? Selesai |
Penyelesaian (warisan) | ? Selesai |
Mengobrol | ? Selesai |
Visi obrolan | ? Selesai |
Sunting | ? Selesai |
Gambar | ? Selesai |
Embeddings | ? Selesai |
Audio | ? Selesai |
File | ? Selesai |
Tune Gaya (Depricated) | ? Selesai |
Fine-tuning | ? Selesai |
Moderasi | ? Selesai |
Mesin (dideprikasi) | ? Selesai |
Asisten | ? Sedang berlangsung |
Utas | ? Sedang berlangsung |
Pesan | ? Sedang berlangsung |
Berjalan | ? Sedang berlangsung |
Openai adalah organisasi penelitian intelijen buatan nirlaba yang didirikan di San Francisco, California pada tahun 2015. Itu diciptakan dengan tujuan memajukan kecerdasan digital dengan cara yang menguntungkan umat manusia secara keseluruhan dan mempromosikan kemajuan masyarakat. Organisasi ini berusaha untuk mengembangkan program dan sistem AI (kecerdasan buatan) yang dapat berpikir, bertindak, dan beradaptasi dengan cepat sendiri - secara mandiri. Misi Openai adalah untuk memastikan penggunaan AI yang aman dan bertanggung jawab untuk barang sipil, pertumbuhan ekonomi dan manfaat publik lainnya; Ini termasuk penelitian mutakhir ke dalam topik-topik penting seperti keselamatan AI umum, pemrosesan bahasa alami, metode pembelajaran penguatan yang diterapkan, algoritma penglihatan mesin dll.
API OpenAI dapat diterapkan pada hampir semua tugas yang melibatkan pemahaman atau menghasilkan bahasa atau kode alami. Kami menawarkan spektrum model dengan berbagai tingkat daya yang cocok untuk tugas yang berbeda, serta kemampuan untuk menyempurnakan model khusus Anda sendiri. Model -model ini dapat digunakan untuk semuanya, mulai dari pembuatan konten hingga pencarian dan klasifikasi semantik.
Perpustakaan ini menyediakan akses ke API dari layanan OpenAI, atas dasarnya chatgpt berfungsi dan, misalnya, generasi gambar dari teks menggunakan DALL-E
.
Anda dapat menginstal paket dari GetIt
langsung di IDE. Atau, untuk menggunakan pustaka, cukup tambahkan folder root
ke jalur perpustakaan IDE, atau jalur sumber proyek Anda.
Untuk menginisialisasi instance API, Anda perlu mendapatkan token API dari organisasi AI terbuka Anda.
Setelah Anda memiliki token, Anda dapat menginisialisasi kelas TOpenAI
, yang merupakan titik masuk ke API.
Karena fakta bahwa mungkin ada banyak parameter dan tidak semuanya diperlukan, mereka dikonfigurasi menggunakan fungsi anonim.
uses OpenAI;
var OpenAI := TOpenAIComponent.Create(Self, API_TOKEN);
atau
uses OpenAI;
var OpenAI: IOpenAI := TOpenAI.Create(API_TOKEN);
Setelah token Anda memiliki token, dan instance diinisialisasi Anda siap untuk mengajukan permintaan.
Daftar dan jelaskan berbagai model yang tersedia di API. Anda dapat merujuk pada dokumentasi model untuk memahami model apa yang tersedia dan perbedaan di antara mereka.
var Models := OpenAI.Model.List();
try
for var Model in Models.Data do
MemoChat.Lines.Add(Model.Id);
finally
Models.Free;
end ;
Tinjau model dokumentasi untuk info lebih lanjut.
Diberi prompt, model akan mengembalikan satu atau lebih penyelesaian yang diprediksi, dan juga dapat mengembalikan probabilitas token alternatif di setiap posisi.
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 ;
Tinjau dokumentasi penyelesaian untuk info lebih lanjut.
Diberi percakapan obrolan, model akan mengembalikan tanggapan penyelesaian obrolan. ChatGPT ditenagai oleh GPT-3.5-Turbo, model bahasa paling canggih Openai.
Menggunakan API OpenAI, Anda dapat membangun aplikasi Anda sendiri dengan GPT-3.5-turbo untuk melakukan hal-hal seperti:
Panduan ini menjelaskan cara membuat panggilan API untuk model bahasa berbasis obrolan dan berbagi kiat untuk mendapatkan hasil yang baik.
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 ;
Tinjau dokumentasi obrolan untuk info lebih lanjut.
Diberi gambar prompt dan/atau input, model akan menghasilkan gambar baru.
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 ;
Tinjau dokumentasi gambar untuk info lebih lanjut.
Dalam panggilan API, Anda dapat menggambarkan fungsi ke GPT-3.5-turbo-0613 dan GPT-4-0613, dan mintalah model secara cerdas memilih untuk menghasilkan objek JSON yang berisi argumen untuk memanggil fungsi-fungsi tersebut. API penyelesaian obrolan tidak memanggil fungsi; Sebaliknya, model menghasilkan JSON yang dapat Anda gunakan untuk memanggil fungsi dalam kode Anda.
Model terbaru (GPT-3.5-TURBO-0613 dan GPT-4-0613) telah disesuaikan dengan keduanya untuk mendeteksi kapan fungsi harus dipanggil (tergantung pada input) dan untuk merespons dengan JSON yang mematuhi tanda tangan fungsi. Dengan kemampuan ini juga muncul risiko potensial. Kami sangat menyarankan membangun aliran konfirmasi pengguna sebelum mengambil tindakan yang berdampak pada dunia atas nama pengguna (mengirim email, memposting sesuatu secara online, melakukan pembelian, dll).
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 ;
Tinjau Dokumentasi Fungsi untuk info lebih lanjut.
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)
Perpustakaan ini tidak memerlukan perpustakaan pihak ke -3. Ini bekerja pada versi Delphi terbaru (10.3+). Meskipun tidak sepenuhnya diuji, itu juga harus bekerja pada semua platform yang didukung (Windows, Linux, MacOS, Android, iOS).
Karena perpustakaan memerlukan kunci API rahasia Anda, tidak disarankan Anda menggunakannya pada aplikasi klien, karena kunci rahasia Anda akan diekspos, kecuali jika Anda yakin tentang risiko keamanan.
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.