@@ -37,6 +37,7 @@ import ai.tock.genai.orchestratorclient.responses.TextWithFootnotes
3737import ai.tock.genai.orchestratorclient.retrofit.GenAIOrchestratorBusinessError
3838import ai.tock.genai.orchestratorclient.retrofit.GenAIOrchestratorValidationError
3939import ai.tock.genai.orchestratorclient.services.RAGService
40+ import ai.tock.genai.orchestratorcore.models.observability.LangfuseObservabilitySetting
4041import ai.tock.genai.orchestratorcore.utils.VectorStoreUtils
4142import ai.tock.shared.*
4243import engine.config.AbstractProactiveAnswerHandler
@@ -76,6 +77,35 @@ object RAGAnswerHandler : AbstractProactiveAnswerHandler {
7677 // Handle the RAG answer
7778 if (noAnswerStory == null && answer != null ) {
7879 logger.info { " Send RAG answer." }
80+
81+ val publicTraceUrl = observabilityInfo?.let {
82+ // Get observability configuration
83+ val observabilityConfig = botDefinition.observabilityConfiguration
84+ // If observability configuration exists and contain a public URL, replace the trace URL
85+ if (observabilityConfig?.enabled == true && observabilityConfig.setting is LangfuseObservabilitySetting <* >) {
86+ val publicUrl = (observabilityConfig.setting as LangfuseObservabilitySetting <* >).publicUrl
87+ if (! publicUrl.isNullOrBlank()) {
88+ it.traceUrl.replace(
89+ (observabilityConfig.setting as LangfuseObservabilitySetting <* >).url,
90+ publicUrl
91+ )
92+ } else {
93+ it.traceUrl
94+ }
95+ } else {
96+ it.traceUrl
97+ }
98+ }
99+
100+ // Modified ObservabilityInfo
101+ val modifiedObservabilityInfo = observabilityInfo?.let {
102+ ObservabilityInfo (
103+ traceId = it.traceId,
104+ traceName = it.traceName,
105+ traceUrl = publicTraceUrl ? : it.traceUrl
106+ )
107+ }
108+
79109 send(
80110 SendSentenceWithFootnotes (
81111 botId, applicationId, userId, text = answer.text, footnotes = answer.footnotes.map {
@@ -85,7 +115,7 @@ object RAGAnswerHandler : AbstractProactiveAnswerHandler {
85115 it.score
86116 )
87117 }.toMutableList(),
88- metadata = ActionMetadata (isGenAiRagAnswer = true , observabilityInfo = observabilityInfo )
118+ metadata = ActionMetadata (isGenAiRagAnswer = true , observabilityInfo = modifiedObservabilityInfo )
89119 )
90120 )
91121 } else {
0 commit comments