OpenAI for Delphi는 Delphi 및 Lazarus/FPC(Free Pascal Compiler)에서 OpenAI API에 연결하기 위한 클라이언트 라이브러리입니다. 이 라이브러리를 사용하면 ChatGPT와 같은 널리 사용되는 OpenAI 서비스를 Delphi 또는 Lazarus 애플리케이션에서 직접 사용할 수 있습니다.
이것은 비공식 도서관입니다. OpenAI는 Delphi에 대한 공식 라이브러리를 제공하지 않습니다.
라이브러리를 사용하려면 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 코드 완성을 사용하여 사용 가능한 메소드, 매개변수, 유형을 확인하고 문서 주석을 읽을 수 있습니다.
이 라이브러리에는 타사 라이브러리가 필요하지 않습니다. 이는 유닛( System.Net.HttpClient
) 및 Lazarus/FPC를 제공하는 모든 최신 Delphi 버전에서 작동합니다. 완전히 테스트되지는 않았지만 지원되는 모든 플랫폼(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);
WPPConnect-Team에서 WPP4Delphi와 함께 openai-delphi를 사용하는 예
Delphi를 사용하여 whatsapp 웹에 통합된 메시지를 보내기 위한 구성 요소 오픈소스
예: 데모 보기
델파이의 코드 예:
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의 완전한 코드