LiveKit Support for Transcript Normalization Before LLM Calls

Hi LiveKit Team,

We’re using LiveKit Agents (1.5.16) with Azure OpenAI (gpt-5.4 via openai.LLM.with_azure).

We’re seeing Azure Prompt Shield false positives when callers spell their names letter-by-letter (e.g. “S A H I L”). Azure rejects the request with:

{
“error”: {
“code”: “content_filter”,
“status”: 400,
“message”: “The response was filtered due to the prompt triggering Azure OpenAI’s content management policy…”,
“innererror”: {
“code”: “ResponsibleAIPolicyViolation”,
“content_filter_result”: {
“hate”: { “filtered”: false, “severity”: “safe” },
“self_harm”: { “filtered”: false, “severity”: “safe” },
“sexual”: { “filtered”: false, “severity”: “safe” },
“violence”: { “filtered”: false, “severity”: “safe” },
“jailbreak”: { “detected”: true, “filtered”: true }
}
}
}
}

Have you seen this issue before, and does LiveKit provide any built-in way to preprocess or normalize STT transcripts before they are sent to the LLM (for example, converting spelled-out letters into a single word)?

@darryncampbell @Muhammad_Usman_Bashir

Interesting, I haven’t come across this before.

Anecdotally, I have heard that some customers have had success disabling the policy (as detailed here).

My immediate suggestion would be to pre-process the input using on_user_turn_completed, as documented here: Pipeline nodes and hooks | LiveKit Documentation, to preprocess the name.

Alternatively, you should also be able to use Pipeline nodes and hooks | LiveKit Documentation, but the former is likely more straight-forward.