Spring AI调用Gemini Vertex AI 2.5 Flash时遇参数错误求助
问题:调用Vertex AI Gemini 2.5 Flash时提示缺少parts字段
INVALID_ARGUMENT: 无法提交请求,因为必须包含至少一个parts字段,该字段用于描述提示输入。
使用Spring AI + Gemini Vertex AI Gemini 2.5 Flash技术栈调用大语言模型时遇到上述错误,异常堆栈信息如下:
Suppressed: com.google.api.gax.rpc.AsyncTaskException: Asynchronous task failed at com.google.api.gax.rpc.ApiExceptions.callAndTranslateApiException(ApiExceptions.java:57) at com.google.api.gax.rpc.UnaryCallable.call(UnaryCallable.java:112) at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:467) at com.google.cloud.vertexai.generativeai.GenerativeModel.generateContent(GenerativeModel.java:454) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.getContentResponse(VertexAiGeminiChatModel.java:775) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$4(VertexAiGeminiChatModel.java:409) at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:357) at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:230) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$5(VertexAiGeminiChatModel.java:405) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.internalCall(VertexAiGeminiChatModel.java:405) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.call(VertexAiGeminiChatModel.java:392) at org.springframework.ai.chat.client.advisor.ChatModelCallAdvisor.adviseCall(ChatModelCallAdvisor.java:54) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110) at org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor.adviseCall(SimpleLoggerAdvisor.java:74) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110) at org.springframework.ai.chat.client.advisor.api.BaseAdvisor.adviseCall(BaseAdvisor.java:52) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.lambda$nextCall$1(DefaultAroundAdvisorChain.java:110) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.chat.client.advisor.DefaultAroundAdvisorChain.nextCall(DefaultAroundAdvisorChain.java:110) at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.lambda$doGetObservableChatClientResponse$1(DefaultChatClient.java:470) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:468) at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.doGetObservableChatClientResponse(DefaultChatClient.java:447) at org.springframework.ai.chat.client.DefaultChatClient$DefaultCallResponseSpec.content(DefaultChatClient.java:442) at com.agents.agents.orchestrator.OrchestratorAgent.safeLlmCall(OrchestratorAgent.java:1189) at com.agents.agents.orchestrator.OrchestratorAgent.handleRequest(OrchestratorAgent.java:599) at com.agents.controller.AIController.lambda$handleQuery$0(AIController.java:53) Caused by: com.google.api.gax.rpc.InvalidArgumentException: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Unable to submit request because it must include at least one parts field, which describes the prompt input. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:92) at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:41) at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:86) at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:66) at com.google.api.gax.grpc.GrpcExceptionCallable$ExceptionTransformingFuture.onFailure(GrpcExceptionCallable.java:97) at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:84) at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1125) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) Failed to generate content at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.getContentResponse(VertexAiGeminiChatModel.java:778) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$4(VertexAiGeminiChatModel.java:409) at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:357) at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:230) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.lambda$internalCall$5(VertexAiGeminiChatModel.java:405) at io.micrometer.observation.Observation.observe(Observation.java:565) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.internalCall(VertexAiGeminiChatModel.java:405) at org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.call(VertexAiGeminiChatModel.java:392)
解决方案
- 检查提示内容有效性:确认传入LLM的提示文本不为空、null或仅含空白字符,重点排查
safeLlmCall方法中构建请求的逻辑,确保有实际输入内容。 - 规范Spring AI请求构建:
- 使用
ChatClient时,通过.prompt()明确传入有效文本,示例代码:ChatResponse response = chatClient.prompt("请提供有效的提示内容").call().content(); - 多轮对话场景下,检查每一条对话消息(user/assistant角色)的内容均非空,避免出现空消息条目。
- 使用
- 验证Vertex AI配置:确认Spring AI中Vertex AI的模型名称、项目ID等配置参数正确,排除因配置错误导致的请求构造异常。
- 排查预处理逻辑:如果有自定义的提示预处理代码,检查是否存在错误截断、过滤操作导致提示内容被清空。
内容的提问来源于stack exchange,提问作者Naveen Kumar R
相关产品推荐
相关产品推荐

