此存儲庫包含Openai Public API的Delphi實施。
❗這是一個非正式的圖書館。 Openai不為Delphi提供任何官方圖書館。
API | 地位 |
---|---|
型號 | ?完畢 |
完成(遺產) | ?完畢 |
聊天 | ?完畢 |
聊天視覺 | ?完畢 |
編輯 | ?完畢 |
圖像 | ?完畢 |
嵌入 | ?完畢 |
聲音的 | ?完畢 |
文件 | ?完畢 |
微型(編寫) | ?完畢 |
微調 | ?完畢 |
適中 | ?完畢 |
發動機(解釋) | ?完畢 |
助手 | ?進行中 |
線程 | ?進行中 |
消息 | ?進行中 |
運行 | ?進行中 |
Openai是一家非營利性人工智能研究組織,該組織於2015年在加利福尼亞州舊金山成立。它的創建目的是以使整個人類的人性化並促進社會進步的方式推進數字智能。該組織努力開發AI(人工智能)計劃和系統,這些程序和系統可以自主地自動地思考,行動和適應。 Openai的使命是確保對公民利益,經濟增長和其他公共利益的安全和負責任的使用;這包括對重要主題的尖端研究,例如通用AI安全,自然語言處理,應用增強學習方法,機器視覺算法等。
OpenAI API幾乎可以應用於涉及理解或生成自然語言或代碼的任何任務。我們提供具有適用於不同任務的電源不同的模型範圍,以及微調您自己的自定義模型的能力。這些模型可用於從內容生成到語義搜索和分類的所有內容。
該庫提供了對OpenAi服務的API的訪問權限,基於ChatGpt的工作,例如使用DALL-E
從文本中生成圖像。
您可以直接在IDE中安裝GetIt
包裹。或者,要使用庫,只需將root
文件夾添加到IDE庫路徑或您的項目源路徑。
要初始化API實例,您需要從打開的AI組織中獲取API令牌。
有一個令牌後,您可以初始化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由OpenAI最先進的語言模型GPT-3.5-Turbo提供動力。
使用OpenAI API,您可以使用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響應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)
該庫不需要任何第三方庫。它可以在最近的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.