OpenAI สำหรับ Delphi เป็นไลบรารีไคลเอ็นต์สำหรับเชื่อมต่อกับ OpenAI API จาก Delphi และ Lazarus/FPC (Free Pascal Compiler) จากไลบรารีนี้ คุณสามารถใช้บริการ OpenAI ยอดนิยม เช่น ChatGPT ได้โดยตรงจากแอปพลิเคชัน Delphi หรือ Lazarus ของคุณ
นี่เป็นห้องสมุดที่ไม่เป็นทางการ OpenAI ไม่มีห้องสมุดอย่างเป็นทางการสำหรับ Delphi
หากต้องการใช้ไลบรารี เพียงเพิ่มโฟลเดอร์ Source ลงในเส้นทางไลบรารี 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 ;
ออบเจ็กต์ทั้งหมดที่สร้างและส่งผ่านเป็นพารามิเตอร์อินพุต รวมถึงออบเจ็กต์ทั้งหมดที่สร้างโดยไคลเอนต์และเป็นผลลัพธ์ของฟังก์ชัน จะต้องถูกทำลายโดยคุณ ไม่เช่นนั้นหน่วยความจำจะรั่วไหล
คุณสามารถใช้ การเติมโค้ด Delphi เพื่อตรวจสอบวิธีการ พารามิเตอร์ ประเภท และอ่านความคิดเห็นในเอกสารประกอบได้
ห้องสมุดนี้ไม่จำเป็นต้องมีห้องสมุดบุคคลที่สาม ใช้งานได้กับ Delphi เวอร์ชันล่าสุดทั้งหมดที่มีหน่วย ( 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
Component Opensource สำหรับการส่งข้อความที่รวมอยู่ในเว็บ whatsapp โดยใช้ Delphi
ตัวอย่าง: มุมมองสาธิต
ตัวอย่างโค้ดใน Delphi:
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