bueno he estado toqueteando y añadiendo unas cosas y de momento me funciona aunque lo que no tengo terminado es el formateado de la respuesta (ya que le he puesto un RETURN antes de llegar a la parte esa del final ..... pero le he preguntado "que es un terabyte" y me ha dado la respuesta asi:
Código:
{
"id": "chatcmpl-8zp2KRCrbycZgIpcsr5D6xgbDp3y1",
"object": "chat.completion",
"created": 1709744884,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Un terabyte es una unidad de almacenamiento de información equivalente a 1 billón de bytes, o 1,000 gigabytes. Es una medida de capacidad de almacenamiento de datos utilizada comúnmente en la informática y la tecnologÃ*a de la información. Un terabyte es una cantidad muy grande de almacenamiento y es comúnmente utilizado para almacenar grandes cantidades de datos como archivos multimedia, bases de datos o copias de seguridad."
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 94,
"total_tokens": 106
},
"system_fingerprint": "fp_b9d4cef803"
}
Asi que aqui os dejo el codigo que me funciona en Rad Studio C++ Builder 12 Architect por si os pudiese servir
Código:
try
{
TNetHeaders AuthHeader;
AuthHeader.Length = 2;
AuthHeader[0] = TNameValuePair("Authorization", "Bearer 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");
AuthHeader[1] = TNameValuePair("Content-Type", "application/json");
TMemoryStream *salida = new TMemoryStream();
TMemoryStream *entrada = new TMemoryStream();
TMemo *memo = new TMemo(Form6);
memo->Parent = Form6;
memo->Visible = false;
memo->Lines->Clear();
String ASAux = EPregunta->Text;
char dest[200];
UnicodeToUtf8(dest, 200, EPregunta->Text.c_str(), 200);
ASAux = dest;
TJSONObject *inputObject = new TJSONObject();
inputObject->AddPair("model", "gpt-3.5-turbo");
// Construir el array de mensajes
TJSONArray *messagesArray = new TJSONArray();
TJSONObject *messageObject = new TJSONObject();
messageObject->AddPair("role", "system");
messageObject->AddPair("content", "You are a helpful assistant.");
messageObject->AddPair("role", "user");
messageObject->AddPair("content", "que es un terabyte");
messagesArray->Add(messageObject);
// Agregar el array de mensajes al objeto de entrada
inputObject->AddPair("messages", messagesArray);
memo->Lines->Add(inputObject->ToString());
memo->Lines->SaveToStream(salida);
salida->Position = soFromBeginning;
NetHTTPC1->Post("h_t_t_p_s://api.openai.com/v1/chat/completions", salida, entrada, AuthHeader);
memo->Lines->Clear();
memo->Lines->LoadFromStream(entrada);
delete salida;
delete entrada;
TJSONObject *o = (TJSONObject*) TJSONObject::ParseJSONValue(TEncoding::ANSI->GetBytes(memo->Lines->Text), 0);
Memo1->Lines->Add(memo->Lines->Text);
return;
//Tened en cuenta que esta es la parte que he "cropeado" y aun no he ajustado para que salga pre-formateado
TJSONArray *a = (TJSONArray*) o->GetValue("choices");
TJSONObject *book = (TJSONObject*) a->Items[0];
Memo1->Lines->Clear();
ASAux = book->Pairs[0]->JsonValue->ToString();
ASAux = StringReplace(ASAux, "\\n\\n", sLineBreak, TReplaceFlags() << rfReplaceAll);
ASAux = StringReplace(ASAux, "\\n", sLineBreak, TReplaceFlags() << rfReplaceAll);
Memo1->Lines->Add(ASAux);
o->Free();
memo->Free();
}
catch (...)
{
ShowMessage("Error accediendo a los servicios IA de HFocused");
}
Muchas Gracias por vuestra ayuda chicos, le decia yo a un amigo mio ayer .... voy a pedirles ayuda a los de Club Delphi que son unos cracks ....
porque llevamos intentando integrar esto de las preguntas a GPTChat en la app varios dias y pffff..... no teneis ni idea del tute de probar mil cosas que llevo