Эта репозиторита содержит реализацию Delphi над Public Public API.
❗ Это неофициальная библиотека. OpenAI не предоставляет никакой официальной библиотеки для Delphi.
API | Статус |
---|---|
Модели | ? Сделанный |
Завершение (наследие) | ? Сделанный |
Чат | ? Сделанный |
Чат | ? Сделанный |
Редактирование | ? Сделанный |
Изображения | ? Сделанный |
Внедрения | ? Сделанный |
Аудио | ? Сделанный |
Файлы | ? Сделанный |
Тонкие надуны (депутаты) | ? Сделанный |
Тонкая настройка | ? Сделанный |
Модерации | ? Сделанный |
Двигатели (депрессированы) | ? Сделанный |
Помощники | ? В ходе выполнения |
Нить | ? В ходе выполнения |
Сообщения | ? В ходе выполнения |
Пробеги | ? В ходе выполнения |
OpenAI-это некоммерческая организация по исследованию искусственного интеллекта, основанная в Сан-Франциско, штат Калифорния, в 2015 году. Она была создана с целью продвижения цифрового интеллекта таким образом, чтобы человечество в целом и способствовала социальному прогрессу. Организация стремится разработать программы и системы ИИ (искусственный интеллект), которые могут думать, действовать и адаптировать самостоятельно самостоятельно. Миссия Openai состоит в том, чтобы обеспечить безопасное и ответственное использование ИИ для гражданского блага, экономического роста и других общественных выгод; Это включает в себя передовые исследования важных тем, таких как общая безопасность ИИ, обработка естественного языка, прикладные методы обучения подкреплению, алгоритмы машинного зрения и т. Д.
API OpenAI может применяться практически к любой задаче, которая включает в себя понимание или генерирование естественного языка или кода. Мы предлагаем спектр моделей с различными уровнями мощности, подходящими для различных задач, а также способность тонко настроить свои собственные собственные модели. Эти модели могут использоваться для всего, от генерации контента до семантического поиска и классификации.
Эта библиотека обеспечивает доступ к API службы Openai, на основе которого работает CHATGPT и, например, генерацию изображений из текста с использованием DALL-E
.
Вы можете установить пакет из GetIt
непосредственно в IDE. Или, чтобы использовать библиотеку, просто добавьте root
папку в путь библиотеки IDE или ваш путь источника проекта.
Для инициализации экземпляра API вам необходимо получить токен API от вашей организации Open AI.
После того, как у вас есть токен, вы можете инициализировать класс 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 работает на GPT-3.5-Turbo, самой продвинутой языковой модели Openai.
Используя API OpenAI, вы можете построить свои собственные приложения с 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, который придерживается подписи функции. С этой возможностью также возникают потенциальные риски. Мы настоятельно рекомендуем построить потоки подтверждения пользователя, прежде чем предпринимать действия, которые влияют на мир от имени пользователей (отправка электронной почты, публикация чего -то в Интернете, совершающего покупку и т. Д.).
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.