pues no Neftali, no tengo esos programas, intente bajarme el REST Debugger pero estos tios de Embarcadero tienen un formulario enorme pa esa jodida descarga y la verdad que ni lo rellene
tampoco funciona el codigo ese, lo acepta y compila asi como lo he adaptado, no lo he metido como me has puesto porque el parametro PoDoNotEncode no lo acepta
lo he adaptado a C++ builder de esta manera pero me sigue dando el error de "Unauthorized" diciendo que no le estoy dando la API KEY
Código:
RESTRequest1->AddParameter("Authorization","Authorization: Bearer API_KEY", pkHTTPHEADER);
RESTRequest1->AddParameter( "Content-Type", "application/json");
he probado tambien asi:
Código:
RESTRequest1->AddParameter("Authorization","Bearer API_KEY", pkHTTPHEADER);
RESTRequest1->AddParameter( "Content-Type", "application/json");
los tios de TMS componentes tienen un componente para eso segun este codigo, se llama TMSCloudBase o algo asi pero no se donde esta, tengo los UI Pack pero no lo veo que lo tenga en la paleta
el codigo que ellos dan para lo de CHAT GPT con su componente es este:
Código:
uses
System.JSON, VCL.TMSFNCCloudBase;
function AskChatGPT(AQuestion: string): string;
var
LCb: TTMSFNCCloudBase;
LPostdata: string;
LJsonValue: TJsonValue;
LJsonArray: TJsonArray;
LJSonString: TJsonString;
begin
Result := '';
LPostData := '{' +
'"model": "text-davinci-003",'+
'"prompt": "' + AQuestion + '",'+
'"max_tokens": 2048,'+
'"temperature": 0'+
'}';
// create instance of TMS FNC Cloud Base class
LCb := TTMSFNCCloudBase.Create;
try
// Use JSON for the REST API calls and set API KEY via Authorization header
LCb.Request.AddHeader('Authorization','Bearer ' + CHATGPT_APIKEY);
LCb.Request.AddHeader('Content-Type','application/json');
// Select HTTPS POST method, set POST data and specify endpoint URL
LCb.Request.Method := rmPOST;
LCb.Request.PostData := LPostData;
LCb.Request.Host := 'http__s://api.openai.com';
LCb.Request.Path := 'v1/completions';
// Execute the HTTPS POST request synchronously (last param Async = false)
LCb.ExecuteRequest(nil,nil,false);
// Process returned JSON when request was successful
if Lcb.RequestResult.Success then
begin
LJsonValue := TJSonObject.ParseJSONValue(Lcb.RequestResult.ResultString);
LJsonValue := LJsonValue.GetValue<TJSonValue>('choices');
if LJsonValue is TJSonArray then
begin
LJSonArray := LJsonValue as TJSonArray;
LJSonString := LJSonArray.Items[0].GetValue<TJSONString>('text');
Result := LJSonString.Value;
end
else
end
else
raise Exception.Create('HTTP response code: ' + LCb.RequestResult.ResponseCode.ToString);
finally
LCb.Free;
end;
end;