Ver Mensaje Individual
  #4  
Antiguo 06-03-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 16
Reputación: 0
navbuoy Va por buen camino
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;
Responder Con Cita