Skip to main content
If you’re using interceptors, or guardrails, you might want to return a custom response instead of having the LLM generate a response for a user query. For example, you might want to return a fixed response when a user requests for some PII instead of passing it to the LLM.
To do this, you can use the makeC1Response function to create a c1Response object, and then use the writeCustomMarkdown method to write the custom response to the response object:
1

Create a c1Response object

Use the makeC1Response function to create a c1Response object by importing it from the @thesysai/genui-sdk package, and start writing the LLM response content to this object:
app/api/chat/route.ts
2

Write a custom markdown response to the response object

To add a custom markdown response, use the writeCustomMarkdown method defined on the c1Response object:
When present in c1Response, custom markdown responses take priority over LLM responses on the UI (ie: they will be the only thing rendered when present in the response), even if the LLM response is also present in c1Response.Therefore, although not strictly necessary, it is recommended to return early when using custom markdown responses to avoid invoking the C1 API. This can prevent unnecessary token usage.
app/api/chat/route.ts
3

Test it out

Your custom response will now be rendered in the UI when the guardrail is triggered:
Custom markdown responses sample image