197 lines
12 KiB
HTML
197 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" data-theme="light">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<script src="/js/analytics.js"></script>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Custom AI Microservices & APIs | Zettai Systems</title>
|
||
<meta name="description" content="Low-latency Python FastAPI and Node.js inference endpoints, model routing, and fallback cascades for enterprise AI." />
|
||
<link rel="canonical" href="https://zettaisystems.com/services/ai-microservices" />
|
||
<meta property="og:type" content="website" />
|
||
<meta property="og:title" content="Custom AI Microservices & APIs | Zettai Systems" />
|
||
<meta property="og:description" content="FastAPI and Node.js inference endpoints with model routing and fallback cascades." />
|
||
<meta property="og:url" content="https://zettaisystems.com/services/ai-microservices" />
|
||
<meta property="og:image" content="https://zettaisystems.com/assets/logos/icon-square.png" />
|
||
<meta name="theme-color" content="#005498" />
|
||
<link rel="icon" href="/assets/logos/favicon.png" type="image/png" />
|
||
<link rel="apple-touch-icon" href="/assets/logos/icon-square.png" />
|
||
<link rel="stylesheet" href="/css/bootstrap.min.css" />
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" />
|
||
<link rel="stylesheet" href="/css/aos.css" />
|
||
<link rel="stylesheet" href="/css/style.css" />
|
||
<script>
|
||
(function () {
|
||
try {
|
||
var t = localStorage.getItem("zs-theme");
|
||
if (!t) t = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
||
document.documentElement.setAttribute("data-theme", t);
|
||
var icon = document.querySelector('link[rel="icon"]');
|
||
if (icon) icon.href = "/assets/logos/" + (t === "dark" ? "favicon-dark.png" : "favicon.png");
|
||
} catch (e) {}
|
||
})();
|
||
</script>
|
||
</head>
|
||
<body data-page="service">
|
||
<div id="site-header"></div>
|
||
|
||
<main id="main">
|
||
<section class="page-hero">
|
||
<div class="page-net" aria-hidden="true">
|
||
<div class="page-net-grid"></div>
|
||
<canvas class="page-net-canvas"></canvas>
|
||
<div class="page-net-glow"></div>
|
||
</div>
|
||
<div class="container-zs page-hero-content" data-aos="fade-up">
|
||
<nav aria-label="Breadcrumb">
|
||
<ol class="breadcrumb-zs">
|
||
<li><a href="../">Home</a></li>
|
||
<li class="sep" aria-hidden="true">›</li>
|
||
<li><a href="../services">Services</a></li>
|
||
<li class="sep" aria-hidden="true">›</li>
|
||
<li aria-current="page">AI Microservices & APIs</li>
|
||
</ol>
|
||
</nav>
|
||
<div class="eyebrow">Track A · AI Products</div>
|
||
<h1>Custom AI Microservices & APIs</h1>
|
||
<p>Low-latency Python FastAPI and Node.js inference endpoints, with model routing and fallback cascades.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section">
|
||
<div class="container-zs">
|
||
<div class="row g-4 align-items-start">
|
||
<div class="col-lg-7" data-aos="fade-up">
|
||
<div class="eyebrow">Overview</div>
|
||
<h2 class="section-title">Inference as a product surface—not a notebook</h2>
|
||
<p class="text-muted-zs mb-3">We wrap models behind authenticated APIs your web, mobile, and ERP systems can call with timeouts, quotas, and structured JSON. Routing can send cheap tasks to one model and high-stakes tasks to another, with a fallback if an upstream provider fails.</p>
|
||
<p class="text-muted-zs mb-0">These services sit next to Agentic AI and Domain RAG: agents and search call your APIs; the APIs own latency, keys, and logging.</p>
|
||
</div>
|
||
<div class="col-lg-5" data-aos="fade-up" data-aos-delay="80">
|
||
<article class="card-zs">
|
||
<div class="icon-badge"><i class="bi bi-hdd-network"></i></div>
|
||
<h3>Good fit when you need</h3>
|
||
<ul class="benefit-list mt-3">
|
||
<li><i class="bi bi-check-circle-fill"></i><span>A stable inference contract for multiple client apps</span></li>
|
||
<li><i class="bi bi-check-circle-fill"></i><span>Model routing without rewriting every product screen</span></li>
|
||
<li><i class="bi bi-check-circle-fill"></i><span>Fallback when a vendor endpoint is slow or unavailable</span></li>
|
||
</ul>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section bg-soft">
|
||
<div class="container-zs">
|
||
<div class="section-header centered" data-aos="fade-up">
|
||
<div class="eyebrow">Capabilities</div>
|
||
<h2 class="section-title">What we implement</h2>
|
||
</div>
|
||
<div class="row g-4">
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up"><article class="card-zs"><div class="icon-badge"><i class="bi bi-lightning"></i></div><h3>FastAPI / Node endpoints</h3><p>Typed request/response schemas, auth, and p95 latency budgets you can measure.</p></article></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="80"><article class="card-zs"><div class="icon-badge"><i class="bi bi-signpost-split"></i></div><h3>Model routing</h3><p>Send traffic by task type, tenant, or cost—via LiteLLM-style gateways where they fit.</p></article></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="160"><article class="card-zs"><div class="icon-badge"><i class="bi bi-arrow-repeat"></i></div><h3>Fallback cascades</h3><p>Retry and degrade to a secondary model or cached result instead of a hard fail.</p></article></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up"><article class="card-zs"><div class="icon-badge"><i class="bi bi-key"></i></div><h3>Key & tenancy isolation</h3><p>Service identities per environment—not a shared key in a mobile binary.</p></article></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="80"><article class="card-zs"><div class="icon-badge"><i class="bi bi-graph-up"></i></div><h3>Telemetry</h3><p>Token, latency, and error traces that feed evaluation and cost reviews.</p></article></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="160"><article class="card-zs"><div class="icon-badge"><i class="bi bi-box-seam"></i></div><h3>Container delivery</h3><p>Docker-friendly packaging that slots into your CI/CD and Kubernetes path.</p></article></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section">
|
||
<div class="container-zs">
|
||
<div class="row g-4">
|
||
<div class="col-lg-5" data-aos="fade-up">
|
||
<div class="eyebrow">Benefits</div>
|
||
<h2 class="section-title">Why teams choose this path</h2>
|
||
</div>
|
||
<div class="col-lg-7" data-aos="fade-up" data-aos-delay="80">
|
||
<ul class="benefit-list">
|
||
<li><i class="bi bi-check-circle-fill"></i><span>Product teams call one API instead of four vendors</span></li>
|
||
<li><i class="bi bi-check-circle-fill"></i><span>You can swap models without rewriting Flutter or web clients</span></li>
|
||
<li><i class="bi bi-check-circle-fill"></i><span>Latency and cost become measurable SLOs</span></li>
|
||
<li><i class="bi bi-check-circle-fill"></i><span>Fits the Zettai Framework: lock the contract before traffic grows</span></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section bg-soft">
|
||
<div class="container-zs">
|
||
<div class="section-header centered" data-aos="fade-up">
|
||
<div class="eyebrow">Process</div>
|
||
<h2 class="section-title">How We Deliver</h2>
|
||
</div>
|
||
<div class="process-track">
|
||
<div class="process-step" data-aos="fade-up"><div class="process-num">01</div><h3>Contract</h3><p>Define payloads, SLOs, and which models may be used.</p></div>
|
||
<div class="process-step" data-aos="fade-up" data-aos-delay="50"><div class="process-num">02</div><h3>Build</h3><p>Stand up FastAPI or Node routes with auth and logging.</p></div>
|
||
<div class="process-step" data-aos="fade-up" data-aos-delay="100"><div class="process-num">03</div><h3>Route</h3><p>Add routing, fallbacks, and rate limits.</p></div>
|
||
<div class="process-step" data-aos="fade-up" data-aos-delay="150"><div class="process-num">04</div><h3>Load test</h3><p>Prove p95 under a realistic mix of calls.</p></div>
|
||
<div class="process-step" data-aos="fade-up" data-aos-delay="200"><div class="process-num">05</div><h3>Operate</h3><p>Hand over runbooks and cost dashboards.</p></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section">
|
||
<div class="container-zs">
|
||
<div class="section-header centered" data-aos="fade-up">
|
||
<div class="eyebrow">Technologies</div>
|
||
<h2 class="section-title">Tools We Work With</h2>
|
||
</div>
|
||
<div class="row g-4">
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up"><div class="tech-group"><h3>APIs</h3><div class="tech-pills"><span class="tech-pill">Python</span><span class="tech-pill">FastAPI</span><span class="tech-pill">Node.js</span><span class="tech-pill">Express</span><span class="tech-pill">REST/GraphQL</span></div></div></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="80"><div class="tech-group"><h3>Routing</h3><div class="tech-pills"><span class="tech-pill">LiteLLM</span><span class="tech-pill">Azure OpenAI</span><span class="tech-pill">AWS Bedrock</span></div></div></div>
|
||
<div class="col-md-6 col-lg-4" data-aos="fade-up" data-aos-delay="160"><div class="tech-group"><h3>Delivery</h3><div class="tech-pills"><span class="tech-pill">Docker</span><span class="tech-pill">CI/CD</span><span class="tech-pill">Evaluation</span></div></div></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section bg-soft">
|
||
<div class="container-zs">
|
||
<div class="section-header centered" data-aos="fade-up">
|
||
<div class="eyebrow">FAQ</div>
|
||
<h2 class="section-title">Common Questions</h2>
|
||
</div>
|
||
<div class="accordion accordion-zs" id="faq-ms">
|
||
<div class="accordion-item">
|
||
<h3 class="accordion-header">
|
||
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#faq-ms-0" aria-expanded="true" aria-controls="faq-ms-0">Do you host GPUs for us?</button>
|
||
</h3>
|
||
<div id="faq-ms-0" class="accordion-collapse collapse show" data-bs-parent="#faq-ms">
|
||
<div class="accordion-body">Often we front managed endpoints (Azure OpenAI, Bedrock, Vertex). Self-hosted vLLM or similar is scoped when you already have GPU capacity and ops ownership.</div>
|
||
</div>
|
||
</div>
|
||
<div class="accordion-item">
|
||
<h3 class="accordion-header">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq-ms-1" aria-expanded="false" aria-controls="faq-ms-1">Can existing CodeIgniter or Node apps call this?</button>
|
||
</h3>
|
||
<div id="faq-ms-1" class="accordion-collapse collapse" data-bs-parent="#faq-ms">
|
||
<div class="accordion-body">Yes. The point of the microservice is a stable HTTP contract those stacks already speak.</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="section-sm">
|
||
<div class="container-zs" data-aos="zoom-in">
|
||
<div class="cta-band d-flex flex-column flex-lg-row align-items-lg-center justify-content-between gap-3">
|
||
<div>
|
||
<h2 class="mb-2">Need inference behind a real API?</h2>
|
||
<p class="mb-0">We’ll sketch the contract, routing, and latency budget before a line of production traffic.</p>
|
||
</div>
|
||
<a class="btn-zs btn-zs-light" href="../contact">Consult with a Solutions Architect <span class="arrow">→</span></a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<div id="site-footer"></div>
|
||
<script>window.SITE_ROOT = "";</script>
|
||
<script src="/js/bootstrap.bundle.min.js"></script>
|
||
<script src="/js/aos.js"></script>
|
||
<script src="/js/main.js"></script>
|
||
</body>
|
||
</html>
|