Oii, Nathalia
O curso que eu estava éra o "GPT e Java: desenvolva um Chatbot com IA" e a aula era de Function Calling
O método que esta dando erro é esse, fiz algumas alterações, mas percebi que o erro é lançado quando tanta chamar alguma função que existe no assistente mas no codigo não existe ou quando por ventura o metodo em nosso codigo acaba lançando algum erro mas não responde a api que deixa a run em execução
private String callFunction(String establishmentId,Run run) {
try {
var function = run.getRequiredAction().getSubmitToolOutputs().getToolCalls().get(0).getFunction();
var calculateShipping = ChatFunction.builder()
.name("deliveryShipping")
.executor(DeliveryShippingParams.class, d -> {
var establishment = establishmentService.getById(establishmentId);
if(establishment.isPresent()) {
if(!establishment.get().isOpen()){
return "não pode fazer entrega pois o estabelecimento ja fechou";
}
var result = delivery.getTaxaDelivery(establishment.get(), d.address());
if (result == -1) {
return "Serviço de entrega fornecido pelo estabelecimento não cobre a localidade de atendimento ";
}
return "Valor da taxa de entrega: R$" + new DecimalFormat("R$ #,##0.00").format(result / 1000);
}
return "O estabelecimento a qual se referencia não pode ser encontrado";
})
.build();
var establishmentIsOpen = ChatFunction.builder()
.name("establishmentIsOpen")
.executor(EstablishmentIsOpen.class, f -> {
var isOpen = establishmentService.isOpen(establishmentId);
if(isOpen){
return "Ainda estamos em atendimento";
}
return "Já fechamos";
}).build();
var execFunction = new FunctionExecutor(Arrays.asList(calculateShipping, establishmentIsOpen));
var functionCall = new ChatFunctionCall(function.getName(), new ObjectMapper().readTree(function.getArguments()));
return execFunction.execute(functionCall).toString();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
E acabava dando esse erro
"Can' add messages to thread while a run is active"
o status que me retornava era o 400