![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
consultar a API ChatGPT con REST en C++ Builder Rad Studio 12
Buenos dias a todos
me gustaria si alguien me pudiese ayudar en este asunto que me trae de cabeza ya Estoy intentando hacer una consulta a CHATGPT mediante los componentes RESTClient RESTRequest y RESTResponse de C++ Builder Rad Studio 12 tengo esta funcion y aunque lo he intentado de multiples maneras, siempre me tira este error que lo que deduzco es que no logra autentificarse bien en el API de entrada Código:
{"error":{"message":"You didn't provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you're accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https:\/\/platform.openai.com\/account\/api-keys.","type":"invalid_request_error","param":null,"code":null}}
he de aclarar que el codigo compila sin errores ninguno y funciona y en la ejecucion es cuando falla al intentar la Authorization Código:
// Set REST Client
Memo1->Clear();
RESTClient1->BaseURL = "https://api.openai.com/v1/chat/completions";
RESTClient1->Params->AddHeader( "content", "Content-Type: application/json");
RESTClient1->Params->AddHeader( "Authorization", "Authorization: Bearer AQUI_PONGO_EL_API_KEY_QUE_TENGO_CREADO");
// Set REST Request
RESTRequest1->Method = TRESTRequestMethod::rmPOST;
RESTRequest1->Response = RESTResponse1;
RESTRequest1->Response->ContentType = "application/json";
RESTRequest1->Response->ContentEncoding="UTF-8";
RESTRequest1->ClearBody();
RESTRequest1->Body->Add("{ \"prompt\": \"it was a rainy day for\", \"max_tokens\": 150 }", Rest::Types::TRESTContentType::ctNotLeadChar);
RESTRequest1->Execute();
// Get REST Response
TJSONValue *jValue = RESTResponse1->JSONValue;
// Print REST Response
Memo1->Lines->Add(jValue->ToString());
si alguien me pudiese ayudar lo agradeceria enormemente Última edición por Neftali [Germán.Estévez] fecha: 06-03-2024 a las 12:17:48. Razón: Añadir URL |
|
#2
|
||||
|
||||
|
¿Has probado con el RESTDebugger o con PostMan/Insomnia?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#3
|
||||
|
||||
|
Prueba a añadir el parámetro de esta manera:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
|||
|
|||
|
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");
Código:
RESTRequest1->AddParameter("Authorization","Bearer API_KEY", pkHTTPHEADER);
RESTRequest1->AddParameter( "Content-Type", "application/json");
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;
|
|
#5
|
||||
|
||||
|
Cita:
Revisalo, tal vez con las básicas o la community no viene, esto ya no lo puedo asegurar. A mi, esta me funciona en RADStudio 12:
Lo que pasa que en mi caso, me dice que ya he excedido la cuota, pero creo que si llega a ese punto es que ya ha pasado la autentificación.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#6
|
|||
|
|||
|
podrias darmela en formato C++ Builder?? yo es que pascal no lo controlo muy bien, se sustituir los . por -> y las comillas simples por dobles pero no mucho mas
y creo que si le meto los 4 parametros el de DoNotEncode dice que no corresponde con la estructura de la funcion me molesta que no funcione porque este codigo PHP lo tengo en mi hosting y funciona perfecto con mi api key y tal para consultar CHATGPT desde la pagina web pero aunque miro que lo envio con el Method POST y como lo compone el codigo este de PHP, no se lo traga no se porque mira, el codigo php es este y te aseguro que funciona perfecto ya luego en la app C++ Builder mirare como componer el prompt bien pero la cuestion es que no pasa el Login del Authorization Código:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Verificar si se recibió la pregunta del chat
if (isset($_POST['mensaje'])) {
// Obtener la pregunta del chat
$pregunta = $_POST['mensaje'];
$api_key = "AQUI PONGO MI API KEY SOLAMENTE sk-taltal";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http__s://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key,
]);
$data = [
'model' => 'gpt-3.5-turbo',
'messages' => [],
];
$data['messages'][] = ['role' => 'system', 'content' => 'Actua como un experto '];
$data['messages'][] = ['role' => 'user', 'content' => $pregunta];
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($ch);
$respuesta = '';
$decoded_response = json_decode($response, true);
if (isset($decoded_response['choices'][0]['message']['content'])) {
$respuesta = $decoded_response['choices'][0]['message']['content'];
}
curl_close($ch);
echo $respuesta;
}
}
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Integrar ChatGPT en aplicación C++ Builder | chenech | Trucos | 1 | 20-02-2023 21:16:20 |
| CSFML en Rad Studio 10.0 Seattle (o en C++ Builder en general) | Snaked | C++ Builder | 3 | 24-11-2016 04:40:32 |
| Como consultar si existe una tabla desde el componente Query de C++ Builder | MARX | C++ Builder | 3 | 06-08-2016 20:42:38 |
| Consultar movimientos bancarios utilizando servicios rest | EL WINDSURFISTA | Internet | 2 | 11-02-2016 09:57:56 |
| Consumir servicios rest desde c++ builder 6 | JM1985 | C++ Builder | 3 | 20-01-2016 08:40:07 |
|