يحتوي هذا المستودع على تطبيق Delphi على API Openai Public API.
❗ هذه مكتبة غير رسمية. Openai لا يوفر أي مكتبة رسمية لـ Delphi.
API | حالة |
---|---|
النماذج | ؟ منتهي |
الانتهاء (إرث) | ؟ منتهي |
محادثة | ؟ منتهي |
رؤية الدردشة | ؟ منتهي |
تعديلات | ؟ منتهي |
الصور | ؟ منتهي |
التضمين | ؟ منتهي |
صوتي | ؟ منتهي |
الملفات | ؟ منتهي |
نضعات دقيقة (مخفضة) | ؟ منتهي |
الكون المثالى | ؟ منتهي |
التعتيم | ؟ منتهي |
محركات (مخفضة) | ؟ منتهي |
المساعدون | ؟ في تَقَدم |
المواضيع | ؟ في تَقَدم |
رسائل | ؟ في تَقَدم |
يدير | ؟ في تَقَدم |
Openai هي منظمة أبحاث الذكاء الاصطناعية غير الهادفة للربح تأسست في سان فرانسيسكو ، كاليفورنيا في عام 2015. وقد تم إنشاؤها بهدف النهوض بالذكاء الرقمي بطرق تفيد الإنسانية ككل وتعزز التقدم الاجتماعي. تسعى المنظمة إلى تطوير برامج وأنظمة الذكاء الاصطناعي (الذكاء الاصطناعي) التي يمكن أن تفكر وتصرف وتتكيف بسرعة بمفردها - بشكل مستقل. تتمثل مهمة Openai في ضمان الاستخدام الآمن والمسؤول لمنظمة العفو الدولية للنمو المدني والنمو الاقتصادي وغيرها من الفوائد العامة ؛ ويشمل ذلك الأبحاث المتطورة في مواضيع مهمة مثل سلامة الذكاء الاصطناعى العام ، ومعالجة اللغة الطبيعية ، وطرق التعلم المعززة التطبيقية ، وخوارزميات رؤية الماكينة ، إلخ.
يمكن تطبيق API Openai على أي مهمة تتضمن فهم أو توليد لغة أو رمز طبيعي. نحن نقدم مجموعة من النماذج ذات مستويات مختلفة من الطاقة المناسبة للمهام المختلفة ، وكذلك القدرة على ضبط النماذج المخصصة الخاصة بك. يمكن استخدام هذه النماذج في كل شيء من توليد المحتوى إلى البحث الدلالي وتصنيفه.
توفر هذه المكتبة إمكانية الوصول إلى واجهة برمجة التطبيقات لخدمة Openai ، والتي يعمل ChatGPT على أساسها ، وعلى سبيل المثال ، توليد الصور من النص باستخدام DALL-E
.
يمكنك تثبيت الحزمة من GetIt
مباشرة في IDE. أو ، لاستخدام المكتبة ، ما عليك سوى إضافة المجلد root
إلى مسار مكتبة IDE ، أو مسار مصدر المشروع.
لتهيئة مثيل API ، تحتاج إلى الحصول على رمز API من منظمة 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.
باستخدام API Openai ، يمكنك إنشاء تطبيقاتك الخاصة باستخدام 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)
لا تتطلب هذه المكتبة أي مكتبة طرف ثالثة. إنه يعمل على إصدارات دلفي الحديثة (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.