
repositorty นี้มีการใช้งาน Delphi ผ่าน OpenAI Public API
❗ นี่คือห้องสมุดที่ไม่เป็นทางการ OpenAI ไม่ได้ให้ห้องสมุดอย่างเป็นทางการสำหรับ Delphi
| API | สถานะ |
|---|---|
| แบบจำลอง | - เสร็จแล้ว |
| ความสำเร็จ (มรดก) | - เสร็จแล้ว |
| แชท | - เสร็จแล้ว |
| วิสัยทัศน์การแชท | - เสร็จแล้ว |
| การแก้ไข | - เสร็จแล้ว |
| ภาพ | - เสร็จแล้ว |
| การฝัง | - เสร็จแล้ว |
| เสียง | - เสร็จแล้ว |
| ไฟล์ | - เสร็จแล้ว |
| การปรับแต่ง (depricated) | - เสร็จแล้ว |
| การปรับแต่ง | - เสร็จแล้ว |
| การกลั่นกรอง | - เสร็จแล้ว |
| เครื่องยนต์ (depricated) | - เสร็จแล้ว |
| ผู้ช่วย | - การดำเนินการ |
| ด้าย | - การดำเนินการ |
| ข้อความ | - การดำเนินการ |
| วิ่ง | - การดำเนินการ |
OpenAI เป็นองค์กรวิจัยปัญญาประดิษฐ์ที่ไม่แสวงหาผลกำไรซึ่งก่อตั้งขึ้นในซานฟรานซิสโกรัฐแคลิฟอร์เนียในปี 2558 มันถูกสร้างขึ้นโดยมีวัตถุประสงค์เพื่อพัฒนาข่าวกรองดิจิทัลในรูปแบบที่เป็นประโยชน์ต่อมนุษยชาติโดยรวมและส่งเสริมความก้าวหน้าทางสังคม องค์กรมุ่งมั่นที่จะพัฒนาโปรแกรมและระบบปัญญาประดิษฐ์) และระบบที่สามารถคิดดำเนินการและปรับตัวได้อย่างรวดเร็วด้วยตนเอง - อิสระ ภารกิจของ Openai คือเพื่อให้แน่ใจว่าการใช้ AI อย่างปลอดภัยและมีความรับผิดชอบเพื่อประโยชน์ของพลเมืองการเติบโตทางเศรษฐกิจและผลประโยชน์สาธารณะอื่น ๆ ซึ่งรวมถึงการวิจัยที่ทันสมัยในหัวข้อสำคัญเช่นความปลอดภัย AI ทั่วไปการประมวลผลภาษาธรรมชาติวิธีการเรียนรู้การเสริมแรงแบบประยุกต์
OpenAI API สามารถนำไปใช้กับงานใด ๆ ที่เกี่ยวข้องกับการทำความเข้าใจหรือสร้างภาษาหรือรหัสธรรมชาติ เรานำเสนอสเปกตรัมของรุ่นที่มีระดับพลังงานที่แตกต่างกันเหมาะสำหรับงานที่แตกต่างกันรวมถึงความสามารถในการปรับแต่งโมเดลที่กำหนดเองของคุณเอง โมเดลเหล่านี้สามารถใช้สำหรับทุกสิ่งตั้งแต่การสร้างเนื้อหาไปจนถึงการค้นหาและการจำแนกประเภทความหมาย
ห้องสมุดนี้ให้การเข้าถึง API ของบริการ OpenAI บนพื้นฐานของการทำงานของ ChatGPT และตัวอย่างเช่นการสร้างภาพจากข้อความโดยใช้ DALL-E
คุณสามารถติดตั้งแพ็คเกจจาก GetIt ได้โดยตรงใน IDE หรือหากต้องการใช้ไลบรารีเพียงเพิ่มโฟลเดอร์ root ไปยังเส้นทางไลบรารี IDE หรือเส้นทางแหล่งที่มาโครงการของคุณ
ในการเริ่มต้นอินสแตนซ์ API คุณต้องได้รับโทเค็น API จากองค์กร Open AI ของคุณ
เมื่อคุณมีโทเค็นคุณสามารถเริ่มต้นคลาส TOpenAI ซึ่งเป็นจุดเข้าสู่ API
เนื่องจากความจริงที่ว่าอาจมีพารามิเตอร์มากมายและไม่จำเป็นต้องมีทั้งหมดพวกเขาจึงได้รับการกำหนดค่าโดยใช้ฟังก์ชั่นที่ไม่ระบุชื่อ
uses OpenAI;
var OpenAI := TOpenAIComponent.Create(Self, API_TOKEN);หรือ
uses OpenAI;
var OpenAI: IOpenAI := TOpenAI.Create(API_TOKEN);เมื่อโทเค็นคุณมีโทเค็นและอินสแตนซ์จะเริ่มต้นคุณก็พร้อมที่จะร้องขอ
แสดงรายการและอธิบายโมเดลต่าง ๆ ที่มีอยู่ใน API คุณสามารถอ้างถึงเอกสารโมเดลเพื่อทำความเข้าใจว่ามีโมเดลใดบ้างและความแตกต่างระหว่างพวกเขา
var Models := OpenAI.Model.List();
try
for var Model in Models.Data do
MemoChat.Lines.Add(Model.Id);
finally
Models.Free;
end ;ตรวจสอบรูปแบบเอกสารสำหรับข้อมูลเพิ่มเติม
ด้วยการแจ้งเตือนแบบจำลองจะส่งคืนความสำเร็จที่คาดการณ์ไว้อย่างน้อยหนึ่งรายการและยังสามารถส่งคืนความน่าจะเป็นของโทเค็นทางเลือกในแต่ละตำแหน่ง
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 ;ตรวจสอบเอกสารที่สมบูรณ์สำหรับข้อมูลเพิ่มเติม
ด้วยการสนทนาการแชทโมเดลจะส่งคืนการตอบกลับการแชท Chatgpt ใช้พลังงานจาก GPT-3.5-Turbo ซึ่งเป็นรุ่นภาษาที่ทันสมัยที่สุดของ OpenAI
การใช้ OpenAI API คุณสามารถสร้างแอปพลิเคชันของคุณเองด้วย GPT-3.5-turbo เพื่อทำสิ่งต่าง ๆ เช่น:
คู่มือนี้อธิบายวิธีการโทร API สำหรับรูปแบบภาษาแชทและแบ่งปันเคล็ดลับเพื่อให้ได้ผลลัพธ์ที่ดี
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 ;ตรวจสอบเอกสารการแชทสำหรับข้อมูลเพิ่มเติม
ด้วยภาพแจ้งและ/หรือภาพอินพุตโมเดลจะสร้างภาพใหม่
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 ;ตรวจสอบเอกสารภาพสำหรับข้อมูลเพิ่มเติม
ในการเรียก API คุณสามารถอธิบายฟังก์ชั่นไปยัง GPT-3.5-turbo-0613 และ GPT-4-0613 และให้โมเดลเลือกที่จะส่งออกวัตถุ JSON อย่างชาญฉลาดที่มีอาร์กิวเมนต์เรียกฟังก์ชั่นเหล่านั้น API การแชทเสร็จสมบูรณ์ไม่เรียกฟังก์ชั่น แต่โมเดลสร้าง JSON ที่คุณสามารถใช้เรียกใช้ฟังก์ชั่นในรหัสของคุณ
รุ่นล่าสุด (GPT-3.5-turbo-0613 และ GPT-4-0613) ได้รับการปรับแต่งทั้งสองตรวจจับเมื่อใดที่ควรเรียกใช้ฟังก์ชัน (ขึ้นอยู่กับอินพุต) และตอบสนองกับ JSON ที่ปฏิบัติตามลายเซ็นฟังก์ชั่น ด้วยความสามารถนี้จึงมีความเสี่ยงที่อาจเกิดขึ้น เราขอแนะนำอย่างยิ่งในการสร้างกระแสการยืนยันของผู้ใช้ก่อนที่จะดำเนินการที่ส่งผลกระทบต่อโลกในนามของผู้ใช้ (ส่งอีเมลโพสต์บางสิ่งบางอย่างออนไลน์ทำการซื้อ ฯลฯ )
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 ;ตรวจสอบฟังก์ชั่นเอกสารประกอบสำหรับข้อมูลเพิ่มเติม
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)
ห้องสมุดนี้ไม่ต้องการห้องสมุดบุคคลที่สามใด ๆ มันทำงานกับเวอร์ชัน Delphi ล่าสุด (10.3+) แม้ว่าจะไม่ได้ทดสอบอย่างเต็มที่ แต่ก็ควรทำงานบนแพลตฟอร์มที่รองรับทั้งหมด (Windows, Linux, MacOS, Android, iOS)
เนื่องจากห้องสมุดต้องการคีย์ API ลับของคุณจึงไม่แนะนำให้คุณใช้กับแอปพลิเคชันไคลเอนต์เนื่องจากคีย์ลับของคุณจะถูกเปิดเผยเว้นแต่คุณจะมั่นใจเกี่ยวกับความเสี่ยงด้านความปลอดภัย
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.