1"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7885],{8667:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>d});var s=i(22155);const r={},l=s.createContext(r);function t(e){const n=s.useContext(l);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(l.Provider,{value:n},e.children)}},77769:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>x,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"integrations/fiddler","title":"Fiddler","description":"Add AI safety guardrails with multi-dimensional content validation, PII detection, and hallucination prevention for RAG systems","source":"@site/docs/integrations/fiddler.mdx","sourceDirName":"integrations","slug":"/integrations/fiddler","permalink":"/docs/integrations/fiddler","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"title":"Fiddler","description":"Add AI safety guardrails with multi-dimensional content validation, PII detection, and hallucination prevention for RAG systems","sidebar_position":5}}');var r=i(65723),l=i(8667),t=i(96124);const d={title:"Fiddler",description:"Add AI safety guardrails with multi-dimensional content validation, PII detection, and hallucination prevention for RAG systems",sidebar_position:5},c="Fiddler Agent Integration",a={},o=[{value:"Overview",id:"overview",level:2},{value:"Quick Start",id:"quick-start",level:2},{value:"Obtaining Credentials",id:"obtaining-credentials",level:3},{value:"Available Components",id:"available-components",level:2},{value:"Safety Validation (11 Dimensions)",id:"safety-validation-11-dimensions",level:3},{value:"PII Detection & Redaction (15+ Types)",id:"pii-detection--redaction-15-types",level:3},{value:"Faithfulness Validation (RAG Hallucination Detection)",id:"faithfulness-validation-rag-hallucination-detection",level:3},{value:"Failure Semantics",id:"failure-semantics",level:2},{value:"Fail-Open vs Fail-Closed",id:"fail-open-vs-fail-closed",level:3},{value:"Configuration Hierarchy",id:"configuration-hierarchy",level:3},{value:"What End Users See",id:"what-end-users-see",level:3},{value:"Observability-Only (Shadow) Mode",id:"observability-only-shadow-mode",level:3},{value:"Diagnostic Selftest Endpoint",id:"diagnostic-selftest-endpoint",level:3},{value:"Fiddler Plan Tiers (Freemium vs Paid)",id:"fiddler-plan-tiers-freemium-vs-paid",level:2},{value:"Credential Visibility",id:"credential-visibility",level:3},{value:"Use Cases",id:"use-cases",level:2},{value:"Common Scenarios",id:"common-scenarios",level:3},{value:"1. Customer-Facing Chatbot Safety",id:"1-customer-facing-chatbot-safety",level:4},{value:"2. HIPAA-Compliant Healthcare Chatbot",id:"2-hipaa-compliant-healthcare-chatbot",level:4},{value:"3. Financial Services Content Moderation",id:"3-financial-services-content-moderation",level:4},{value:"4. RAG Knowledge Base with Hallucination Detection",id:"4-rag-knowledge-base-with-hallucination-detection",level:4},{value:"5. Internal Knowledge Base Safety",id:"5-internal-knowledge-base-safety",level:4},{value:"Example Workflows",id:"example-workflows",level:3},{value:"Example 1: Customer Support Chatbot with Full Guardrails",id:"example-1-customer-support-chatbot-with-full-guardrails",level:3},{value:"Example 2: GDPR-Compliant Content Analysis",id:"example-2-gdpr-compliant-content-analysis",level:3},{value:"Example 3: Medical Chatbot with Hallucination Prevention",id:"example-3-medical-chatbot-with-hallucination-prevention",level:3},{value:"Advanced Configuration",id:"advanced-configuration",level:2},{value:"Configuration Hierarchy",id:"configuration-hierarchy-1",level:3},{value:"Environment Variables (Lowest Priority)",id:"environment-variables-lowest-priority",level:4},{value:"Organization Config (Medium Priority)",id:"organization-config-medium-priority",level:4},{value:"Chatflow Config (Highest Priority)",id:"chatflow-config-highest-priority",level:4},{value:"Safety Configuration Examples",id:"safety-configuration-examples",level:3},{value:"Strict Safety (External Chatbots)",id:"strict-safety-external-chatbots",level:4},{value:"Balanced Safety (General Purpose)",id:"balanced-safety-general-purpose",level:4},{value:"Lenient Safety (Internal Tools)",id:"lenient-safety-internal-tools",level:4},{value:"PII Configuration Examples",id:"pii-configuration-examples",level:3},{value:"HIPAA Compliance",id:"hipaa-compliance",level:4}
1,{value:"PCI-DSS Compliance (Financial)",id:"pci-dss-compliance-financial",level:4},{value:"GDPR Compliance",id:"gdpr-compliance",level:4},{value:"Circuit Breaker Configuration",id:"circuit-breaker-configuration",level:3},{value:"Caching Configuration",id:"caching-configuration",level:3},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"Setup & Configuration",id:"setup--configuration",level:3},{value:"Usage & Best Practices",id:"usage--best-practices",level:3},{value:"Troubleshooting",id:"troubleshooting",level:3},{value:"Performance & Reliability",id:"performance--reliability",level:3},{value:"Resources",id:"resources",level:2},{value:"Official Documentation",id:"official-documentation",level:3},{value:"AnswerAgentAI Implementation",id:"answeragentai-implementation",level:3},{value:"Compliance Resources",id:"compliance-resources",level:3},{value:"Community & Support",id:"community--support",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{style:{textAlign:"center",marginBottom:"2rem"},children:(0,r.jsx)("img",{src:"https://img.logokit.com/fiddler.ai?token=pk_fr8710fea017bdf10b13fe",alt:"Fiddler Logo",height:"80",style:{marginBottom:"1rem"}})}),"\n",(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"fiddler-agent-integration",children:"Fiddler Agent Integration"})}),"\n",(0,r.jsx)("div",{style:{display:"flex",justifyContent:"center",margin:"1rem 0 2rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"medium",context:{page:"integration-fiddler",section:"overview",integration:"Fiddler",question:"Can I answer any questions about how the Fiddler Agent Integration works?"}})}),"\n",(0,r.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,r.jsx)(n.p,{children:"Fiddler AI provides enterprise-grade guardrails for AI applications, enabling you to build safe, compliant, and trustworthy AI systems. The AnswerAgentAI integration with Fiddler delivers comprehensive protection across three critical dimensions:"}),"\n",(0,r.jsx)(n.p,{children:"With this integration, you can:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Validate content safety"})," across 11 dimensions (harmful, violent, unethical, illegal, sexual, racist, jailbreaking, harassing, hateful, sexist, roleplaying)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Detect and redact PII"})," across 15+ entity types (SSN, credit card, email, phone, address, passport, driver's license, etc.)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Prevent hallucinations"})," in RAG systems with faithfulness validation"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Enforce compliance"})," with HIPAA, GDPR, financial regulations, and industry standards"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Customize thresholds"})," per dimension and PII type for fine-grained control"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Configurable failure semantics"})," with explicit fail-open or fail-closed posture per organization or chatflow"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Diagnose wiring at any time"})," via the ",(0,r.jsx)(n.code,{children:"/api/v1/guardrails/selftest"})," admin endpoint"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Pilot enforcement safely"})," with observability-only shadow mode that records violations without blocking"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Resilient by design"})," with circuit breakers, connection pooling, and <150ms latency"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Fiddler's guardrails run in real-time as part of your AI workflows, automatically blocking unsafe content, redacting sensitive information, and flagging potential hallucinations before they reach users. This makes it ideal for customer-facing chatbots, internal knowledge bases, content moderation systems, and any AI application where safety and compliance are critical."}
1),"\n",(0,r.jsx)(n.h2,{id:"quick-start",children:"Quick Start"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"quick-start",integration:"Fiddler",question:"Can I answer any questions about setting up Fiddler credentials?"}})}),"\n",(0,r.jsx)(n.h3,{id:"obtaining-credentials",children:"Obtaining Credentials"}),"\n",(0,r.jsx)(n.p,{children:"Fiddler Guardrails requires API credentials from your Fiddler account."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Required Credentials:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fiddler API Key"}),": Your authentication token"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fiddler API URL"}),": Your guardrails endpoint (default: ",(0,r.jsx)(n.code,{children:"https://guardrails.cloud.fiddler.ai"}),")"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"How to obtain:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Sign Up for Fiddler AI:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Visit ",(0,r.jsx)(n.a,{href:"https://www.fiddler.ai/",children:"https://www.fiddler.ai/"})]}),"\n",(0,r.jsxs)(n.li,{children:["Click ",(0,r.jsx)(n.strong,{children:"Get Started"})," or ",(0,r.jsx)(n.strong,{children:"Request Demo"})]}),"\n",(0,r.jsx)(n.li,{children:"Complete the signup process or contact sales"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Access API Keys:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Log in to your Fiddler dashboard"}),"\n",(0,r.jsxs)(n.li,{children:["Navigate to ",(0,r.jsx)(n.strong,{children:"Settings \u2192 API Keys"})]}),"\n",(0,r.jsxs)(n.li,{children:["Click ",(0,r.jsx)(n.strong,{children:"Generate API Key"})]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Copy Credentials:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"API Key"}),": Copy the generated key (format: ",(0,r.jsx)(n.code,{children:"fiddler_api_key_..."}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"API URL"}),": Use default ",(0,r.jsx)(n.code,{children:"https://guardrails.cloud.fiddler.ai"})," or your custom endpoint"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.admonition,{title:"Security Notice",type:"warning",children:[(0,r.jsxs)(n.p,{children:["The Fiddler API Key has ",(0,r.jsx)(n.strong,{children:"full access"})," to your guardrails services. Best practices:"]}),(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Store credentials securely (use AnswerAgentAI credential system)"}),"\n",(0,r.jsx)(n.li,{children:"Never commit API keys to version control"}),"\n",(0,r.jsx)(n.li,{children:"Rotate keys regularly for security"}),"\n",(0,r.jsx)(n.li,{children:"Use organization-specific credentials for multi-tenant deployments"}),"\n"]})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Documentation Reference:"})," ",(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/docs/guardrails-overview",children:"Fiddler Guardrails Documentation"})]}),"\n",(0,r.jsx)(n.h2,{id:"available-components",children:"Available Components"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"available-components",integration:"Fiddler",question:"Can I answer any questions about Fiddler components and features?"}})}),"\n",(0,r.jsx)(n.admonition,{title:"Auto-Generated",type:"info",children:(0,r.jsxs)(n.p,{children:["This section reflects the Fiddler Guardrails integration as implemented in ",(0,r.jsx)(n.code,{children:"packages/server/src/services/guardrails/"}),".\nLast updated: December 4, 2025"]})}),"\n",(0,r.jsx)(n.p,{children:"This integration provides three core guardrail endpoints:"}),"\n",(0,r.jsx)(n.h3,{id:"safety-validation-11-dimensions",children:"Safety Validation (11 Dimensions)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Endpoint:"})," ",(0,r.jsx)(n.code,{children:"/v3/guardrails/ftl-safety"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Description:"})," Evaluates content across 11 safety dimensions using Fiddler's Fast Language Toolkit (FTL)."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Safety Dimensions:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_harmful"})," - General harmful content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_violent"})," - Violence, gore, or aggressive behavior"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_unethical"})," - Unethical behavior or advice"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_illegal"})," - Illegal activities or instructions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_sexual"})," - Sexual or adult content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_racist"})," - Racist or discriminatory content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_jailbreaking"})," - Attempts to bypass AI safety controls"]}
1),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_harassing"})," - Harassment or bullying"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_hateful"})," - Hate speech or derogatory content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_sexist"})," - Sexist or gender-discriminatory content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"fdl_roleplaying"})," - Unsafe roleplaying scenarios"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Global Threshold"})," (default: 0.1) - Higher scores indicate MORE unsafe content"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Per-Dimension Thresholds"})," - Override global threshold for specific dimensions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Per-Dimension Actions"})," - ",(0,r.jsx)(n.code,{children:"block"}),", ",(0,r.jsx)(n.code,{children:"warn"}),", or ",(0,r.jsx)(n.code,{children:"continue"})," per dimension"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Use Cases:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Customer-facing chatbot content moderation"}),"\n",(0,r.jsx)(n.li,{children:"User-generated content screening"}),"\n",(0,r.jsx)(n.li,{children:"Internal AI application safety"}),"\n",(0,r.jsx)(n.li,{children:"Compliance with content policies"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"pii-detection--redaction-15-types",children:"PII Detection & Redaction (15+ Types)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Endpoint:"})," ",(0,r.jsx)(n.code,{children:"/v3/guardrails/sensitive-information"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Description:"})," Detects and optionally redacts personally identifiable information (PII) across 15+ entity types."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"PII Types Detected:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"PERSON"})," - Names and identities"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"EMAIL"})," - Email addresses"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"PHONE_NUMBER"})," - Phone numbers (all formats)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"ADDRESS"})," - Physical addresses"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"US_SOCIAL_SECURITY_NUMBER"})," - SSN"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CREDIT_CARD"})," - Credit card numbers"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"US_PASSPORT"})," - Passport numbers"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"US_DRIVER_LICENSE"})," - Driver's license numbers"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"US_BANK_NUMBER"})," - Bank account numbers"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"CREDIT_CARD_EXPIRATION"})," - Card expiration dates"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"PIN"})," - PINs and security codes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"IBAN_CODE"})," - International bank accounts"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"SWIFT_CODE"})," - SWIFT/BIC codes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"USERNAME"})," - Usernames and handles"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"AGE"})," - Age information"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Global Confidence Threshold"})," (default: 0.8) - Higher scores indicate HIGHER confidence"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Per-Type Confidence Thresholds"})," - Override for specific PII types"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Per-Type Actions"})," - ",(0,r.jsx)(n.code,{children:"block"}),", ",(0,r.jsx)(n.code,{children:"redact"}),", ",(0,r.jsx)(n.code,{children:"replace"}),", ",(0,r.jsx)(n.code,{children:"warn"}),", or ",(0,r.jsx)(n.code,{children:"continue"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Enabled Types"})," - Optionally filter which PII types to check"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Use Cases:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"HIPAA compliance (healthcare data)"}),"\n",(0,r.jsx)(n.li,{children:"GDPR compliance (EU personal data)"}),"\n",(0,r.jsx)(n.li,{children:"Financial data protection"}),"\n",(0,r.jsx)(n.li,{children:"PCI-DSS compliance (credit card data)"}),"\n",(0,r.jsx)(n.li,{children:"General privacy protection"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"faithfulness-validation-rag-hallucination-detection",children:"Faithfulness Validation (RAG Hallucination Detection)"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Endpoint:"})," ",(0,r.jsx)(n.code,{children:"/v3/guardrails/ftl-response-faithfulness"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Description:"})," Validates that AI-generated responses are faithful to source documents in RAG (Retrieval-Augmented Generation) systems."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"How It Works:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Compares AI output against source context/documents"}),"\n",(0,r.jsx)(n.li,{children:"Uses Fiddler's Fast Faithfulness model"}),"\n",(0,r.jsx)(n.li,{children:"Returns faithfulness score (inverted scale)"}),"\n",(0,r.jsx)(n.li,{children:"Score < 0.005 = unfaithful (hallucination detected)"}),"\n",(0,r.jsx)(n.li,{children:"Score \u2265 0.005 = faithful (accurate response)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Threshold"})," (default: 0.005) - Fiddler's recommended threshold"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Action"})," (default: ",(0,r.jsx)(n.code,{children:"warn"}),") - Output validation never blocks, only warns"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Use Cases:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"RAG chatbots validation"}),"\n",(0,r.jsx)(n.li,{children:"Knowledge base accuracy"}),"\n",(0,r.jsx)(n.li,{children:"Document Q&A systems"}),"\n",(0,r.jsx)(n.li,{children:"Customer support automation"}),"\n",(0,r.jsx)(n.li,{children:"Legal/medical AI applications"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"failure-semantics",children:"Failure Semantics"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"failure-semantics",integration:"Fiddler",question:"Can I answer any questions about Fiddler failure modes and what happens when the API is unavailable?"}})}),"\n",(0,r.jsx)(n.p,{children:"Guardrails that silently bypass enforcement when something goes wrong are not guardrails \u2014 they are telemetry. AnswerAgentAI exposes the failure posture as a first-class configuration so an admin can choose how the platform reacts when Fiddler cannot be evaluated (bad API key, network outage, upstream timeout, circuit open, no credential resolved)."}),"\n",(0,r.jsx)(n.h3,{id:"fail-open-vs-fail-closed",children:"Fail-Open vs Fail-Closed"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Failure scenario"}),(0,r.jsx)(n.th,{children:"Fail-Open (default)"}),(0,r.jsx)(n.th,{children:"Fail-Closed"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Real safety violation (200 + score)"}),(0,r.jsx)(n.td,{children:"Block with HTTP 400"}),(0,r.jsx)(n.td,{children:"Block with HTTP 400"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Bad API key (401 from Fiddler)"}),(0,r.jsx)(n.td,{children:"Request continues, amber banner in chat, structured error log"}),(0,r.jsx)(n.td,{children:"Request returns HTTP 503, no LLM call made"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Missing credential"}),(0,r.jsx)(n.td,{children:"Request continues, amber banner, structured warn log"}),(0,r.jsx)(n.td,{children:"Request returns HTTP 503"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Fiddler timeout / 5xx"}),(0,r.jsx)(n.td,{children:"Request continues, amber banner"}),(0,r.jsx)(n.td,{children:"Request returns HTTP 503"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Circuit breaker open"}),(0,r.jsx)(n.td,{children:"Request continues, amber banner"}),(0,r.jsx)(n.td,{children:"Request returns HTTP 503"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Guardrails disabled by config"}),(0,r.jsx)(n.td,{children:"Request continues, no banner"}),(0,r.jsx)(n.td,{children:"Request continues, no banner"})]})]})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsxs)(n.strong,{children:["Default is ",(0,r.jsx)(n.code,{children:"open"})]})," so existing deployments see no behavior change until an operator explicitly opts in to strict mode."]}),"\n",(0,r.jsx)(n.h3,{id:"configuration-hierarchy",children:"Configuration Hierarchy"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"failureMode"})," follows the standard env \u2192 organization \u2192 chatflow hierarchy:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Environment variable"})," \u2014 ",(0,r.jsx)(n.code,{children:"FIDDLER_FAILURE_MODE=open|closed"})," (default ",(0,r.jsx)(n.code,{children:"open"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Organization config"})," \u2014 set in the admin Guardrails Settings page (",(0,r.jsx)(n.code,{children:"organizationConfig.guardrails.failureMode"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Chatflow override"})," \u2014 set in the per-chatflow Guardrails tab (",(0,r.jsx)(n.code,{children:"chatbotConfig.guardrails.failureMode"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["Each layer overrides the previous. A single sensitive chatflow can be ",(0,r.jsx)(n.code,{children:"closed"})," while the rest of the organization is ",(0,r.jsx)(n.code,{children:"open"}),"."]}),"\n",(0,r.jsx)(n.h3,{id:"what-end-users-see",children:"What End Users See"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fail-open + degraded:"})," an amber banner above the chat response: ",(0,r.jsx)(n.em,{children:'"Safety checks were unavailable for this message. The response was generated
1without safety checks."'})," Health detail (reason, HTTP status, latency) is shown in the existing \ud83d\udee1\ufe0f Guardrails Validation accordion."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fail-closed + degraded:"})," the prediction returns HTTP 503 with the body ",(0,r.jsx)(n.code,{children:"Safety checks are temporarily unavailable (reason: \u2026). Please try again in a moment."})," No partial LLM output is delivered."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Healthy or skipped (disabled):"})," unchanged from before \u2014 the green \ud83d\udee1\ufe0f Guardrails Validation accordion appears for healthy validations and nothing renders when guardrails are disabled."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"observability-only-shadow-mode",children:"Observability-Only (Shadow) Mode"}),"\n",(0,r.jsx)(n.p,{children:"For a safe pilot before flipping enforcement on in production:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Toggle ",(0,r.jsx)(n.strong,{children:"Observability-Only"})," in the admin Guardrails Settings page, or set ",(0,r.jsx)(n.code,{children:"FIDDLER_OBSERVABILITY_ONLY=true"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:["When enabled, even ",(0,r.jsx)(n.strong,{children:"real"})," Fiddler 200-OK violations are downgraded from ",(0,r.jsx)(n.code,{children:"block"})," to ",(0,r.jsx)(n.code,{children:"warn"}),". Violations are still recorded in ",(0,r.jsx)(n.code,{children:"chat_message.guardrails_metadata"})," for analytics, dashboards, and Langfuse traces, but no request is blocked."]}),"\n",(0,r.jsx)(n.li,{children:"Use this to measure violation volume, calibrate thresholds, and confirm zero false-positives before going hot."}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"diagnostic-selftest-endpoint",children:"Diagnostic Selftest Endpoint"}),"\n",(0,r.jsx)(n.p,{children:"Operators can verify the entire pipeline (config resolution, credential lookup, live Fiddler reachability, per-endpoint plan capabilities, circuit state) without sending a real chat:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:'curl -H "Authorization: Bearer $YOUR_API_KEY" \\\n "https://your-deployment/api/v1/guardrails/selftest?chatflowId=<id>"\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Response shape:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "resolved": {\n "chatflowId": "abc-123",\n "workspaceId": "ws-456",\n "organizationId": "org-789"\n },\n "config": {\n "enabled": true,\n "failureMode": "open",\n "observabilityOnly": false,\n "safety": { "enabled": true, "threshold": 0.1, "action": "block" },\n "pii": { "enabled": true, "confidenceThreshold": 0.8, "action": "redact" },\n "faithfulness": { "enabled": false, "threshold": 0.005, "action": "warn" }\n },\n "credentialSource": "organization",\n "healthCheck": {\n "ok": true,\n "degraded": false,\n "reason": "ok",\n "latencyMs": 287\n },\n "capabilities": {\n "safety": { "ok": true, "degraded": false, "reason": "ok", "latencyMs": 287 },\n "pii": { "ok": true, "degraded": false, "reason": "unsupported", "httpStatus": 404 },\n "faithfulness": { "ok": true, "degraded": false, "reason": "ok", "latencyMs": 312 }\n },\n "circuitState": "CLOSED",\n "notes": [\n "PII detection (sensitive-information) is not included in this Fiddler plan tier; PII checks will be skipped silently at runtime."\n ]\n}\n'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.code,{children:"credentialSource"})," will be one of ",(0,r.jsx)(n.code,{children:"config_credential_id"}),", ",(0,r.jsx)(n.code,{children:"workspace"}),", ",(0,r.jsx)(n.code,{children:"organization"}),", ",(0,r.jsx)(n.code,{children:"env"}),", or ",(0,r.jsx)(n.code,{children:"none"}),". ",(0,r.jsx)(n.code,{children:"healthCheck.reason"})," and ",(0,r.jsx)(n.code,{children:"capabilities.<stage>.reason"})," are a stable enum (",(0,r.jsx)(n.code,{children:"ok"}),", ",(0,r.jsx)(n.code,{children:"disabled"}),", ",(0,r.jsx)(n.code,{children:"no_credentials"}),", ",(0,r.jsx)(n.code,{children:"auth_error"}),", ",(0,r.jsx)(n.code,{children:"api_error"}),", ",(0,r.jsx)(n.code,{children:"timeout"}),", ",(0,r.jsx)(n.code,{children:"circuit_open"}),", ",(0,r.jsx)(n.code,{children:"network_error"}),", ",(0,r.jsx)(n.code,{children:"unsupported"}
1),", ",(0,r.jsx)(n.code,{children:"unexpected"}),") suitable for alerting."]}),"\n",(0,r.jsx)(n.h2,{id:"fiddler-plan-tiers-freemium-vs-paid",children:"Fiddler Plan Tiers (Freemium vs Paid)"}),"\n",(0,r.jsxs)(n.p,{children:["Not every Fiddler endpoint is included in every plan tier. The freemium guardrails API ships with safety enabled, but PII detection (",(0,r.jsx)(n.code,{children:"/v3/guardrails/sensitive-information"}),") and faithfulness (",(0,r.jsx)(n.code,{children:"/v3/guardrails/ftl-response-faithfulness"}),") require a paid Fiddler subscription. When the runtime calls an endpoint that is not included in the caller's plan, Fiddler responds with HTTP 404 and a body indicating the guardrail is not supported."]}),"\n",(0,r.jsx)(n.p,{children:'AnswerAgentAI distinguishes "Fiddler said no" (plan-tier capability gap) from "Fiddler can\'t be reached" (degradation):'}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsxs)(n.strong,{children:["Capability gap (",(0,r.jsx)(n.code,{children:'reason: "unsupported"'}),")"]})," \u2014 The API answered, the plan just doesn't include the endpoint. The runtime caches the unsupported state per ",(0,r.jsx)(n.code,{children:"(api_key, endpoint)"})," so subsequent calls short-circuit without hitting the network or tripping the circuit breaker. ",(0,r.jsx)(n.strong,{children:"No per-message banner is shown"})," because the situation is permanent and configuration-level \u2014 not a runtime outage. Admins see it once on the Guardrails Settings page and via ",(0,r.jsx)(n.code,{children:"selftest"}),"."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsxs)(n.strong,{children:["Outage (",(0,r.jsx)(n.code,{children:'reason: "auth_error" | "timeout" | "api_error" | "circuit_open" | "network_error"'}),")"]})," \u2014 Fiddler is unhealthy. Behavior follows ",(0,r.jsx)(n.code,{children:"failureMode"})," (open: per-message banner, closed: HTTP 503)."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Plan capability matrix in the admin UI."}),' When a Fiddler credential is connected, the Guardrails Settings page renders a row of chips showing the live capability for each endpoint \u2014 green \u2713 for available, amber \u2212 for not included in your plan, red ! for actually degraded. A "Recheck" button re-runs the probe.']}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"What the user sees with a freemium key."})," Safety still runs; PII and faithfulness silently skip. There is no per-message warning banner \u2014 chats look identical to a fully-supported plan. Violations metadata records ",(0,r.jsx)(n.code,{children:'reason: "unsupported"'})," for the skipped sub-stage so audit/Langfuse traces remain accurate."]}),"\n",(0,r.jsx)(n.h3,{id:"credential-visibility",children:"Credential Visibility"}),"\n",(0,r.jsxs)(n.p,{children:["Guardrail credentials are saved with ",(0,r.jsx)(n.code,{children:"Organization"})," visibility by default. The runtime now correctly resolves credentials in this priority order:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Explicit ",(0,r.jsx)(n.code,{children:"credentialId"})," referenced in the chatflow or organization config (workspace-owned OR Organization/Platform-visible)"]}),"\n",(0,r.jsxs)(n.li,{children:["Any ",(0,r.jsx)(n.code,{children:"fiddlerApi"})," credential owned by the chatflow's workspace"]}),"\n",(0,r.jsxs)(n.li,{children:["Any ",(0,r.jsx)(n.code,{children:"fiddlerApi"})," credential with ",(0,r.jsx)(n.code,{children:"Organization"})," or ",(0,r.jsx)(n.code,{children:"Platform"})," visibility in the chatflow's organization"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"FIDDLER_API_KEY"})," + ",(0,r.jsx)(n.code,{children:"FIDDLER_API_URL"})," environment variables"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Multi-workspace organizations are now correctly served by a single org-visible credential."}),"\n",(0,r.jsx)(n.h2,{id:"use-cases",children:"Use Cases"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"use-cases",integration:"Fiddler",question:"Can I answer any questions about Fiddler use cases and workflows?"}})}),"\n",(0,r.jsx)(n.h3,{id:"common-scenarios",children:"Common Scenarios"}),"\n",(0,r.jsx)(n.h4,{id:"1-customer-facing-chatbot-safety",children:"1. Customer-Facing Chatbot Safety"}),"\n",(0,r.jsx)(n.p,{children:"Automatically validate all user inputs and AI responses for safety and PII before displaying to users."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"User submits message to chatbot"}),"\n",(0,r.jsxs)(n.li,{children:["Fiddler validates input for:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Safety violations (block harmful/illegal content)"}),"\n",(0,r.jsx)(n.li,{children:"PII detection (redact sensitive information)"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"AI generates response based on validated/redacted input"}),"\n",(0,r.jsxs)(n.li,{children:["Fiddler validates output for:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Safety (warn on unsafe output)"}),"\n",(0,r.jsx)(n.li,{children:"PII (redact any leaked PII)"}),"\n",(0,r.jsx)(n.li,{children:"Faithfulness (detect hallucinations if using RAG)"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"Display safe, redacted response to user"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Protect users from harmful content"}),"\n",(0,r.jsx)(n.li,{children:"Maintain compliance with privacy regulations"}),"\n",(0,r.jsx)(n.li,{children:"Prevent data leaks"}),"\n",(0,r.jsx)(n.li,{children:"Build trust with safe, accurate AI"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Time Saved:"})," 20+ hours per week on manual content review"]}),"\n",(0,r.jsx)(n.h4,{id:"2-hipaa-compliant-healthcare-chatbot",children:"2. HIPAA-Compliant Healthcare Chatbot"}),"\n",(0,r.jsx)(n.p,{children:"Ensure medical chatbots never expose protected health information (PHI)."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Configure Fiddler PII detection for medical data:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"SSN, address, phone (block actions)"}),"\n",(0,r.jsx)(n.li,{children:"Medical record numbers (redact)"}),"\n",(0,r.jsx)(n.li,{children:"Names and DOB (redact)"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Enable safety validation:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Block harmful medical advice"}),"\n",(0,r.jsx)(n.li,{children:"Warn on unethical suggestions"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Enable faithfulness checking:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Validate responses against medical knowledge base"}),"\n",(0,r.jsx)(n.li,{children:"Flag potential hallucinations for review"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"HIPAA compliance"}),"\n",(0,r.jsx)(n.li,{children:"Prevent PHI leaks"}),"\n",(0,r.jsx)(n.li,{children:"Ensure accurate medical information"}),"\n",(0,r.jsx)(n.li,{children:"Reduce legal liability"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Compliance Impact:"})," Reduce PII incidents by 95%"]}),"\n",(0,r.jsx)(n.h4,{id:"3-financial-services-content-moderation",children:"3. Financial Services Content Moderation"}),"\n",(0,r.jsx)(n.p,{children:"Protect financial data and ensure regulatory compliance."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Detect and redact financial PII:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Credit card numbers (block)"}),"\n",(0,r.jsx)(n.li,{children:"Bank account numbers (block)"}),"\n",(0,r.jsx)(n.li,{children:"SSN (block)"}),"\n",(0,r.jsx)(n.li,{children:"PINs and security codes (block)"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Safety validation:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Block illegal financial advice"}),"\n",(0,r.jsx)(n.li,{children:"Warn on unethical suggestions"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Faithfulness checking:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Validate responses against financial policies"}),"\n",(0,r.jsx)(n.li,{children:"Prevent misinformation"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"PCI-DSS compliance"}),"\n",(0,r.jsx)(n.li,{children:"SOC 2 compliance"}),"\n",(0,r.jsx)(n.li,{children:"Regulatory compliance (SEC, FINRA)"}),"\n",(0,r.jsx)(n.li,{children:"Data breach prevention"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Time Saved:"})," 15+ hours per week on compliance reviews"]}),"\n",(0,r.jsx)(n.h4,{id:"4-rag-knowledge-base-with-hallucination-detection",children:"4. RAG Knowledge Base with Hallucination Detection"}),"\n",(0,r.jsx)(n.p,{children:"Ensure AI-generated answers are grounded in source documents."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"User asks question"}),"\n",(0,r.jsx)(n.li,{children:"RAG system retrieves relevant documents"}),"\n",(0,r.jsx)(n.li,{children:"AI generates response based on documents"}),"\n",(0,r.jsxs)(n.li,{children:["Fiddler validates faithfulness:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Compare response to source context"}),"\n",(0,r.jsx)(n.li,{children:"Score < 0.005 = flag as potential hallucination"}),"\n",(0,r.jsx)(n.li,{children:"Score \u2265 0.005 = accept as faithful"}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.li,{children:"If unfaithful, trigger review or regenerate"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Prevent hallucinations"}),"\n",(0,r.jsx)(n.li,{children:"Improve accuracy"}),"\n",(0,r.jsx)(n.li,{children:"Build user trust"}),"\n",(0,r.jsx)(n.li,{children:"Reduce misinformation"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Accuracy Improvement:"})," 85% reduction in hallucinations"]}),"\n",(0,r.jsx)(n.h4,{id:"5-internal-knowledge-base-safety",children:"5. Internal Knowledge Base Safety"}),"\n",(0,r.jsx)(n.p,{children:"Protect employees from unsafe or inappropriate content in internal AI tools."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Configure lenient safety thresholds for internal use:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Higher thresholds (0.15) for internal
1content"}),"\n",(0,r.jsx)(n.li,{children:"Warn actions instead of blocking"}),"\n",(0,r.jsx)(n.li,{children:"Monitor but don't prevent roleplaying scenarios"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["PII detection:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Warn on employee PII (not block)"}),"\n",(0,r.jsx)(n.li,{children:"Track PII exposure for audit"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["Faithfulness checking:","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Validate responses against internal docs"}),"\n",(0,r.jsx)(n.li,{children:"Flag low-confidence answers"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Employee safety"}),"\n",(0,r.jsx)(n.li,{children:"Internal compliance"}),"\n",(0,r.jsx)(n.li,{children:"Audit trail for governance"}),"\n",(0,r.jsx)(n.li,{children:"Flexibility for internal use"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Time Saved:"})," 10+ hours per week on content review"]}),"\n",(0,r.jsx)(n.h3,{id:"example-workflows",children:"Example Workflows"}),"\n",(0,r.jsx)(n.h3,{id:"example-1-customer-support-chatbot-with-full-guardrails",children:"Example 1: Customer Support Chatbot with Full Guardrails"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Goal:"})," Create a safe, compliant customer support chatbot that never leaks PII or produces harmful content."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"AnswerAgentAI Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'// Organization Guardrails Config\n{\n enabled: true,\n credentialId: "fiddler-credential-id",\n safety: {\n enabled: true,\n threshold: 0.1, // Fiddler recommendation\n action: "block",\n dimensionActions: {\n fdl_illegal: "block",\n fdl_harmful: "block",\n fdl_sexual: "block",\n fdl_roleplaying: "warn" // Less strict\n }\n },\n pii: {\n enabled: true,\n confidenceThreshold: 0.8,\n action: "redact",\n typeActions: {\n US_SOCIAL_SECURITY_NUMBER: "block",\n CREDIT_CARD: "block",\n EMAIL: "redact",\n PHONE_NUMBER: "redact",\n USERNAME: "warn"\n }\n },\n faithfulness: {\n enabled: true,\n threshold: 0.005,\n action: "warn"\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example Interaction:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'User: "My SSN is 123-45-6789 and I need help with my account"\n\nInput Validation:\n- Safety: \u2713 No violations\n- PII Detection: \u2717 SSN detected (confidence: 0.95)\n Action: BLOCK (per typeActions config)\n\nResponse: "I cannot process messages containing sensitive information\nlike Social Security Numbers. Please remove this information and try again."\n\n---\n\nUser: "I need help with my account login issues"\n\nInput Validation:\n- Safety: \u2713 No violations\n- PII: \u2713 No PII detected\n\nAI generates response based on RAG knowledge base...\n\nOutput Validation:\n- Safety: \u2713 No violations\n- PII: \u2713 No PII detected\n- Faithfulness: \u2713 Score 0.92 (faithful to source docs)\n\nResponse: "I can help you with login issues. First, let\'s try resetting your password..."\n'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Safe, compliant chatbot with <150ms guardrails latency."]}),"\n",(0,r.jsx)(n.h3,{id:"example-2-gdpr-compliant-content-analysis",children:"Example 2: GDPR-Compliant Content Analysis"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Goal:"})," Analyze user-generated content while ensuring GDPR compliance."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'{\n pii: {\n enabled: true,\n confidenceThreshold: 0.75, // More sensitive\n enabledTypes: [\n "PERSON",\n "EMAIL",\n "PHONE_NUMBER",\n "ADDRESS",\n "USERNAME"\n ],\n typeActions: {\n PERSON: "redact",\n EMAIL: "redact",\n PHONE_NUMBER: "redact",\n ADDRESS: "redact",\n USERNAME: "redact"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'Input: "Contact John Doe at [email protected] or call 555-1234"\n\nPII Detection:\n- PERSON: "John Doe" (confidence: 0.92) \u2192 Redact\n- EMAIL: "[email protected]" (confidence: 0.98) \u2192 Redact\n- PHONE_NUMBER: "555-1234"
1(confidence: 0.88) \u2192 Redact\n\nRedacted Output: "Contact [PERSON] at [EMAIL] or call [PHONE_NUMBER]"\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"GDPR compliance"}),"\n",(0,r.jsx)(n.li,{children:"Privacy protection"}),"\n",(0,r.jsx)(n.li,{children:"Audit trail"}),"\n",(0,r.jsx)(n.li,{children:"Automated redaction"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"example-3-medical-chatbot-with-hallucination-prevention",children:"Example 3: Medical Chatbot with Hallucination Prevention"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Goal:"})," Build a medical Q&A chatbot that never hallucinates medical information."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'{\n safety: {\n enabled: true,\n threshold: 0.05, // Strict for medical\n action: "block",\n dimensionActions: {\n fdl_harmful: "block",\n fdl_illegal: "block",\n fdl_unethical: "block"\n }\n },\n faithfulness: {\n enabled: true,\n threshold: 0.005,\n action: "warn"\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Workflow:"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{children:'User: "What are the side effects of aspirin?"\n\nRAG System:\n1. Retrieves medical documents about aspirin\n2. AI generates response based on documents\n\nFaithfulness Validation:\n- Input: Retrieved medical context\n- Output: AI-generated response\n- Faithfulness Score: 0.92 \u2713 (faithful)\n\nResponse delivered to user.\n\n---\n\nIf faithfulness score < 0.005:\n- Log hallucination warning\n- Optionally regenerate response\n- Flag for human review\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Medical accuracy"}),"\n",(0,r.jsx)(n.li,{children:"Patient safety"}),"\n",(0,r.jsx)(n.li,{children:"Liability reduction"}),"\n",(0,r.jsx)(n.li,{children:"Trust building"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"advanced-configuration",children:"Advanced Configuration"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"advanced-configuration",integration:"Fiddler",question:"Can I answer any questions about advanced Fiddler configuration?"}})}),"\n",(0,r.jsx)(n.h3,{id:"configuration-hierarchy-1",children:"Configuration Hierarchy"}),"\n",(0,r.jsx)(n.p,{children:"AnswerAgentAI supports a three-tier configuration hierarchy for guardrails:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Priority Order: Environment Variables \u2192 Organization Config \u2192 Chatflow Config"})}),"\n",(0,r.jsx)(n.h4,{id:"environment-variables-lowest-priority",children:"Environment Variables (Lowest Priority)"}),"\n",(0,r.jsx)(n.p,{children:"Set global defaults via environment variables:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"# In .env\nFIDDLER_API_KEY=fiddler_api_key_...\nFIDDLER_API_URL=https://guardrails.cloud.fiddler.ai\n"})}),"\n",(0,r.jsx)(n.h4,{id:"organization-config-medium-priority",children:"Organization Config (Medium Priority)"}),"\n",(0,r.jsx)(n.p,{children:"Configure guardrails at the organization level:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'// In Organization.organizationConfig\n{\n guardrails: {\n enabled: true,\n credentialId: "org-fiddler-credential",\n safety: {\n enabled: true,\n threshold: 0.1,\n action: "block"\n },\n pii: {\n enabled: true,\n confidenceThreshold: 0.8,\n action: "redact"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h4,{id:"chatflow-config-highest-priority",children:"Chatflow Config (Highest Priority)"}),"\n",(0,r.jsx)(n.p,{children:"Override organization settings per chatflow:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'// In ChatFlow.chatflowConfig\n{\n guardrails: {\n safety: {\n threshold: 0.05, // More str
1ict for this chatflow\n dimensionActions: {\n fdl_illegal: "block",\n fdl_harmful: "block"\n }\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"safety-configuration-examples",children:"Safety Configuration Examples"}),"\n",(0,r.jsx)(n.h4,{id:"strict-safety-external-chatbots",children:"Strict Safety (External Chatbots)"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "safety": {\n "enabled": true,\n "threshold": 0.05,\n "action": "block",\n "dimensionThresholds": {\n "fdl_illegal": 0.02,\n "fdl_harmful": 0.05,\n "fdl_sexual": 0.05\n },\n "dimensionActions": {\n "fdl_illegal": "block",\n "fdl_harmful": "block",\n "fdl_sexual": "block",\n "fdl_roleplaying": "warn"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Interpretation:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Global threshold: 0.05 (strict)"}),"\n",(0,r.jsx)(n.li,{children:"Illegal content: 0.02 (very strict)"}),"\n",(0,r.jsx)(n.li,{children:"Block most violations"}),"\n",(0,r.jsx)(n.li,{children:"Warn on roleplaying (more lenient)"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"balanced-safety-general-purpose",children:"Balanced Safety (General Purpose)"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "safety": {\n "enabled": true,\n "threshold": 0.1,\n "action": "block",\n "dimensionActions": {\n "fdl_illegal": "block",\n "fdl_harmful": "warn",\n "fdl_roleplaying": "continue"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h4,{id:"lenient-safety-internal-tools",children:"Lenient Safety (Internal Tools)"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "safety": {\n "enabled": true,\n "threshold": 0.15,\n "action": "warn"\n }\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"pii-configuration-examples",children:"PII Configuration Examples"}),"\n",(0,r.jsx)(n.h4,{id:"hipaa-compliance",children:"HIPAA Compliance"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "pii": {\n "enabled": true,\n "confidenceThreshold": 0.75,\n "enabledTypes": ["PERSON", "US_SOCIAL_SECURITY_NUMBER", "ADDRESS", "PHONE_NUMBER", "EMAIL", "AGE"],\n "typeActions": {\n "US_SOCIAL_SECURITY_NUMBER": "block",\n "PERSON": "redact",\n "ADDRESS": "redact",\n "PHONE_NUMBER": "redact",\n "EMAIL": "redact",\n "AGE": "redact"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h4,{id:"pci-dss-compliance-financial",children:"PCI-DSS Compliance (Financial)"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "pii": {\n "enabled": true,\n "confidenceThreshold": 0.8,\n "enabledTypes": ["CREDIT_CARD", "CREDIT_CARD_EXPIRATION", "US_BANK_NUMBER", "PIN", "SWIFT_CODE", "IBAN_CODE"],\n "typeActions": {\n "CREDIT_CARD": "block",\n "PIN": "block",\n "US_BANK_NUMBER": "block",\n "CREDIT_CARD_EXPIRATION": "redact",\n "SWIFT_CODE": "redact",\n "IBAN_CODE": "redact"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h4,{id:"gdpr-compliance",children:"GDPR Compliance"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "pii": {\n "enabled": true,\n "confidenceThreshold": 0.8,\n "enabledTypes": ["PERSON", "EMAIL", "PHONE_NUMBER", "ADDRESS"],\n "typeActions": {\n "PERSON": "redact",\n "EMAIL": "redact",\n "PHONE_NUMBER": "redact",\n "ADDRESS": "redact"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"circuit-breaker-configuration",children:"Circuit Breaker Configuration"}),"\n",(0,r.jsx)(n.p,{children:"Fiddler integration includes circuit breaker protection for reliability:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "circuitBreaker": {\n "failureThreshold": 5,\n "resetTimeout": 30000,\n "successThreshold": 3\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Configuration:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"failureThreshold"})," - Number of failures before opening circuit (default: 5)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"resetTimeout"})," - Time in ms before attempting to close circuit (default: 30s)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"successThreshold"})," - Successes needed to close circuit (default: 3)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Closed"}),": Normal operation, requests pass through"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Open"}),": After N failures, requests fail immediately (fail-open: return safe defaults)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Half-Open"}),": After timeout, allow test requests to check if service recovered"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"caching-configuration",children:"Caching Configuration"}),"\n",(0,r.jsx)(n.p,{children:"Optional Redis caching for improved performance:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "cache": {\n "enabled": true,\n "ttl": 3600\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Benefits:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Reduce API calls for identical inputs"}),"\n",(0,r.jsx)(n.li,{children:"Sub-millisecond response for cached results"}),"\n",(0,r.jsx)(n.li,{children:"Reduce costs"}),"\n",(0,r.jsx)(n.li,{children:"Improve latency"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"TTL:"})," Time-to-live in seconds (default: 1 hour)"]}),"\n",(0,r.jsx)(n.h2,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,r.jsx)("div",{style:{margin:"1rem 0"},children:(0,r.jsx)(t.A,{variant:"chip",size:"small",context:{page:"integration-fiddler",section:"faq",integration:"Fiddler",question:"Can I answer any questions about Fiddler troubleshooting and best practices?"}})}),"\n",(0,r.jsx)(n.h3,{id:"setup--configuration",children:"Setup & Configuration"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Do I need a Fiddler account to use guardrails?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: Yes, you need a Fiddler AI account and API key. Visit ",(0,r.jsx)(n.a,{href:"https://www.fiddler.ai/",children:"https://www.fiddler.ai/"})," to sign up or request a demo."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: What's the difference between input and output validation?"})}),"\n",(0,r.jsx)(n.p,{children:"A:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Input Validation"}),": Validates user-submitted text before AI processing","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Can ",(0,r.jsx)(n.strong,{children:"block"})," unsafe inputs (prevent processing)"]}),"\n",(0,r.jsxs)(n.li,{children:["Can ",(0,r.jsx)(n.strong,{children:"redact"})," PII before sending to LLM"]}),"\n",(0,r.jsxs)(n.li,{children:["Default action: ",(0,r.jsx)(n.code,{children:"block"})," for safety, ",(0,r.jsx)(n.code,{children:"redact"})," for PII"]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Output Validation"}),": Validates AI-generated responses before showing to users","\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Never blocks"})," (always fail-open)"]}),"\n",(0,r.jsxs)(n.li,{children:["Can ",(0,r.jsx)(n.strong,{children:"redact"})," PII in responses"]}),"\n",(0,r.jsxs)(n.li,{children:["Can ",(0,r.jsx)(n.strong,{children:"warn"})," on faithfulness issues (hallucinations)"]}),"\n",(0,r.jsxs)(n.li,{children:["Default action: ",(0,r.jsx)(n.code,{children:"warn"})," for all violations"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Can I configure different guardrails for different chatflows?"})}),"\n",(0,r.jsx)(n.p,{children:"A: Yes! AnswerAgentAI supports a three-tier hierarchy:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Environment"}),": Global defaults"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Organization"}),": Org-wide settings"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Chatflow"}),": Per-chatflow overrides (highest priority)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Each tier can override specific settings from lower tiers."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do I set up guardrails for a single chatflow?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: Configure ",(0,r.jsx)(n.code,{children:"chatflowConfig"})," on the ChatFlow entity:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-typescript",children:'{\n guardrails: {\n safety: { threshold: 0.05 },\n pii: { action: "block" }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: What happens if my Fiddler API key is invali
1d?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: The integration's behavior is governed by the configured ",(0,r.jsx)(n.strong,{children:"failureMode"})," (",(0,r.jsx)(n.code,{children:"open"})," by default):"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fail-open:"})," Invalid credentials, timeouts, 5xx, or network errors \u2192 log structured warning, continue the chat, surface an amber degraded banner above the message."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fail-closed:"})," Same conditions \u2192 return HTTP 503 to the caller, no LLM call made."]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Plan-tier 404s are handled separately"})," \u2014 they are not treated as degradation. If Fiddler responds with ",(0,r.jsx)(n.code,{children:"404 NotFound"}),' and "not supported by the freemium guardrails API", the runtime classifies the endpoint as ',(0,r.jsx)(n.code,{children:"unsupported"}),", caches that decision per (api_key, endpoint), and silently skips that guardrail without a banner. See ",(0,r.jsx)(n.strong,{children:"Fiddler Plan Tiers"})," above."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsxs)(n.strong,{children:["Q: I'm seeing an ",(0,r.jsx)(n.code,{children:"HTTP 404"})," banner in chat. What's wrong?"]})}),"\n",(0,r.jsxs)(n.p,{children:["A: That banner is shown when Fiddler returns 404 for a reason ",(0,r.jsx)(n.em,{children:"other"})," than a plan-tier capability gap (which is detected via the response body). The most common causes:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Wrong ",(0,r.jsx)(n.code,{children:"apiUrl"})," in the credential \u2014 verify it points to your Fiddler guardrails host (e.g. ",(0,r.jsx)(n.code,{children:"https://guardrails.cloud.fiddler.ai"}),")."]}),"\n",(0,r.jsxs)(n.li,{children:["The credential is being resolved from an unexpected source \u2014 call ",(0,r.jsx)(n.code,{children:"/api/v1/guardrails/selftest?chatflowId=<id>"})," and inspect ",(0,r.jsx)(n.code,{children:"credentialSource"}),"."]}),"\n",(0,r.jsx)(n.li,{children:"A Fiddler-side incident \u2014 check Fiddler status. The circuit breaker will open after 5 failures and self-heal after 30s."}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["If you're on a freemium plan and the banner specifically mentions PII / sensitive-information / faithfulness, ensure you're on the latest version \u2014 those endpoints are now classified as ",(0,r.jsx)(n.code,{children:"unsupported"})," and skipped silently rather than banner'd."]}),"\n",(0,r.jsx)(n.h3,{id:"usage--best-practices",children:"Usage & Best Practices"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do safety thresholds work?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: Fiddler safety scores indicate ",(0,r.jsx)(n.strong,{children:"how unsafe"})," content is:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score > threshold"})," = Unsafe (violation detected)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score \u2264 threshold"})," = Safe (no violation)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Lower threshold"})," = MORE strict (catches more violations)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Higher threshold"})," = LESS strict (catches fewer violations)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fiddler recommendation"}),": 0.1 for production"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Threshold: 0.1"}),"\n",(0,r.jsx)(n.li,{children:"Score 0.05: Safe \u2713"}),"\n",(0,r.jsx)(n.li,{children:"Score 0.15: Unsafe \u2717 (violation)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do PII confidence thresholds work?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: PII scores indicate ",(0,r.jsx)(n.strong,{children:"how confident"})," the detection is:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score > threshold"})," = PII detected (process it)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score \u2264 threshold"})," = Not PII (ignore)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Lower threshold"})," = MORE sensitive (more detections)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Higher threshold"})," = LESS sensitive (fewer detections)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Fiddler recommendation"}),": 0.8 for production"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Example:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Threshold: 0.8"}),"\n",(0,r.jsx)(n.li,{children:"Score 0.95: High confidence PII \u2713 (redact)"}),"\n",(0,r.jsx)(n.li,{children:"Score 0.70: Low confidence \u2717 (ignore)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do I set different actions for different safety dimensions?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: Use ",(0,r.jsx)(n.code,{children:"dimensionActions"})," in safety config:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "safety": {\n "action": "block",\n "dimensionActions": {\n "fdl_illegal": "block",\n "fdl_harmful": "warn",\n "fdl_roleplaying": "continue"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do I set different actions for different PII types?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: Use ",(0,r.jsx)(n.code,{children:"typeActions"})," in PII config:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "pii": {\n "action": "redact",\n "typeActions": {\n "US_SOCIAL_SECURITY_NUMBER": "block",\n "CREDIT_CARD": "block",\n "EMAIL": "redact",\n "USERNAME": "warn"\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: What actions are available?"})}),"\n",(0,r.jsx)(n.p,{children:"A:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"block"})," - Reject input/output, return error message"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"redact"})," - Replace PII with ",(0,r.jsx)(n.code,{children:"[PII_TYPE]"})," placeholder"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"replace"})," - Replace with alternative text (future)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"warn"})," - Log violation, allow content through"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"continue"})," - No action (monitoring only)"]}
1),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How does faithfulness checking work?"})}),"\n",(0,r.jsx)(n.p,{children:"A: Fiddler compares AI output against source context (RAG documents):"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Input: Source documents/context"}),"\n",(0,r.jsx)(n.li,{children:"Output: AI-generated response"}),"\n",(0,r.jsx)(n.li,{children:"Returns: Faithfulness score (inverted scale)"}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score < 0.005"})," = Unfaithful (hallucination)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Score \u2265 0.005"})," = Faithful (accurate)"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Note:"})," Faithfulness only works for RAG systems with source context."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Should I enable faithfulness checking for all chatflows?"})}),"\n",(0,r.jsx)(n.p,{children:"A: No, only for RAG systems:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Enable"}),": RAG chatbots, Q&A systems, document search"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Disable"}),": Creative writing, general conversation, non-RAG use cases"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do I monitor guardrails performance?"})}),"\n",(0,r.jsx)(n.p,{children:"A: Guardrails metadata is included in chatflow responses:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n "text": "AI response",\n "guardrails": {\n "safety": {\n "violations": [...],\n "isUnsafe": false\n },\n "pii": {\n "detections": [...],\n "hasPII": false\n },\n "faithfulness": {\n "score": 0.92,\n "threshold": 0.005\n }\n }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:"Monitor this data in logs or analytics."}),"\n",(0,r.jsx)(n.h3,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Guardrails are not running"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Causes:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Not enabled"}),": Check ",(0,r.jsx)(n.code,{children:"enabled: true"})," in config"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"No credentials"}),": Verify Fiddler API key exists"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Circuit breaker open"}),": Too many failures opened circuit"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Verify configuration hierarchy (env \u2192 org \u2192 chatflow)"}),"\n",(0,r.jsx)(n.li,{children:"Check credential exists and is valid"}),"\n",(0,r.jsx)(n.li,{children:"Check circuit breaker status in logs"}),"\n",(0,r.jsxs)(n.li,{children:["Verify ",(0,r.jsx)(n.code,{children:"FIDDLER_API_KEY"})," environment variable if using env config"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:'Q: Getting "Circuit breaker is open" errors'})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Cause:"})," Too many consecutive failures to Fiddler API"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Check Fiddler API status (service outage?)"}),"\n",(0,r.jsx)(n.li,{children:"Verify API key is valid"}),"\n",(0,r.jsx)(n.li,{children:"Check network connectivity"}),"\n",(0,r.jsx)(n.li,{children:"Wait for reset timeout (default: 30s)"}),"\n",(0,r.jsx)(n.li,{children:"Manually reset circuit (admin action)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: PII detection not working"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Possible causes:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Not enabled"}),": ",(0,r.jsx)(n.code,{children:"pii.enabled: false"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Threshold too high"}),": ",(0,r.jsx)(n.code,{children:"confidenceThreshold: 0.95"})," misses lower-confidence detections"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Type not enabled"}),": Check ",(0,r.jsx)(n.code,{children:"enabledTypes"})," array"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:'Action is "continue"'}),": Detection happens but no action taken"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Enable PII detection: ",(0,r.jsx)(n.code,{children:"pii.enabled: true"})]}),"\n",(0,r.jsxs)(n.li,{children:["Lower threshold: Try ",(0,r.jsx)(n.code,{children:"0.75"})," or ",(0,r.jsx)(n.code,{children:"0.8"})]}),"\n",(0,r.jsxs)(n.li,{children:["Check ",(0,r.jsx)(n.code,{children:"enabledTypes"})," includes the PII type"]}),"\n",(0,r.jsxs)(n.li,{children:["Use ",(0,r.jsx)(n.code,{children:"redact"})," or ",(0,r.jsx)(n.code,{children:"block"})," action instead of ",(0,r.jsx)(n.code,{children:"continue"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Safety validation blocking too much"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Cause:"})," Threshold too low (too strict)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Increase global threshold: ",(0,r.jsx)(n.code,{children:"0.1"})," \u2192 ",(0,r.jsx)(n.code,{children:"0.15"})]}),"\n",(0,r.jsx)(n.li,{children:"Use per-dimension thresholds for fine-tuning"}),"\n",(0,r.jsxs)(n.li,{children:["Change action from ",(0,r.jsx)(n.code,{children:"block"})," to ",(0,r.jsx)(n.code,{children:"warn"})," for less critical dimensions"]}),"\n",(0,r.jsx)(n.li,{children:"Review blocked content to calibrate thresholds"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Safety validation not blocking enough"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Cause:"})," Threshold too high (too lenient)"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["Decrease global threshold: ",(0,r.jsx)(n.code,{children:"0.15"})," \u2192 ",(0,r.jsx)(n.code,{children:"0.1"})," or ",(0,r.jsx)(n.code,{children:"0.05"})]}),"\n",(0,r.jsx)(n.li,{children:"Use per-dimension thresholds to be strict on specific dimensions"}),"\n",(0,r.jsxs)(n.li,{children:["Ensure action is ",(0,r.jsx)(n.code,{children:"block"})," not ",(0,r.jsx)(n.code,{children:"warn"})]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Faithfulness scores always 1.0 (no hallucinations detected)"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Causes:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"No context provided"}),": Faithfulness requires source context"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Faithfulness not enabled"}),": ",(0,r.jsx)(n.code,{children:"faithfulness.enabled: false"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Using non-RAG chatflow"}),": Faithfulness only works for RAG systems"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Ensure you're using RAG chatflow with source documents"}),"\n",(0,r.jsxs)(n.li,{children:["Enable faithfulness: ",(0,r.jsx)(n.code,{children:"faithfulness.enabled: true"})]}),"\n",(0,r.jsx)(n.li,{children:"Verify context is passed to validation"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: High latency (>200ms)"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Causes:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Multiple sequential checks"}),": Running safety, PII, faithfulness sequentially"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"No caching"}),": Duplicate requests hitting API"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network issues"}),": Slow connection to Fiddler API"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Solutions:"})}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["AnswerAgentAI runs checks ",(0,r.jsx)(n.strong,{children:"in parallel"})," (already optimized)"]}),"\n",(0,r.jsxs)(n.li,{children:["Enable Redis caching: ",(0,r.jsx)(n.code,{children:"cache.enabled: true"})]}),"\n",(0,r.jsx)(n.li,{children:"Check network latency to Fiddler API"}),"\n",(0,r.jsx)(n.li,{children:"Consider increasing timeouts if network is slow"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Redacted text looks wrong"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Example:"})," ",(0,r.jsx)(n.code,{children:'"Contact [PERSON] at [EMAIL] or [PHONE_NUMBER]"'})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"This is expected behavior."})," Redaction replaces PII with ",(0,r.jsx)(n.code,{children:"[PII_TYPE]"})," placeholders."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"To customize redaction:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["Use ",(0,r.jsx)(n.code,{children:"replace"})," action (future feature)"]}),"\n",(0,r.jsx)(n.li,{children:"Post-process redacted text in your application"}),"\n",(0,r.jsx)(n.li,{children:"Use different actions per type (e.g., block SSN, redact email)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Different results between input and output validation"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"This is expected."})," Input and output validation have different goals:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Input"}),": Strict (blocks unsafe/PII inputs)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Output"}),": Lenient (warns but doesn't block)"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Differences in detection can occur due to:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Different thresholds configured"}),"\n",(0,r.jsx)(n.li,{children:"Different actions configured"}),"\n",(0,r.jsx)(n.li,{children:"Context differences (output includes AI-generated text)"}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"performance--reliability",children:"Performance & Reliability"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: What's the expected latency?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: ",(0,r.jsx)(n.strong,{children:"<150ms"})," for most guardrails checks:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Safety: ~50-80ms"}),"\n",(0,r.jsx)(n.li,{children:"PII: ~40-70ms"}),"\n",(0,r.jsx)(n.li,{children:"Faithfulness: ~60-100ms"}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Parallel execution"}),": All checks run simultaneously"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: What happens if Fiddler API is down?"})}),"\n",(0,r.jsxs)(n.p,{children:["A: ",(0,r.jsx)(n.strong,{children:"Fail-open design"})," ensures your application stays online:"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"Circuit breaker opens after 5 failures"}
1),"\n",(0,r.jsx)(n.li,{children:"Requests skip guardrails (return safe defaults)"}),"\n",(0,r.jsx)(n.li,{children:"Circuit attempts to close after 30s"}),"\n",(0,r.jsx)(n.li,{children:"Your chatflows continue working without guardrails"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Logged behavior:"})}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Warning logged to console"}),"\n",(0,r.jsx)(n.li,{children:'Guardrails metadata indicates "fail-open" state'}),"\n",(0,r.jsx)(n.li,{children:"Monitor for service restoration"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: Can I use Fiddler guardrails in production?"})}),"\n",(0,r.jsx)(n.p,{children:"A: Yes, Fiddler is enterprise-grade and production-ready:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"<150ms latency"}),"\n",(0,r.jsx)(n.li,{children:"Circuit breaker protection"}),"\n",(0,r.jsx)(n.li,{children:"Fail-open reliability"}),"\n",(0,r.jsx)(n.li,{children:"Connection pooling"}),"\n",(0,r.jsx)(n.li,{children:"Optional caching"}),"\n",(0,r.jsx)(n.li,{children:"99.9%+ uptime SLA (check with Fiddler)"}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"Q: How do I optimize performance?"})}),"\n",(0,r.jsx)(n.p,{children:"A:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Enable caching"}),": ",(0,r.jsx)(n.code,{children:"cache.enabled: true"})," (sub-ms for cached results)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Parallel execution"}),": AnswerAgentAI runs checks in parallel (already optimized)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Selective checks"}),": Disable unused checks (e.g., faithfulness for non-RAG)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Connection pooling"}),": Already enabled (50 sockets per host)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Per-dimension config"}),": Only check dimensions you care about"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,r.jsx)(n.h3,{id:"official-documentation",children:"Official Documentation"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/",children:"Fiddler Documentation"})})," - Complete Fiddler platform documentation"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/docs/guardrails-overview",children:"Guardrails Overview"})})," - Introduction to Fiddler Guardrails"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/docs/safety-guardrails",children:"Safety Guardrails"})})," - Safety dimension documentation"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/docs/pii-detection",children:"PII Detection"})})," - PII detection and redaction guide"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://docs.fiddler.ai/docs/faithfulness",children:"Faithfulness Validation"})})," - RAG hallucination detection"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"answeragentai-implementation",children:"AnswerAgentAI Implementation"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/packages/server/src/services/guardrails/",children:"Guardrails Service"})})," - Internal implementation reference"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"/packages/server/src/types/guardrails.ts",children:"Guardrails Types"})})," - TypeScript type definitions"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://github.com/the-answerai/theanswer/blob/main/packages/server/CLAUDE.md#guardrails",children:"Configuration Guide"})})," - Server configuration patterns"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"compliance-resources",children:"Compliance Resources"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.hhs.gov/hipaa/",children:"HIPAA Compliance"})})," - Healthcare data protection"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://gdpr.eu/",children:"GDPR Compliance"})})," - EU data privacy regulations"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.pcisecuritystandards.org/",children:"PCI-DSS"})})," - Payment card industry standards"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.aicpa.org/soc4so",children:"SOC 2"})})," - Security and compliance framework"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"community--support",children:"Community & Support"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.fiddler.ai/",children:"Fiddler Website"})})," - Company website"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.fiddler.ai/demo",children:"Request Demo"})})," - Book a Fiddler demo"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://support.fiddler.ai/",children:"Support"})})," - Fiddler customer support"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://www.fiddler.ai/blog",children:"Blog"})})," - Latest updates and best practices"]}),"\n"]})]})}function x(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.