Добавил в клиент ChatGPT возможность создавать и использовать внешние функции:

Для примера сделал две команды: "Узнать погоду" и "Выполнить команду через cmd"
Функции чата GPT - это механизм их API, который позволяет GPT вызывать по необходимости функции, которые вы регистрируете (отправляете в запросе как доступные) и работать с результатом их выполнения.
Достаточно интересный и опасный механизм. Во избежании проблем, которые могут возникнуть я добавил настройку, которая позволяет подтверждать выполнение функции и просмотреть параметры, с которыми будет вызвана функция.
Функции можно подключать в качестве динамической библиотеки, которая экспортирует функцию gptfunctions, которая в свою очередь возвращает массив объектов, которые представляют функции - объекты типа IChatFunctionExternal.
function gptfunctions: TArray<IChatFunctionExternal>; begin Result := [TChatFunctionCMD.Create]; end;
IChatFunctionExternal = interface ['{B2DACD74-B773-44C2-838D-43BF99CB5405}'] function GetDescription: WideString; //Example: 'Get the current weather in a given location' function GetName: WideString; //Example: 'get_current_weather' function GetParameters: WideString; //JSON Scheme function Execute(const Args: WideString): WideString; //Args - json with params, result - json with info end;
GPT без проблем может вывести список файлов и даже показать содержимое (с кириллицей я пока не разобрался).
