이 repositorty에는 OpenAI Public API에 대한 Delphi 구현이 포함되어 있습니다.
∎ 이것은 비공식 도서관입니다. OpenAi는 Delphi의 공식 도서관을 제공하지 않습니다.
API | 상태 |
---|---|
모델 | ? 완료 |
완성 (레거시) | ? 완료 |
채팅 | ? 완료 |
채팅 비전 | ? 완료 |
편집 | ? 완료 |
이미지 | ? 완료 |
임베딩 | ? 완료 |
오디오 | ? 완료 |
파일 | ? 완료 |
미세 조정 (부패) | ? 완료 |
미세 조정 | ? 완료 |
중재 | ? 완료 |
엔진 (부패) | ? 완료 |
조수 | ? 진행 중 |
스레드 | ? 진행 중 |
메시지 | ? 진행 중 |
실행 | ? 진행 중 |
Openai는 2015 년 캘리포니아 샌프란시스코에서 설립 된 비영리 인공 지능 연구 기관으로 인류 전체에 혜택을주고 사회적 진보를 촉진하는 방식으로 디지털 인텔리전스를 발전시키는 목적으로 만들어졌습니다. 이 조직은 자율적으로 자신의 생각, 행동 및 적응할 수있는 AI (인공 지능) 프로그램 및 시스템을 개발하기 위해 노력하고 있습니다. Openai의 사명은 시민의 선, 경제 성장 및 기타 공공 혜택을 위해 AI의 안전하고 책임감있는 사용을 보장하는 것입니다. 여기에는 일반 AI 안전, 자연어 처리, 응용 강화 학습 방법, 기계 비전 알고리즘 등과 같은 중요한 주제에 대한 최첨단 연구가 포함됩니다.
OpenAI API는 자연어 또는 코드를 이해하거나 생성하는 사실상 모든 작업에 적용될 수 있습니다. 우리는 다양한 작업에 적합한 다양한 수준의 전력을 가진 다양한 모델을 제공 할뿐만 아니라 자신의 사용자 정의 모델을 미세 조정하는 기능을 제공합니다. 이 모델은 컨텐츠 생성에서 시맨틱 검색 및 분류에 이르기까지 모든 것에 사용할 수 있습니다.
이 라이브러리는 OpenAI 서비스의 API에 대한 액세스를 제공하며, 예를 들어, DALL-E
사용하는 텍스트의 이미지 생성을 기준으로 OpenAI 서비스의 API에 액세스 할 수 있습니다.
IDE의 GetIt
에서 패키지를 직접 설치할 수 있습니다. 또는 라이브러리를 사용하려면 root
폴더를 IDE 라이브러리 경로 또는 프로젝트 소스 경로에 추가하십시오.
API 인스턴스를 초기화하려면 Open AI 조직에서 API 토큰을 얻어야합니다.
토큰이 있으면 API의 진입 점 인 TOpenAI
클래스를 초기화 할 수 있습니다.
많은 매개 변수가있을 수 있고 모든 매개 변수가 필요하지는 않기 때문에 익명 기능을 사용하여 구성됩니다.
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는 OpenAi의 가장 고급 언어 모델 인 GPT-3.5-Turbo로 구동됩니다.
OpenAI API를 사용하면 GPT-3.5-Turbo를 사용하여 자신의 응용 프로그램을 구축하여 다음과 같은 작업을 수행 할 수 있습니다.
이 안내서는 채팅 기반 언어 모델을 호출하는 방법을 설명하고 좋은 결과를 얻기위한 팁을 공유합니다.
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)
이 도서관에는 제 3 자 도서관이 필요하지 않습니다. 최근 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.