Добавил в клиент 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 без проблем может вывести список файлов и даже показать содержимое (с кириллицей я пока не разобрался).