-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Describe the Problem/Bug
I am attempting to create a resource group in AI Core Launchpad and have a few questions regarding the document-grounding configuration:
Is the zone_id a mandatory field for enabling document-grounding functionality?
Where can I locate the zone_id value? I have already successfully retrieved the instance_id and subaccount_id from my BTP subaccount.
I am currently encountering the following error message: "Grounding Module: Document Grounding retrieval API returned: ELSER API is down."
Could you please advise on how to resolve this issue?
Steps to Reproduce
Just trying to do a poc locally.
I wanted check if i search for error with a SAP grounding would this fetch sap help docs or notes or kba.
However grounding enabled is causing an error
Expected Behavior
get correct grounding info
Screenshots
Used Versions
- Java and Maven version via mvn --version:
- Apache Maven 3.9.9
- Java version: 21.0.8, vendor: SAP SE (SapMachine 21)
- SAP Cloud SDK for AI version: 1.15.0
- SAP Cloud SDK version: 5.25.0
- Spring Boot version: 3.4.1
com.sap.bmb.ai:error-root-cause-agent:jar:1.0.0-SNAPSHOT
+- org.springframework.boot:spring-boot-starter-web:jar:3.4.1:compile
| +- org.springframework.boot:spring-boot-starter:jar:3.4.1:compile
| | +- org.springframework.boot:spring-boot:jar:3.4.1:compile
| | +- org.springframework.boot:spring-boot-autoconfigure:jar:3.4.1:compile
| | +- org.springframework.boot:spring-boot-starter-logging:jar:3.4.1:compile
| +- org.springframework.boot:spring-boot-starter-json:jar:3.4.1:compile
| +- org.springframework.boot:spring-boot-starter-tomcat:jar:3.4.1:compile
+- org.springframework.boot:spring-boot-starter-validation:jar:3.4.1:compile
+- org.springframework.boot:spring-boot-starter-actuator:jar:3.4.1:compile
+- com.sap.ai.sdk:orchestration:jar:1.15.0:compile
| +- com.sap.ai.sdk:core:jar:1.15.0:compile
| | +- com.sap.cloud.sdk.datamodel:openapi-core:jar:5.25.0:compile
| | +- com.sap.cloud.sdk.cloudplatform:connectivity-oauth:jar:5.25.0:runtime
| +- com.sap.cloud.sdk.cloudplatform:cloudplatform-connectivity:jar:5.25.0:compile
| +- com.sap.cloud.sdk.cloudplatform:connectivity-apache-httpclient5:jar:5.25.0:compile
+- com.sap.ai.sdk.foundationmodels:openai:jar:1.15.0:compile
+- io.github.resilience4j:resilience4j-spring-boot3:jar:2.2.0:compile
+- io.github.resilience4j:resilience4j-circuitbreaker:jar:2.2.0:compile
+- io.github.resilience4j:resilience4j-ratelimiter:jar:2.2.0:compile
+- org.springframework.boot:spring-boot-starter-webflux:jar:3.4.1:compile
+- com.fasterxml.jackson.core:jackson-databind:jar:2.18.2:compile
+- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.18.2:compile
+- org.springdoc:springdoc-openapi-starter-webmvc-ui:jar:2.3.0:compile
+- me.paulschwarz:spring-dotenv:jar:4.0.0:compile
+- org.springframework.boot:spring-boot-starter-test:jar:3.4.1:test
+- org.mockito:mockito-core:jar:5.14.2:test
+- org.mockito:mockito-junit-jupiter:jar:5.14.2:test
Code Examples
public Grounding getGroundingConfig() {
var groundingFilter = DocumentGroundingFilter.create()
.dataRepositoryType(DataRepositoryType.HELP_SAP_COM);
return Grounding.create().filters(groundingFilter);
}
public OrchestrationModuleConfig createOrchestrationModuleConfig() {
log.info("Creating OrchestrationModuleConfig: model={}, version={}, maxTokens={}, temperature={}, " +
"jsonSchema=enabled, masking=enabled, grounding={}, outputFiltering=enabled",
getModelName(), modelVersion, getMaxTokens(), getTemperature(),
groundingEnabled ? "HELP_SAP_COM" : "disabled");
OrchestrationAiModel orchestrationModel = new OrchestrationAiModel(
getModelName(),
getLlmParams(),
modelVersion
);
// Template config with JSON schema response format
var templateConfig = TemplateConfig.create()
.withJsonSchemaResponse(getJsonSchemaConfig());
var config = new OrchestrationModuleConfig()
.withLlmConfig(orchestrationModel)
.withTemplateConfig(templateConfig)
.withMaskingConfig(getMaskingConfig())
.withOutputFiltering(getOutputFilterConfig());
// Only add grounding if enabled (requires provisioned AI Core resource group)
if (groundingEnabled) {
config = config.withGrounding(getGroundingConfig());
}
return config;
}Stack Trace
14:28:27.359 [http-nio-8080-exec-1] WARN c.s.b.a.e.s.ErrorRootCauseAgent - Failed to get LLM decision: LLM service unavailable: Failed to call AI Core: Request failed with status 400 (Bad Request): 400 - Grounding Module: Document Grounding retrieval API returned: ELSER API is down. Please try again later or raise a ticket.
com.sap.bmb.ai.erroragent.common.exception.AiServiceException: LLM service unavailable: Failed to call AI Core: Request failed with status 400 (Bad Request): 400 - Grounding Module: Document Grounding retrieval API returned: ELSER API is down. Please try again later or raise a ticket.
at com.sap.bmb.ai.erroragent.common.exception.AiServiceException.llmCallFailed(AiServiceException.java:73)
at com.sap.bmb.ai.erroragent.service.AiCoreService.chatCompletion(AiCoreService.java:140)
at com.sap.bmb.ai.erroragent.service.ErrorRootCauseAgent.askLlmForDecision(ErrorRootCauseAgent.java:209)
at com.sap.bmb.ai.erroragent.service.ErrorRootCauseAgent.analyze(ErrorRootCauseAgent.java:144)
at com.sap.bmb.ai.erroragent.controller.ErrorAnalysisController.analyzeError(ErrorAnalysisController.java:50)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:479)
at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:340)
at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:82)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:128)
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:227)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:240)
at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:323)
at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:224)
at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:137)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:243)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:238)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:114)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: com.sap.ai.sdk.orchestration.OrchestrationClientException: Request failed with status 400 (Bad Request): 400 - Grounding Module: Document Grounding retrieval API returned: ELSER API is down. Please try again later or raise a ticket.
at com.sap.ai.sdk.orchestration.OrchestrationClientException.lambda$static$0(OrchestrationClientException.java:32)
at com.sap.ai.sdk.core.common.ClientResponseHandler.parseErrorResponseAndThrow(ClientResponseHandler.java:163)
at com.sap.ai.sdk.core.common.ClientResponseHandler.buildAndThrowException(ClientResponseHandler.java:142)
at com.sap.ai.sdk.core.common.ClientResponseHandler.handleResponse(ClientResponseHandler.java:71)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:247)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:188)
at org.apache.hc.client5.http.impl.classic.CloseableHttpClient.execute(CloseableHttpClient.java:162)
at com.sap.ai.sdk.orchestration.OrchestrationHttpExecutor.execute(OrchestrationHttpExecutor.java:65)
at com.sap.ai.sdk.orchestration.OrchestrationClient.executeRequest(OrchestrationClient.java:165)
at com.sap.ai.sdk.orchestration.OrchestrationClient.chatCompletion(OrchestrationClient.java:99)
at com.sap.bmb.ai.erroragent.service.AiCoreService.chatCompletion(AiCoreService.java:98)
Log File
Log file
...Affected Development Phase
Getting Started
Impact
Inconvenience
Timeline
no go live