ยินดีต้อนรับสู่ Wrapper Groqcloud API ที่ไม่เป็นทางการสำหรับ Delphi โครงการนี้มีอินเทอร์เฟซ Delphi สำหรับการเข้าถึงและโต้ตอบกับโมเดลภาษาที่ทรงพลังที่มีอยู่ใน Groqcloud รวมถึงที่พัฒนาโดย:
Meta Llama , OpenAI Whisper , MistralAI Mixtral และ Google Gemma
ด้วยห้องสมุดนี้คุณสามารถรวมการสร้างภาษาที่ล้ำสมัยความสามารถในการแชทและการมองเห็นการสร้างรหัสหรือการถอดความข้อความเป็นข้อความลงในแอปพลิเคชัน Delphi ของคุณ
Groqcloud นำเสนอแพลตฟอร์มประสิทธิภาพสูงและมีประสิทธิภาพที่ได้รับการปรับให้เหมาะสมสำหรับการใช้แบบจำลองภาษาขนาดใหญ่ผ่านหน่วยประมวลผลภาษาที่เป็นกรรมสิทธิ์ (LPUs) ให้ความเร็วและประสิทธิภาพการใช้พลังงานที่เกิน GPU แบบดั้งเดิม wrapper นี้ทำให้การเข้าถึงรุ่นเหล่านี้ง่ายขึ้นช่วยให้คุณสามารถใช้ประโยชน์จากโครงสร้างพื้นฐานที่ทันสมัย ของ Groqcloud โดยไม่ต้องใช้ค่าใช้จ่ายในการจัดการฮาร์ดแวร์พื้นฐาน
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อเสนอของ Groqcloud เยี่ยมชมเอกสาร Groqcloud อย่างเป็นทางการ
ในการเริ่มต้นอินสแตนซ์ API คุณจะต้องได้รับคีย์ API จาก GroqCloud
เมื่อคุณมีโทเค็นคุณสามารถเริ่มต้นอินเตอร์เฟส IGroq ซึ่งเป็นจุดเข้าสู่ API
เนื่องจากความจริงที่ว่าอาจมีพารามิเตอร์มากมายและไม่จำเป็นต้องมีทั้งหมดพวกเขาจึงได้รับการกำหนดค่าโดยใช้ฟังก์ชั่นที่ไม่ระบุชื่อ
บันทึก
uses Groq;
var GroqCloud := TGroqFactory.CreateInstance(API_KEY);คำเตือน
ในการใช้ตัวอย่างที่ให้ไว้ในบทช่วยสอนนี้โดยเฉพาะอย่างยิ่งในการทำงานกับวิธีการแบบอะซิงโครนัสฉันขอแนะนำให้กำหนดอินเทอร์เฟซ GROQ ที่มีขอบเขตที่กว้างที่สุดเท่าที่จะเป็นไปได้
ดังนั้นตั้งค่า GroqCloud := TGroqFactory.CreateInstance(API_KEY); ในเหตุการณ์ OnCreate ของแอปพลิเคชันของคุณ
โดยที่ GroqCloud: IGroq
คุณสามารถเข้าถึงการตั้งค่าบัญชี Groqcloud ของคุณเพื่อดูข้อมูลการชำระเงินการใช้งานขีด จำกัด การบันทึกทีมและโปรไฟล์โดยไปที่ลิงค์นี้
ในบริบทของวิธีการแบบอะซิงโครนัสสำหรับวิธีการที่ไม่เกี่ยวข้องกับการสตรีมการโทรกลับใช้บันทึกทั่วไปต่อไปนี้: TAsynCallBack<T> = record ที่กำหนดไว้ในหน่วย Gemini.Async.Support.pas บันทึกนี้เปิดเผยคุณสมบัติต่อไปนี้:
TAsynCallBack<T> = record
...
Sender: TObject;
OnStart: TProc<TObject>;
OnSuccess: TProc<TObject, T>;
OnError: TProc<TObject, string>; สำหรับวิธีการที่ต้องการสตรีมมิ่งการเรียกกลับใช้บันทึกทั่วไป TAsynStreamCallBack<T> = record ซึ่งกำหนดไว้ในหน่วย Gemini.Async.Support.pas บันทึกนี้เปิดเผยคุณสมบัติต่อไปนี้:
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>;ชื่อของแต่ละทรัพย์สินเป็นคำอธิบายตนเอง หากจำเป็นให้อ้างอิงเอกสารภายในสำหรับรายละเอียดเพิ่มเติม
ปัจจุบัน Groqcloud รองรับรุ่นต่อไปนี้
โมเดลที่โฮสต์สามารถเข้าถึงได้โดยตรงผ่านจุดสิ้นสุดของ Groqcloud Models API โดยใช้ ID รุ่นที่ระบุไว้ด้านบน ในการดึงรายการ JSON ของทุกรุ่นที่มีอยู่ให้ใช้จุดสิ้นสุดที่ 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 ไม่ได้ให้วิธีการใด ๆ สำหรับการรวมข้อความ
GROQ CHAT COMPLIENS API ตีความชุดของข้อความและสร้างผลลัพธ์การตอบกลับที่สอดคล้องกัน โมเดลเหล่านี้สามารถจัดการการสนทนาแบบหลายเทิร์นหรืองานการโต้ตอบเดียว
โหมด JSON (เบต้า) โหมด JSON อยู่ในช่วงเบต้าและทำให้มั่นใจได้ว่าการแชททั้งหมดนั้นอยู่ในรูปแบบ JSON ที่ถูกต้อง
วิธีใช้:
"response_format": {"type": "json_object"} ในคำขอการแชทของคุณเสร็จสมบูรณ์ แนวทางปฏิบัติที่ดีที่สุดสำหรับประสิทธิภาพเบต้าที่ดีที่สุด:
ข้อ จำกัด เบต้า:
รหัสข้อผิดพลาด:
หากการสร้าง JSON ล้มเหลว Groq จะตอบกลับด้วย ข้อผิดพลาด 400 โดยระบุ json_validate_failed เป็นรหัสข้อผิดพลาด
บันทึก
เราจะใช้เฉพาะรุ่นเมตาในตัวอย่างทั้งหมดที่มีให้สำหรับการสร้างข้อความ
GroqCloud API อนุญาตให้สร้างข้อความโดยใช้อินพุตต่าง ๆ เช่นข้อความและรูปภาพ มันมีความหลากหลายและสามารถรองรับแอปพลิเคชันที่หลากหลายรวมถึง:
ในตัวอย่างด้านล่างเราจะใช้ขั้นตอน Display เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น
เคล็ดลับ
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 ); ในตัวอย่างด้านล่างเราจะใช้ขั้นตอน Display เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น
เคล็ดลับ
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 ); คุณสามารถใช้ GroqCloud API เพื่อสร้างประสบการณ์การแชทแบบโต้ตอบที่กำหนดเองสำหรับผู้ใช้ของคุณ ด้วยความสามารถในการแชทของ API คุณสามารถอำนวยความสะดวกในการตอบคำถามและคำตอบหลายรอบทำให้ผู้ใช้สามารถทำงานได้อย่างค่อยเป็นค่อยไปในการแก้ปัญหาของพวกเขาหรือได้รับการสนับสนุนสำหรับปัญหาที่ซับซ้อนหลายขั้นตอน คุณสมบัตินี้มีค่าอย่างยิ่งสำหรับแอปพลิเคชันที่ต้องการการโต้ตอบอย่างต่อเนื่องเช่น:
นี่คือตัวอย่างแบบอะซินช์ของการตั้งค่าการแชทอย่างง่าย:
// 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 ); เมื่อกำหนดค่าโมเดล AI คุณมีตัวเลือกในการกำหนดแนวทางสำหรับวิธีการตอบสนอง ตัวอย่างเช่นคุณสามารถกำหนดบทบาทเฉพาะเช่น act as a mathematician หรือให้คำแนะนำเกี่ยวกับน้ำเสียงเช่น peak like a military instructor แนวทางเหล่านี้ถูกสร้างขึ้นโดยการตั้งค่าคำแนะนำระบบเมื่อมีการเริ่มต้นโมเดล
คำแนะนำของระบบช่วยให้คุณปรับแต่งพฤติกรรมของโมเดลให้เหมาะกับความต้องการเฉพาะและการใช้งานกรณี เมื่อกำหนดค่าแล้วพวกเขาจะเพิ่มบริบทที่ช่วยแนะนำแบบจำลองในการปฏิบัติงานได้อย่างแม่นยำมากขึ้นตามแนวทางที่กำหนดไว้ล่วงหน้าตลอดการโต้ตอบทั้งหมด คำแนะนำเหล่านี้ใช้กับการโต้ตอบหลายครั้งกับโมเดล
คำแนะนำระบบสามารถใช้เพื่อวัตถุประสงค์หลายประการเช่น:
คำแนะนำเหล่านี้สามารถตั้งค่าในระหว่างการเริ่มต้นแบบจำลองและจะยังคงทำงานอยู่ตลอดระยะเวลาของเซสชันนำทางวิธีการตอบสนองของแบบจำลอง พวกเขาเป็นส่วนสำคัญของการแจ้งเตือนของโมเดลและปฏิบัติตามนโยบายการใช้ข้อมูลมาตรฐาน
// 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 );คำเตือน
คำแนะนำของระบบช่วยให้แบบจำลองปฏิบัติตามคำแนะนำ แต่พวกเขาไม่ได้ป้องกันการแหกคุกหรือการรั่วไหลของข้อมูลอย่างสมบูรณ์ เราแนะนำให้ใช้ความระมัดระวังเมื่อเพิ่มข้อมูลที่ละเอียดอ่อนใด ๆ ลงในคำแนะนำเหล่านี้
ทุกครั้งที่ส่งไปยังโมเดลมาพร้อมกับการตั้งค่าที่กำหนดวิธีการตอบสนอง คุณมีตัวเลือกในการปรับการตั้งค่าเหล่านี้ให้คุณปรับพารามิเตอร์ต่าง ๆ หากไม่มีการกำหนดค่าที่กำหนดเองโมเดลจะใช้การตั้งค่าเริ่มต้นซึ่งอาจแตกต่างกันไปขึ้นอยู่กับรุ่นเฉพาะ
นี่คือตัวอย่างที่แสดงวิธีแก้ไขตัวเลือกเหล่านี้หลายตัวเลือก
// 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 );GROQ API ให้การอนุมานอย่างรวดเร็วและเวลาแฝงต่ำสำหรับโมเดลหลายรูปแบบที่มีความสามารถในการมองเห็นทำให้ความเข้าใจและการตีความข้อมูลภาพจากภาพ ด้วยการตรวจสอบเนื้อหาของภาพโมเดลหลายรูปแบบเหล่านี้สามารถสร้างข้อความที่มนุษย์อ่านได้เพื่อนำเสนอข้อมูลเชิงลึกที่มีค่าในข้อมูลภาพที่มีให้
GROQ API เปิดใช้งานโมเดลหลายรูปแบบขั้นสูงที่รวมเข้ากับแอพพลิเคชั่นที่หลากหลายให้ได้อย่างราบรื่นให้ความสามารถในการประมวลผลภาพที่มีประสิทธิภาพและแม่นยำสำหรับงานเช่นการตอบคำถามด้วยภาพ
ดูเอกสารอย่างเป็นทางการ
ประเภท MIME ที่รองรับภาพรวมถึงรูปแบบต่อไปนี้:
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 และ LLAMA-3.2-11B-Vision-Preview ตอนนี้รองรับโหมด JSON! นี่คือตัวอย่าง Python ที่สอบถามโมเดลที่มีทั้งภาพและข้อความ (เช่น "โปรดดึงข้อมูลที่เกี่ยวข้องเป็นวัตถุ JSON") ด้วยการตั้งค่า Response_format เป็นโหมด JSON
คำเตือน
คำเตือนคุณไม่สามารถใช้โหมด JSON ด้วยการตอบกลับแบบสตรีม
// 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 );แม้ว่าคุณจะสามารถเพิ่มภาพได้หลายภาพ Groqcloud จำกัด โมเดลวิสัยทัศน์ให้เป็นภาพเดียว เป็นผลให้มันเป็นไปไม่ได้ที่จะเปรียบเทียบหลายภาพ
GROQ API มอบโซลูชันการพูดเป็นข้อความที่มีประสิทธิภาพสูงซึ่งนำเสนอจุดสิ้นสุดที่เข้ากันได้ของ OpenAI ซึ่งอำนวยความสะดวกในการถอดความและการแปลแบบเรียลไทม์ API นี้ให้การบูรณาการอย่างราบรื่นสำหรับความสามารถในการประมวลผลเสียงขั้นสูงในแอปพลิเคชันซึ่งมีความเร็วใกล้เคียงกับการสนทนาของมนุษย์แบบเรียลไทม์
รุ่น APIS Leverage Openai ของ Whisper Model พร้อมกับรุ่น distil-whisper-large-v3-en ที่ปรับแต่งได้อย่างละเอียดพร้อมใช้งานบนใบหน้าของ Hugging (ภาษาอังกฤษเท่านั้น) สำหรับรายละเอียดเพิ่มเติมโปรดดูเอกสารอย่างเป็นทางการ
ปัจจุบันการอัปโหลดไฟล์ถูก จำกัด ไว้ที่ 25 MB และรองรับประเภทไฟล์อินพุตต่อไปนี้:
mp3mp4mpegmpgam4awavwebm เคล็ดลับ
procedure Display (Sender: TObject; Transcription: TAudioText); overload;
begin
Display(Sender, Transcription.Text);
end ;อย่างอะซิงโครนัส
// 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 ); ข้อความเสริมเพื่อเป็นแนวทางในสไตล์ของโมเดลหรือดำเนินการต่อส่วนเสียงก่อนหน้า prompt ควรตรงกับภาษาเสียง
อ้างถึงเอกสารอย่างเป็นทางการสำหรับพารามิเตอร์โดยละเอียด
อย่างอะซิงโครนัส
// 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 ); หากคุณรวมพารามิเตอร์ prompt ในคำขอของคุณจะต้องเขียนเป็นภาษาอังกฤษ
อ้างถึงเอกสารอย่างเป็นทางการสำหรับพารามิเตอร์โดยละเอียด
การรวมการใช้เครื่องมือทำให้โมเดลภาษาขนาดใหญ่ (LLMS) สามารถเชื่อมต่อกับทรัพยากรภายนอกเช่น APIs ฐานข้อมูลและเว็บช่วยให้สามารถเข้าถึงข้อมูลสดและขยายความสามารถของพวกเขานอกเหนือจากการสร้างข้อความเพียงอย่างเดียว ฟังก์ชั่นนี้เชื่อมช่องว่างระหว่างความรู้แบบคงที่จากการฝึกอบรม LLM และความต้องการข้อมูลปัจจุบันที่มีไดนามิกปูทางสำหรับแอปพลิเคชันที่ขึ้นอยู่กับข้อมูลเรียลไทม์และข้อมูลเชิงลึกที่สามารถดำเนินการได้ เมื่อรวมกับความเร็วการอนุมานอย่างรวดเร็วของ Groq การใช้เครื่องมือจะปลดล็อคศักยภาพของแอพพลิเคชั่นที่มีประสิทธิภาพสูงและเรียลไทม์ในอุตสาหกรรมที่หลากหลาย
อ้างถึงเอกสารอย่างเป็นทางการ
Groq ได้ปรับรุ่นต่อไปนี้อย่างละเอียดโดยเฉพาะสำหรับการใช้เครื่องมือที่ดีที่สุดและตอนนี้พวกเขามีให้บริการในตัวอย่างสาธารณะ:
llama3-groq-70b-8192-tool-use-previewllama3-groq-8b-8192-tool-use-previewสำหรับรายละเอียดเพิ่มเติมโปรดดูประกาศเปิดตัว
คำเตือน
สำหรับกรณีการใช้เครื่องมือหลายครั้งที่กว้างขวางเราขอแนะนำให้ใช้ประโยชน์จากความสามารถในการใช้เครื่องมือดั้งเดิมของ Llama 3.1 models สำหรับสถานการณ์ที่แคบกว่าแบบหลายเลี้ยวแบบจำลองการใช้เครื่องมือที่ปรับแต่งได้อย่างละเอียดอาจมีประสิทธิภาพมากขึ้น เราขอแนะนำให้ทำการทดลองด้วยวิธีการทั้งสองเพื่อพิจารณาว่ากรณีการใช้งานเฉพาะของคุณดีที่สุด
Llama-3.1 models ต่อไปนี้ขอแนะนำอย่างยิ่งสำหรับแอปพลิเคชันเครื่องมือเนื่องจากความสามารถรอบด้านและประสิทธิภาพที่แข็งแกร่ง:
llama-3.1-70b-versatilellama-3.1-8b-instantรุ่นที่รองรับอื่น ๆ
รุ่นต่อไปนี้ขับเคลื่อนโดย GROQ ยังรองรับการใช้เครื่องมือ:
llama3-70b-8192llama3-8b-8192mixtral-8x7b-32768 (ไม่รองรับเครื่องมือแบบขนาน)gemma-7b-it (ไม่รองรับเครื่องมือแบบขนาน)gemma2-9b-it (ไม่รองรับเครื่องมือแบบขนาน)เคล็ดลับ
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 ;ในตัวอย่างรหัสนี้หากเครื่องมือส่งคืนผลลัพธ์หลายรายการจะมีเพียงสองรายการแรกเท่านั้นที่จะถูกประมวลผลและแสดงในแต่ละ TMEMO สองตัวตามลำดับ
หน่วย Groq.Functions.Core.pas จัดเตรียมคลาสและวิธีการที่จำเป็นสำหรับการพัฒนาปลั๊กอินเครื่องมือ ปลั๊กอินแต่ละตัวสืบทอดมาจากคลาส TFunctionCore ซึ่งใช้วิธีการที่กำหนดโดยอินเทอร์เฟซ IFunctionCore สำหรับคำแนะนำในการสร้างฟังก์ชั่นที่กำหนดเองโปรดดูที่ Groq.Functions.Example.pas UNIT ซึ่งทำหน้าที่เป็นตัวอย่างที่ใช้งานได้จริง
Groqcloud ให้การเข้าถึงเทมเพลตรุ่น Llama-Guard-3-8B สำหรับการควบคุมเนื้อหาข้อความที่มีประสิทธิภาพ
ตัวอย่างรหัสการกลั่นกรอง
เคล็ดลับ
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 ); หน่วย Groq.Safety.pas ให้กรอบและเครื่องมือสำหรับการจัดหมวดหมู่และการจัดการเนื้อหาที่เป็นอันตรายตามหมวดหมู่อันตรายที่กำหนดไว้ล่วงหน้า ซึ่งรวมถึงการแจกแจงวิธีการของผู้ช่วยและบันทึกเพื่อปรับปรุงการระบุและการจำแนกประเภทของอันตรายประเภทต่างๆภายในแอปพลิเคชันสนับสนุนวิธีการที่มีโครงสร้างเพื่อความปลอดภัยของเนื้อหาและการประเมินความเสี่ยง
บันทึก
Llama Guard 3 ได้รับการฝึกฝนให้ทำนายฉลากความปลอดภัยใน 14 หมวดหมู่ ที่แสดงด้านล่างตามอนุกรมวิธาน MLCommons ของอันตราย
Groqcloud ไม่ได้มีตัวเลือกสำหรับการปรับแต่งรุ่นที่มีอยู่
เคล็ดลับ
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);
...ยินดีต้อนรับคำขอดึง หากคุณวางแผนที่จะทำการเปลี่ยนแปลงครั้งใหญ่โปรดเปิดปัญหาก่อนเพื่อหารือเกี่ยวกับการเปลี่ยนแปลงที่คุณเสนอ
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT