2024-05-25 16:32:11,109 INFO [io.qua.lan.ope.OpenAiRestApi$OpenAiClientLogger] (vert.x-eventloop-thread-0) Request: - method: POST - url: https://app.empower.dev/api/v1/functions/chat/completions - headers: [Accept: application/json], [Authorization: Bearer dummy], [Content-Type: application/json], [User-Agent: langchain4j-openai], [content-length: 767] - body: { "model" : "empower-functions-medium", "messages" : [ { "role" : "system", "content" : "You are a professional poet" }, { "role" : "user", "content" : "Write a poem about Spring. The poem should be 4 lines long.\nThen send this poem by email. Your response should include the poem.\n" } ], "temperature" : 1.0, "top_p" : 1.0, "presence_penalty" : 0.0, "frequency_penalty" : 0.0, "tools" : [ { "type" : "function", "function" : { "name" : "sendAnEmail", "description" : "send the given content by email", "parameters" : { "type" : "object", "properties" : { "content" : { "type" : "string" } }, "required" : [ "content" ] } } } ] } 2024-05-25 16:32:12,353 INFO [io.qua.lan.ope.OpenAiRestApi$OpenAiClientLogger] (vert.x-eventloop-thread-0) Response: - status code: 200 - headers: [content-type: application/json], [content-length: 797], [vary: origin, access-control-request-method, access-control-request-headers], [access-control-allow-origin: *], [date: Sat, 25 May 2024 13:32:11 GMT], [Via: 1.1 google], [Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000] - body: {"id":"0cd5506b-87f0-4ca6-a48d-278f26042a8b","created":1716643932,"model":"empower-functions-medium","choices":[{"message":{"role":"assistant","content":null,"tool_calls":[{"id":"call_BN3eijHx5H05wrm84kiGxaKz","index":0,"type":"function","function":{"name":"sendAnEmail","arguments":"{\"content\":\"Blossoms bloom, birds take flight,Spring's soft light, oh so bright.\"}"}}]},"index":0,"logprobs":null,"cumulative_logprob":-9.052118,"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":177,"completion_tokens":58,"total_tokens":235},"metrics":{"arrival_time":1716643931.220797,"last_token_time":1716643932.1887593,"first_scheduled_time":1716643931.2268193,"first_token_time":1716643931.2958922,"time_in_queue":0.006022214889526367,"finished_time":1716643932.1887524},"object":"chat.completion"} 2024-05-25 16:32:12,356 INFO [io.qua.lan.sam.EmailService] (executor-thread-1) Sending an email: Blossoms bloom, birds take flight,Spring's soft light, oh so bright. 2024-05-25 16:32:12,357 INFO [io.qua.lan.ope.OpenAiRestApi$OpenAiClientLogger] (vert.x-eventloop-thread-0) Request: - method: POST - url: https://app.empower.dev/api/v1/functions/chat/completions - headers: [Accept: application/json], [Authorization: Bearer dummy], [Content-Type: application/json], [User-Agent: langchain4j-openai], [content-length: 1184] - body: { "model" : "empower-functions-medium", "messages" : [ { "role" : "system", "content" : "You are a professional poet" }, { "role" : "user", "content" : "Write a poem about Spring. The poem should be 4 lines long.\nThen send this poem by email. Your response should include the poem.\n" }, { "role" : "assistant", "tool_calls" : [ { "id" : "call_BN3eijHx5H05wrm84kiGxaKz", "type" : "function", "function" : { "name" : "sendAnEmail", "arguments" : "{\"content\":\"Blossoms bloom, birds take flight,Spring's soft light, oh so bright.\"}" } } ] }, { "role" : "tool", "tool_call_id" : "call_BN3eijHx5H05wrm84kiGxaKz", "content" : "Success" } ], "temperature" : 1.0, "top_p" : 1.0, "presence_penalty" : 0.0, "frequency_penalty" : 0.0, "tools" : [ { "type" : "function", "function" : { "name" : "sendAnEmail", "description" : "send the given content by email", "parameters" : { "type" : "object", "properties" : { "content" : { "type" : "string" } }, "required" : [ "content" ] } } } ] } 2024-05-25 16:32:12,558 INFO [io.qua.lan.ope.OpenAiRestApi$OpenAiClientLogger] (vert.x-eventloop-thread-0) Response: - status code: 400 - headers: [content-type: application/json], [content-length: 101], [vary: origin, access-control-request-method, access-control-request-headers], [access-control-allow-origin: *], [date: Sat, 25 May 2024 13:32:12 GMT], [Via: 1.1 google], [Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000] - body: {"error":{"code":"BadRequest","message":"Content must be a valid json for message with role 'tool'"}} 2024-05-25 16:32:12,561 ERROR [io.qua.lan.run.ais.AiServiceMethodImplementationSupport] (executor-thread-1) Execution of io.quarkiverse.langchain4j.sample.MyAiService#writeAPoem failed: java.lang.RuntimeException: dev.ai4j.openai4j.OpenAiHttpException: {"error":{"code":"BadRequest","message":"Content must be a valid json for message with role 'tool'"}} at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:195) at dev.langchain4j.internal.RetryUtils.withRetry(RetryUtils.java:229) at dev.langchain4j.model.openai.OpenAiChatModel.generate(OpenAiChatModel.java:153) at dev.langchain4j.model.openai.OpenAiChatModel.generate(OpenAiChatModel.java:118) at dev.langchain4j.model.chat.ChatLanguageModel_XNMsOaekknG7BdNZ5YSUkjh1SqE_Synthetic_ClientProxy.generate(Unknown Source) at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement(AiServiceMethodImplementationSupport.java:228) at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.implement(AiServiceMethodImplementationSupport.java:97) at io.quarkiverse.langchain4j.sample.MyAiService$$QuarkusImpl.writeAPoem(Unknown Source) at io.quarkiverse.langchain4j.sample.MyAiService$$QuarkusImpl_ClientProxy.writeAPoem(Unknown Source) at io.quarkiverse.langchain4j.sample.EmailMeAPoemResource.emailMeAPoem(EmailMeAPoemResource.java:19) at io.quarkiverse.langchain4j.sample.EmailMeAPoemResource$quarkusrestinvoker$emailMeAPoem_72ab9e43fd0da07fcf88dea300761ad5a094328c.invoke(Unknown Source) at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29) at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147) at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: dev.ai4j.openai4j.OpenAiHttpException: {"error":{"code":"BadRequest","message":"Content must be a valid json for message with role 'tool'"}} at io.quarkiverse.langchain4j.openai.OpenAiRestApi.toException(OpenAiRestApi.java:168) at io.quarkiverse.langchain4j.openai.OpenAiRestApi_toException_ResponseExceptionMapper_f35c1c86580504f69920f9de921a22bd696c020f.toThrowable(Unknown Source) at io.quarkus.rest.client.reactive.runtime.MicroProfileRestClientResponseFilter.filter(MicroProfileRestClientResponseFilter.java:49) at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:21) at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:10) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.invokeHandler(AbstractResteasyReactiveContext.java:231) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147) at org.jboss.resteasy.reactive.client.impl.RestClientRequestContext$1.lambda$execute$0(RestClientRequestContext.java:313) at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:276) at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:258) at io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:56) at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ... 2 more 2024-05-25 16:32:12,567 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /email-me-a-poem failed, error id: a346728f-b633-43bc-8f88-0be5538f2765-1: java.lang.RuntimeException: dev.ai4j.openai4j.OpenAiHttpException: {"error":{"code":"BadRequest","message":"Content must be a valid json for message with role 'tool'"}} at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:195) at dev.langchain4j.internal.RetryUtils.withRetry(RetryUtils.java:229) at dev.langchain4j.model.openai.OpenAiChatModel.generate(OpenAiChatModel.java:153) at dev.langchain4j.model.openai.OpenAiChatModel.generate(OpenAiChatModel.java:118) at dev.langchain4j.model.chat.ChatLanguageModel_XNMsOaekknG7BdNZ5YSUkjh1SqE_Synthetic_ClientProxy.generate(Unknown Source) at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.doImplement(AiServiceMethodImplementationSupport.java:228) at io.quarkiverse.langchain4j.runtime.aiservice.AiServiceMethodImplementationSupport.implement(AiServiceMethodImplementationSupport.java:97) at io.quarkiverse.langchain4j.sample.MyAiService$$QuarkusImpl.writeAPoem(Unknown Source) at io.quarkiverse.langchain4j.sample.MyAiService$$QuarkusImpl_ClientProxy.writeAPoem(Unknown Source) at io.quarkiverse.langchain4j.sample.EmailMeAPoemResource.emailMeAPoem(EmailMeAPoemResource.java:19) at io.quarkiverse.langchain4j.sample.EmailMeAPoemResource$quarkusrestinvoker$emailMeAPoem_72ab9e43fd0da07fcf88dea300761ad5a094328c.invoke(Unknown Source) at org.jboss.resteasy.reactive.server.handlers.InvocationHandler.handle(InvocationHandler.java:29) at io.quarkus.resteasy.reactive.server.runtime.QuarkusResteasyReactiveRequestContext.invokeHandler(QuarkusResteasyReactiveRequestContext.java:141) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147) at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1583) Caused by: dev.ai4j.openai4j.OpenAiHttpException: {"error":{"code":"BadRequest","message":"Content must be a valid json for message with role 'tool'"}} at io.quarkiverse.langchain4j.openai.OpenAiRestApi.toException(OpenAiRestApi.java:168) at io.quarkiverse.langchain4j.openai.OpenAiRestApi_toException_ResponseExceptionMapper_f35c1c86580504f69920f9de921a22bd696c020f.toThrowable(Unknown Source) at io.quarkus.rest.client.reactive.runtime.MicroProfileRestClientResponseFilter.filter(MicroProfileRestClientResponseFilter.java:49) at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:21) at org.jboss.resteasy.reactive.client.handlers.ClientResponseFilterRestHandler.handle(ClientResponseFilterRestHandler.java:10) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.invokeHandler(AbstractResteasyReactiveContext.java:231) at org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext.run(AbstractResteasyReactiveContext.java:147) at org.jboss.resteasy.reactive.client.impl.RestClientRequestContext$1.lambda$execute$0(RestClientRequestContext.java:313) at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:276) at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:258) at io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:56) at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ... 2 more