MCPcopy Create free account
hub / github.com/NVIDIA/NeMo-Relay / wrap_py_llm_sanitize_request_fn

Function wrap_py_llm_sanitize_request_fn

crates/python/src/py_callable.rs:591–617  ·  view source on GitHub ↗

Wrap a Python callable `(LlmRequest) -> LlmRequest` for LLM sanitize request guardrails.

(py_fn: Py<PyAny>)

Source from the content-addressed store, hash-verified

589
590/// Wrap a Python callable `(LlmRequest) -> LlmRequest` for LLM sanitize request guardrails.
591pub fn wrap_py_llm_sanitize_request_fn(py_fn: Py<PyAny>) -> LlmSanitizeRequestFn {
592 Arc::new(move |request: LlmRequest| {
593 Python::attach(|py| {
594 let py_req = PyLLMRequest {
595 inner: request.clone(),
596 };
597 let result = match py_fn.call1(py, (py_req,)) {
598 Ok(v) => v,
599 Err(e) => {
600 eprintln!("nemo_relay: LLM sanitize request guardrail callable failed: {e}");
601 return request;
602 }
603 };
604 let extracted = result.extract::<PyLLMRequest>(py);
605 match extracted {
606 Ok(r) => r.inner,
607 Err(e) => {
608 eprintln!(
609 "nemo_relay: LLM sanitize request guardrail returned unexpected type \
610 (expected LlmRequest): {e}"
611 );
612 request
613 }
614 }
615 })
616 })
617}
618
619/// Wrap a Python callable `(LlmRequest) -> Optional[str]` for LLM conditional guardrails.
620pub fn wrap_py_llm_conditional_fn(py_fn: Py<PyAny>) -> LlmConditionalFn {

Calls

no outgoing calls

Tested by 1