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