import React, { useState, useEffect } from "react"; import { Table, TableBody, TableCell, TableHead, TableHeaderCell, TableRow, Card, Text, } from "@tremor/react"; import { getGuardrailsList } from "./networking"; interface GuardrailsPanelProps { accessToken: string | null; } interface GuardrailsResponse { guardrails: GuardrailItem[]; } interface GuardrailItem { guardrail_name: string | null; litellm_params: { guardrail: string; mode: string; default_on: boolean; }; guardrail_info: Record | null; } const GuardrailsPanel: React.FC = ({ accessToken }) => { const [guardrailsList, setGuardrailsList] = useState([]); useEffect(() => { if (!accessToken) { return; } const fetchGuardrails = async () => { try { const response: GuardrailsResponse = await getGuardrailsList(accessToken); console.log(`guardrails: ${JSON.stringify(response)}`); setGuardrailsList(response.guardrails); } catch (error) { console.error('Error fetching guardrails:', error); } }; fetchGuardrails(); }, [accessToken]); return (
Configured guardrails and their current status. Setup guardrails in config.yaml.{" "} Docs Guardrail Name Mode Status { (!guardrailsList || guardrailsList.length === 0) ? ( No guardrails configured ) : ( guardrailsList?.map((guardrail: GuardrailItem, index: number) => ( {guardrail.guardrail_name} {guardrail.litellm_params.mode}
{guardrail.litellm_params.default_on ? 'Always On' : 'Per Request'}
)) )}
); }; export default GuardrailsPanel;