OpenAI for Delphi هي مكتبة عميل للاتصال بـ OpenAI API من Delphi وLazarus/FPC (مترجم Pascal المجاني). من هذه المكتبة، يمكنك استخدام خدمات OpenAI الشهيرة، مثل ChatGPT، مباشرةً من تطبيق Delphi أو Lazarus.
هذه مكتبة غير رسمية. لا توفر OpenAI أي مكتبة رسمية لدلفي.
لاستخدام المكتبة، ما عليك سوى إضافة المجلد المصدر إلى مسار مكتبة IDE، أو مسار مصدر مشروعك.
لاستخدام العميل، أضف وحدتي OpenAIClient
و OpenAIDtos
إلى جملة الاستخدامات الخاصة بوحدتك.
uses
OpenAIClient, OpenAIDtos;
يجب أن يتم تكوين المكتبة باستخدام مفتاح API السري الخاص بحسابك، والذي يتوفر على موقع الويب. نوصي بتعيينه كمتغير بيئة باسم OPENAI_API_KEY
. بمجرد حصولك على مفتاح API، ما عليك سوى إنشاء العميل وتعيين المفتاح على النحو التالي:
var
Client: IOpenAIClient;
{ ... }
Client := TOpenAIClient.Create;
Client.Config.AccessToken := GetEnvironmentVariable( ' OPENAI_API_KEY ' );
تتوفر معظم نقاط نهاية OpenAI API في العميل، ضمن الواجهة المتوفرة في خاصية OpenAI
. يوضح المثال التالي كيفية طرح سؤال وتلقي إجابة باستخدام نقطة النهاية CreateCompletion:
function AskQuestion ( const Question: string): string;
var
Request: TCreateCompletionRequest;
Response: TCreateCompletionResponse;
begin
Response := nil ;
Request := TCreateCompletionRequest.Create;
try
Request.Prompt := Question;
Request.Model := ' text-davinci-003 ' ;
Request.MaxTokens := 2048 ; // Be careful as this can quickly consume your API quota.
Response := Client.OpenAI.CreateCompletion(Request);
if Assigned(Response.Choices) and (Response.Choices.Count > 0 ) then
Result := Response.Choices[ 0 ].Text
else
Result := ' ' ;
finally
Request.Free;
Response.Free;
end ;
end ;
يجب عليك تدمير جميع الكائنات التي تم إنشاؤها وتمريرها كمعلمات إدخال، بالإضافة إلى جميع الكائنات التي أنشأها العميل وتم تقديمها كنتائج دالة، وإلا فسوف تتعرض لتسرب الذاكرة.
يمكنك استخدام إكمال كود دلفي للتحقق من الأساليب والمعلمات والأنواع المتاحة وقراءة تعليقات الوثائق.
لا تتطلب هذه المكتبة أي مكتبة تابعة لجهة خارجية. وهو يعمل على جميع إصدارات دلفي الحديثة التي توفر الوحدة ( System.Net.HttpClient
) وLazarus/FPC. على الرغم من أنه لم يتم اختباره بشكل كامل، إلا أنه يجب أن يعمل أيضًا على جميع الأنظمة الأساسية المدعومة (Windows وLinux وmacOS وما إلى ذلك).
نظرًا لأن المكتبة تتطلب مفتاح API السري الخاص بك، فمن غير المستحسن استخدامه في تطبيقات العميل، حيث سيتم كشف مفتاحك السري، إلا إذا كنت متأكدًا من المخاطر الأمنية.
يمكنك تخصيص الطلب ليناسب احتياجاتك الخاصة عن طريق استخدام مصنع الطلبات الخاص بك. ما عليك سوى تنفيذ الواجهة IRestRequestFactory
وتعيينها في الخاصية Config.RequestFactory
.
على سبيل المثال، إذا كنت تريد إعداد مؤسسة مخصصة (والتي يتم توفيرها في رأس HTTP)، فهذا نموذج للتعليمة البرمجية:
uses { ... } , OpenApiRest;
type
TMyRequestFactory = class (TInterfacedObject, IRestRequestFactory)
strict private
FFactory: IRestRequestFactory;
public
constructor Create(AFactory: IRestRequestFactory);
function CreateRequest : IRestRequest;
end ;
constructor TMyRequestFactory.Create(AFactory: IRestRequestFactory);
begin
FFactory := AFactory;
end ;
function TMyRequestFactory.CreateRequest : IRestRequest;
begin
Result := FFactory.CreateRequest;
Result.AddHeader( ' OpenAI-Organization ' , ' org-nUilalMOTvqGjGeAopTDIsSB ' );
end ;
// Set it after creating the client
FClient := TOpenAIClient.Create;
FClient.Config.RequestFactory := TMyRequestFactory.Create(FClient.Config.RequestFactory);
مثال على استخدام openai-delphi مع WPP4Delphi في WPPConnect-Team
مكون مفتوح المصدر لإرسال الرسائل مدمج في whatsapp web باستخدام دلفي
مثال: العرض التجريبي
مثال الكود في دلفي:
if SwtChatGPT.IsOn then
begin
if Question <> '' then
begin
//Credits --> https://github.com/landgraf-dev/openai-delphi
Answer := AskQuestion(Question, AChat.id);
phoneNumber := Copy(Answer, 1, pos('#', Answer)-1);
Answer := StringReplace(Answer, phoneNumber + '#', '',[]);
if Trim(Answer) <> '' then
frDemo.TWPPConnect1.SendTextMessageEx(phoneNumber, '?' + ' *ChatGPT* ' + Answer, 'createChat: true', '123')
else
frDemo.TWPPConnect1.SendTextMessageEx(phoneNumber, '?' + ' *ChatGPT* ' + 'Could not retrieve an answer.', 'createChat: true', '123');
end;
end;
الكود الكامل في WPP4Delphi