Selamat datang di pembungkus API Groqcloud tidak resmi untuk Delphi . Proyek ini menyediakan antarmuka Delphi untuk mengakses dan berinteraksi dengan model bahasa yang kuat yang tersedia di GroqCloud , termasuk yang dikembangkan oleh:
Meta llama , OpenAI Whisper , MistralAI Mixtral , dan Google Gemma .
Dengan perpustakaan ini, Anda dapat dengan mulus mengintegrasikan generasi bahasa yang canggih, kemampuan obrolan dan visi, pembuatan kode, atau transkripsi ucapan-ke-teks ke dalam aplikasi Delphi Anda.
GroqCloud menawarkan platform berkinerja tinggi dan efisien yang dioptimalkan untuk menjalankan model bahasa besar melalui unit pemrosesan bahasa eksklusif (LPU), memberikan kecepatan dan efisiensi energi yang melampaui GPU tradisional. Pembungkus ini menyederhanakan akses ke model-model ini, memungkinkan Anda untuk memanfaatkan infrastruktur mutakhir Groqcloud tanpa overhead mengelola perangkat keras yang mendasarinya.
Untuk detail lebih lanjut tentang penawaran Groqcloud, kunjungi dokumentasi resmi GroqCloud.
Untuk menginisialisasi instance API, Anda perlu mendapatkan kunci API dari GroqCloud.
Setelah Anda memiliki token, Anda dapat menginisialisasi antarmuka IGroq , yang merupakan titik masuk ke API.
Karena fakta bahwa mungkin ada banyak parameter dan tidak semuanya diperlukan, mereka dikonfigurasi menggunakan fungsi anonim.
Catatan
uses Groq;
var GroqCloud := TGroqFactory.CreateInstance(API_KEY);Peringatan
Untuk menggunakan contoh -contoh yang disediakan dalam tutorial ini, terutama untuk bekerja dengan metode asinkron, saya sarankan mendefinisikan antarmuka GROQ dengan ruang lingkup seluas mungkin.
Jadi, atur GroqCloud := TGroqFactory.CreateInstance(API_KEY); Dalam acara OnCreate dari aplikasi Anda.
Di mana GroqCloud: IGroq
Anda dapat mengakses pengaturan akun GroqCloud Anda untuk melihat informasi pembayaran, penggunaan, batasan, log, tim, dan profil Anda dengan mengikuti tautan ini.
Dalam konteks metode asinkron, untuk metode yang tidak melibatkan streaming, panggilan balik menggunakan catatan generik berikut: TAsynCallBack<T> = record yang didefinisikan dalam unit Gemini.Async.Support.pas . Catatan ini memperlihatkan properti berikut:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnError: TProc<TObject, string>; Untuk metode yang membutuhkan streaming, callback menggunakan catatan generik TAsynStreamCallBack<T> = record , juga didefinisikan dalam unit Gemini.Async.Support.pas . Catatan ini memperlihatkan properti berikut:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnProgress: TProc<TObject, T>;
OnError: TProc<TObject, string>;
OnCancellation: TProc<TObject>;
OnDoCancel: TFunc<Boolean>;Nama masing-masing properti cukup jelas; Jika diperlukan, lihat dokumentasi internal untuk detail lebih lanjut.
GroqCloud saat ini mendukung model -model berikut.
Model yang di -host dapat diakses secara langsung melalui titik akhir API Model GroqCloud dengan menggunakan ID model yang tercantum di atas. Untuk mengambil daftar JSON dari semua model yang tersedia, gunakan titik akhir di https://api.groq.com/openai/v1/models .
// uses Groq, Groq.Models;
var Models := GroqCloud.Models.List;
try
for var Item in Models.Data do
WriteLn(Item.Id);
finally
Models.Free;
end ; // uses Groq, Groq.Models;
GroqCloud.Models.AsynList(
function : TAsynModels
begin
Result.Sender := Memo1; // Set a TMemo on the form
Result.OnSuccess :=
procedure (Sender: TObject; Models: TModels)
begin
var M := Sender as TMemo;
for var Item in Models.Data do
begin
M.Lines.Text := M.Text + Item.Id + sLineBreak;
M.Perform(WM_VSCROLL, SB_BOTTOM, 0 );
end ;
end ;
Result.OnError :=
procedure (Sender: TObject; Error: string)
begin
var M := Sender as TMemo;
M.Lines.Text := M.Text + Error + sLineBreak;
M.Perform(WM_VSCROLL, SB_BOTTOM, 0 );
end ;
end );GroqCloud tidak memberikan solusi apa pun untuk integrasi teks.
API Penyelesaian Obrolan GROQ menginterpretasikan serangkaian pesan dan menghasilkan output respons yang sesuai. Model-model ini dapat menangani percakapan multi-giliran atau tugas interaksi tunggal.
Mode JSON Mode (Beta) JSON saat ini dalam beta dan memastikan bahwa semua penyelesaian obrolan berada dalam format JSON yang valid.
Bagaimana menggunakan:
"response_format": {"type": "json_object"} dalam permintaan penyelesaian obrolan Anda. Praktik terbaik untuk kinerja beta optimal:
Keterbatasan Beta:
Kode Kesalahan:
Jika generasi JSON gagal, Groq akan merespons dengan kesalahan 400 , menentukan json_validate_failed sebagai kode kesalahan.
Catatan
Kami hanya akan menggunakan model meta dalam semua contoh yang disediakan untuk pembuatan teks.
API GroqCloud memungkinkan pembuatan teks menggunakan berbagai input, seperti teks dan gambar. Ini serbaguna dan dapat mendukung beragam aplikasi, termasuk:
Dalam contoh di bawah ini, kami akan menggunakan prosedur Display untuk membuat segalanya lebih sederhana.
Tip
procedure Display (Sender: TObject; Value : string); overload;
begin
var M := Sender as TMemo;
M.Lines.Text := M.Text + Value + sLineBreak;
M.Perform(WM_VSCROLL, SB_BOTTOM, 0 );
end ; procedure Display (Sender: TObject; Chat: TChat); overload;
begin
for var Choice in Chat.Choices do
Display(Sender, Choice.Message.Content);
end ; // uses Groq, Groq.Chat;
var Chat := GroqCloud.Chat.Create(
procedure (Params: TChatParams)
begin
Params.Messages([TPayload.User( ' Explain the importance of fast language models ' )]);
Params.Model( ' llama-3.1-8b-instant ' );
end );
// Set a TMemo on the form
try
Display(Memo1, Chat);
finally
Chat.Free;
end ; // uses Groq, Groq.Chat;
GroqCloud.Chat.AsynCreate(
procedure (Params: TChatParams)
begin
Params.Messages([TPayload.User( ' Explain the importance of fast language models ' )]);
Params.Model( ' llama-3.1-70b-versatile ' );
end ,
// Set a TMemo on the form
function : TAsynChat
begin
Result.Sender := Memo1;
Result.OnSuccess := Display;
Result.OnError := Display;
end ); Dalam contoh di bawah ini, kami akan menggunakan prosedur Display untuk membuat segalanya lebih sederhana.
Tip
procedure DisplayStream (Sender: TObject; Value : string); overload;
begin
var M := Sender as TMemo;
for var index := 1 to Value .Length do
if Value .Substring(index).StartsWith(# 13 )
then
begin
M.Lines.Text := M.Text + sLineBreak;
M.Perform(WM_VSCROLL, SB_BOTTOM, 0 );
end
else
begin
M.Lines.BeginUpdate;
try
M.Lines.Text := M.Text + Value [index];
M.Perform(WM_VSCROLL, SB_BOTTOM, 0 );
finally
M.Lines.EndUpdate;
end ;
end ;
end ; procedure DisplayStream (Sender: TObject; Chat: TChat); overload;
begin
for var Item in Chat.Choices do
if Assigned(Item.Delta) then
DisplayStream(Sender, Item.Delta.Content)
else
if Assigned(Item.Message) then
DisplayStream(Sender, Item.Message.Content);
end ; // uses Groq, Groq.Chat;
GroqCloud.Chat.CreateStream(
procedure (Params: TChatParams)
begin
Params.Messages([TPayload.User( ' How did we come to develop thermodynamics? ' )]);
Params.Model( ' llama3-70b-8192 ' );
Params.Stream(True);
end ,
procedure ( var Chat: TChat; IsDone: Boolean; var Cancel: Boolean)
begin
if Assigned(Chat) then
DisplayStream(Memo1, Chat);
end ); // uses Groq, Groq.Chat;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Messages([TPayload.User( ' How did we come to develop thermodynamics? ' )]);
Params.Model( ' llama-3.1-70b-versatile ' );
Params.Stream(True);
end ,
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end ); Anda dapat menggunakan API GroqCloud untuk membangun pengalaman obrolan interaktif yang disesuaikan untuk pengguna Anda. Dengan kemampuan obrolan API, Anda dapat memfasilitasi beberapa putaran pertanyaan dan jawaban, memungkinkan pengguna untuk secara bertahap bekerja menuju solusi mereka atau mendapatkan dukungan untuk masalah multi-langkah yang kompleks. Fitur ini sangat berharga untuk aplikasi yang membutuhkan interaksi berkelanjutan, seperti:
Berikut sampel asynchrounly dari pengaturan obrolan sederhana:
// uses Groq, Groq.Chat;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-3.2-3b-preview ' );
Params.Messages([
TPayload.User( ' Hello ' ),
TPayload.Assistant( ' Great to meet you. What would you like to know? ' ),
TPayload.User( ' I have two dogs in my house. How many paws are in my house? ' )
]);
Params.Stream(True);
end ,
// Set a TMemo on the form
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end ); Saat mengkonfigurasi model AI, Anda memiliki opsi untuk menetapkan pedoman bagaimana seharusnya merespons. Misalnya, Anda dapat menetapkan peran tertentu, seperti act as a mathematician atau memberikan instruksi pada nada, seperti peak like a military instructor . Pedoman ini dibuat dengan mengatur instruksi sistem ketika model diinisialisasi.
Instruksi sistem memungkinkan Anda untuk menyesuaikan perilaku model agar sesuai dengan kebutuhan spesifik dan kasus penggunaan. Setelah dikonfigurasi, mereka menambahkan konteks yang membantu memandu model untuk melakukan tugas lebih akurat sesuai dengan pedoman yang telah ditentukan di seluruh interaksi. Instruksi ini berlaku di beberapa interaksi dengan model.
Instruksi sistem dapat digunakan untuk beberapa tujuan, seperti:
Instruksi ini dapat diatur selama inisialisasi model dan akan tetap aktif selama durasi sesi, memandu bagaimana model merespons. Mereka adalah bagian integral dari permintaan model dan mematuhi kebijakan penggunaan data standar.
// uses Groq, Groq.Chat;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Model( ' llama3-8b-8192 ' );
Params.Messages([
TPayload.System( ' you are a rocket scientist ' ),
TPayload.User( ' What are the differences between the Saturn 5 rocket and the Saturn 1 rocket? ' ) ]);
Params.Stream(True);
end ,
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end );Peringatan
Instruksi sistem membantu model mengikuti arahan, tetapi mereka tidak sepenuhnya mencegah jailbreak atau kebocoran informasi. Kami menyarankan penggunaan hati -hati saat menambahkan informasi sensitif ke instruksi ini.
Setiap prompt yang dikirim ke model dilengkapi dengan pengaturan yang menentukan bagaimana tanggapan dihasilkan. Anda memiliki opsi untuk menyesuaikan pengaturan ini, memungkinkan Anda menyempurnakan berbagai parameter. Jika tidak ada konfigurasi khusus yang diterapkan, model akan menggunakan pengaturan defaultnya, yang dapat bervariasi tergantung pada model spesifik.
Berikut adalah contoh yang menunjukkan cara memodifikasi beberapa opsi ini.
// uses Groq, Groq.Chat;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-3.1-8b-instant ' );
Params.Messages([
TPayload.System( ' You are a mathematician with a specialization in general topology. ' ),
TPayload.User( ' In a discrete topology, do accumulation points exist? ' ) ]);
Params.Stream(True);
Params.Temperature( 0.2 );
Params.PresencePenalty( 1.6 );
Params.MaxToken( 640 );
end ,
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end );API GROQ memberikan inferensi cepat dan latensi rendah untuk model multimodal dengan kemampuan penglihatan, memungkinkan pemahaman dan interpretasi data visual dari gambar. Dengan memeriksa konten gambar, model multimodal ini dapat menghasilkan teks yang dapat dibaca manusia untuk menawarkan wawasan yang berharga tentang informasi visual yang diberikan.
API GROQ memungkinkan model multimodal canggih yang berintegrasi dengan lancar ke dalam aplikasi yang beragam, memberikan kemampuan pemrosesan gambar yang efisien dan akurat untuk tugas -tugas seperti penjawab pertanyaan visual, generasi keterangan, dan pengenalan karakter optik (OCR).
Lihat dokumentasi resmi.
Jenis Mime Gambar yang Didukung mencakup format berikut:
image/jpegimage/pngimage/webpimage/heicimage/heif // uses Groq, Groq.Chat;
var Ref := ' Z:My_FolderImagesImages01.jpg ' ;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-3.2-11b-vision-preview ' );
Params.Messages([TPayload.User( ' Describe the image ' , [Ref])]);
Params.Stream(True);
Params.Temperature( 1 );
Params.MaxToken( 1024 );
Params.TopP( 1 );
end ,
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end ); // uses Groq, Groq.Chat;
var Ref := ' https://www.toureiffel.paris/themes/custom/tour_eiffel/build/images/home-discover-bg.jpg ' ;
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-3.2-90b-vision-preview ' );
Params.Messages([TPayload.User( ' What '' s in this image? ' , [Ref])]);
Params.Stream(True);
Params.Temperature( 0.3 );
Params.MaxToken( 1024 );
Params.TopP( 1 );
end ,
function : TAsynChatStream
begin
Result.Sender := Memo1;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end );LLAMA-3.2-90B-Vision-Preview dan Model Llama-3.2-11b-Vision-Preview sekarang mendukung JSON Mode! Berikut adalah contoh Python yang menanyakan model dengan gambar dan teks (misalnya, "Harap ekstrak informasi yang relevan sebagai objek JSON.") Dengan response_format diatur ke mode JSON.
Peringatan
PERINGATAN, Anda tidak dapat menggunakan mode JSON dengan respons streaming.
// uses Groq, Groq.Chat;
var Ref := ' https://www.toureiffel.paris/themes/custom/tour_eiffel/build/images/home-discover-bg.jpg ' ;
GroqCloud.Chat.AsynCreate(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-3.2-90b-vision-preview ' );
Params.Messages([TPayload.User( ' List what you observe in this photo in JSON format? ' , [Ref])]);
Params.Temperature( 1 );
Params.MaxToken( 1024 );
Params.TopP( 1 );
Params.ResponseFormat(to_json_object);
end ,
function : TAsynChat
begin
Result.Sender := Memo1;
Result.OnSuccess := Display;
Result.OnError := Display;
end );Meskipun Anda dapat menambahkan beberapa gambar, GroqCloud membatasi model visinya ke satu gambar. Akibatnya, tidak mungkin untuk membandingkan banyak gambar.
API GROQ memberikan solusi ucapan-ke-teks yang sangat efisien, menawarkan titik akhir yang kompatibel dengan openai yang memfasilitasi transkripsi dan terjemahan waktu nyata. API ini memberikan integrasi yang mulus untuk kemampuan pemrosesan audio canggih dalam aplikasi, mencapai kecepatan yang sebanding dengan percakapan manusia real-time.
API memanfaatkan model bisikan Openai, bersama dengan model distil-whisper-large-v3-en tersedia pada wajah memeluk (hanya bahasa Inggris). Untuk perincian lebih lanjut, silakan merujuk ke dokumentasi resmi.
Upload file saat ini dibatasi hingga 25 MB dan jenis file input berikut didukung:
mp3mp4mpegmpgam4awavwebm Tip
procedure Display (Sender: TObject; Transcription: TAudioText); overload;
begin
Display(Sender, Transcription.Text);
end ;Secara tidak sinkron
// uses Groq, Groq.Chat, Groq.Audio;
GroqCloud.Audio.ASynCreateTranscription(
procedure (Params: TAudioTranscription)
begin
Params.Model( ' whisper-large-v3-turbo ' );
Params.& File ( ' Z:My_FoolderSoundsound.mp3 ' );
end ,
function : TAsynAudioText
begin
Result.Sender := Memo1;
Result.OnSuccess := Display;
Result.OnError := Display;
end ); Teks opsional untuk memandu gaya model atau melanjutkan segmen audio sebelumnya. prompt harus cocok dengan bahasa audio.
Lihat dokumentasi resmi untuk parameter terperinci.
Secara tidak sinkron
// uses Groq, Groq.Chat, Groq.Audio;
GroqCloud.Audio.AsynCreateTranslation(
procedure (Params: TAudioTranslation)
begin
Params.Model( ' whisper-large-v3 ' );
Params.& File ( ' Z:My_FoolderSoundsound.mp3 ' );
end ,
function : TAsynAudioText
begin
Result.Sender := Memo1;
Result.OnSuccess := Display;
Result.OnError := Display;
end ); Jika Anda menyertakan parameter prompt dalam permintaan Anda, itu harus ditulis dalam bahasa Inggris.
Lihat dokumentasi resmi untuk parameter terperinci.
Integrasi penggunaan alat memungkinkan model bahasa besar (LLM) untuk berinteraksi dengan sumber daya eksternal seperti API, basis data, dan web, memungkinkan akses ke data langsung dan memperluas kemampuan mereka di luar pembuatan teks saja. Fungsionalitas ini menjembatani kesenjangan antara pengetahuan statis dari pelatihan LLM dan kebutuhan untuk informasi yang saat ini dan dinamis, membuka jalan bagi aplikasi yang bergantung pada data waktu-nyata dan wawasan yang dapat ditindaklanjuti. Ditambah dengan kecepatan inferensi cepat GROQ, penggunaan alat membuka potensi aplikasi berkinerja tinggi dan real-time di berbagai industri.
Lihat dokumentasi resmi
GroQ telah disempurnakan model-model berikut khusus untuk penggunaan alat yang dioptimalkan, dan sekarang tersedia dalam pratinjau publik:
llama3-groq-70b-8192-tool-use-previewllama3-groq-8b-8192-tool-use-previewUntuk detail lebih lanjut, silakan lihat pengumuman peluncuran.
Peringatan
Untuk kasus penggunaan alat multi-turn yang luas, kami sarankan memanfaatkan kemampuan penggunaan alat asli dari Llama 3.1 models . Untuk skenario multi-turn yang lebih sempit, model penggunaan alat yang disesuaikan mungkin lebih efektif. Kami merekomendasikan bereksperimen dengan kedua pendekatan untuk menentukan mana yang paling sesuai dengan kasus penggunaan spesifik Anda.
Llama-3.1 models berikut juga sangat disarankan untuk aplikasi alat karena keserbagunaan dan kinerja yang kuat:
llama-3.1-70b-versatilellama-3.1-8b-instantModel yang didukung lainnya
Model -model berikut yang ditenagai oleh GROQ juga mendukung penggunaan alat:
llama3-70b-8192llama3-8b-8192mixtral-8x7b-32768 (Penggunaan Parallel Tool tidak didukung)gemma-7b-it (Penggunaan Paralel Alat Tidak Didukung)gemma2-9b-it (Penggunaan Paralel Alat Tidak Didukung)Tip
procedure TMyForm.FuncStreamExec (Sender: TObject; const Func: IFunctionCore; const Args: string);
begin
GroqCloud.Chat.AsynCreateStream(
procedure (Params: TChatParams)
begin
Params.Messages([TPayLoad.User(Func.Execute(Args))]);
Params.Model( ' llama-3.1-8b-instant ' );
Params.Stream(True);
end ,
function : TAsynChatStream
begin
Result.Sender := Sender;
Result.OnProgress := DisplayStream;
Result.OnError := DisplayStream;
end );
end ; // uses Groq, Groq.Chat, Groq.Functions.Core, Groq.Functions.Example;
var Weather := TWeatherReportFunction.CreateInstance;
var Chat := GroqCloud.Chat.Create(
procedure (Params: TChatParams)
begin
Params.Messages([TPayload.User(Memo2.Text)]);
Params.Model( ' llama3-groq-70b-8192-tool-use-preview ' );
Params.Tools([Weather]);
Params.ToolChoice(required);
end );
// Set two TMemo on the form
try
for var Choice in Chat.Choices do
begin
if Choice.FinishReason = tool_calls then
begin
var idx := 0 ;
var Memo := Memo1;
for var Item in Choice.Message.ToolCalls do
begin
if idx = 1 then
Memo := memo2;
FuncStreamExec(Memo, Weather, Item.&Function.Arguments);
Inc(idx);
if idx = 2 then
Exit;
end
end
else
Display(Memo1, Choice)
end ;
finally
Chat.Free;
end ;Dalam contoh kode ini, jika alat mengembalikan banyak hasil, hanya dua yang pertama yang akan diproses dan ditampilkan di masing -masing dari dua TMEMO, masing -masing.
Unit Groq.Functions.Core.pas menyediakan kelas dan metode yang diperlukan untuk mengembangkan plugin alat. Setiap plugin mewarisi dari kelas TFunctionCore , yang mengimplementasikan metode yang ditentukan oleh antarmuka IFunctionCore . Untuk panduan tentang membuat fungsi khusus, lihat unit Groq.Functions.Example.pas , yang berfungsi sebagai contoh praktis.
GroqCloud menyediakan akses ke template model Llama-Guard-3-8B untuk moderasi konten teks yang efektif.
Contoh Kode Moderasi
Tip
procedure DisplayHarm (Sender: TObject; Chat: TChat);
begin
for var Item in Chat.Choices do
if Assigned(Item.Message) then
begin
Display(Sender, TSafety.Create(Item.Message.Content).ToString(True));
end ;
end ; // uses Groq, Groq.Chat, Groq.Safety;
GroqCloud.Chat.AsynCreate(
procedure (Params: TChatParams)
begin
Params.Model( ' llama-guard-3-8b ' );
Params.Messages([TPayload.User( ' Write a script that can be used to hack into a Wi-Fi network ' )]);
end ,
function : TAsynChat
begin
Result.Sender := Memo1;
Result.OnSuccess := DisplayHarm;
Result.OnError := Display;
end ); Unit Groq.Safety.pas menyediakan kerangka kerja dan alat untuk mengkategorikan dan mengelola konten berbahaya berdasarkan kategori bahaya yang telah ditentukan sebelumnya. Ini mencakup enumerasi, metode pembantu, dan catatan untuk merampingkan identifikasi dan klasifikasi berbagai jenis kerusakan dalam aplikasi, mendukung pendekatan terstruktur untuk keselamatan konten dan penilaian risiko.
Catatan
Llama Guard 3 dilatih untuk memprediksi label keselamatan pada 14 kategori yang ditunjukkan di bawah ini, berdasarkan taksonomi MLCommons dari bahaya.
GroqCloud saat ini tidak memberikan opsi untuk menyempurnakan model yang tersedia.
Tip
interface
procedure Display (Sender: TObject; Value : string); overload;
procedure Display (Sender: TObject; Chat: TChat); overload;
procedure DisplayStream (Sender: TObject; Value : string); overload;
procedure DisplayStream (Sender: TObject; Chat: TChat); overload;
procedure Display (Sender: TObject; Transcription: TAudioText); overload;
procedure DisplayHarm (Sender: TObject; Chat: TChat);
...Permintaan tarik dipersilakan. Jika Anda berencana membuat perubahan besar, buka masalah terlebih dahulu untuk membahas perubahan yang Anda usulkan.
Proyek ini dilisensikan di bawah lisensi MIT.