此存储库包含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.