|
| 1 | +import Header from '@/components/Header'; |
| 2 | +import Footer from '@/components/Footer'; |
| 3 | + |
| 4 | +export default function Agents() { |
| 5 | + const agentPrimitives = [ |
| 6 | + { |
| 7 | + title: 'Skills', |
| 8 | + description: |
| 9 | + 'Versioned capabilities that define what an agent knows how to do. Defined in YAML or via the Studio IDE. Each skill has a clear input schema, output schema, and test suite.', |
| 10 | + }, |
| 11 | + { |
| 12 | + title: 'Tools', |
| 13 | + description: |
| 14 | + 'Functions that connect agents to the outside world — API calls, database queries, file I/O, shell commands, or any custom integration. Registered once, reused across agents.', |
| 15 | + }, |
| 16 | + { |
| 17 | + title: 'MCP Servers', |
| 18 | + description: |
| 19 | + 'Plug in entire tool ecosystems via the Model Context Protocol. Any MCP-compatible server exposes its tools directly to your agents.', |
| 20 | + }, |
| 21 | + { |
| 22 | + title: 'Sub-agents', |
| 23 | + description: |
| 24 | + 'Agents can delegate to other agents. Hierarchical architectures allow a reasoning model to orchestrate specialized sub-agents — each with its own tools, memory, and model.', |
| 25 | + }, |
| 26 | + { |
| 27 | + title: 'Models', |
| 28 | + description: |
| 29 | + 'Agents can use any model served through Surogate — models imported from HuggingFace, custom fine-tuned SLMs, or models from external APIs.', |
| 30 | + }, |
| 31 | + { |
| 32 | + title: 'Memory', |
| 33 | + description: |
| 34 | + 'Agents maintain context across steps. Memory operations are captured in execution traces and visible in the trace viewer.', |
| 35 | + }, |
| 36 | + ]; |
| 37 | + |
| 38 | + return ( |
| 39 | + <div className="bg-white text-zinc-950 antialiased overflow-x-hidden dark:bg-zinc-950 dark:text-zinc-100"> |
| 40 | + <Header /> |
| 41 | + <main> |
| 42 | + <section className="relative overflow-hidden bg-[var(--accent-purple)]"> |
| 43 | + <div className="mx-auto grid max-w-6xl gap-8 px-4 py-12 sm:gap-10 sm:py-14 md:grid-cols-2 md:py-20 items-center"> |
| 44 | + <div> |
| 45 | + <h1 className="text-3xl font-semibold tracking-tight text-white sm:text-4xl md:text-5xl"> |
| 46 | + Agents |
| 47 | + </h1> |
| 48 | + <p className="mt-4 text-base sm:text-lg md:text-xl text-white/90 leading-relaxed"> |
| 49 | + Surogate agents are composed from four primitives: skills, tools, models, and sub-agents. |
| 50 | + </p> |
| 51 | + <div className="mt-6 flex flex-wrap gap-2 text-xs"> |
| 52 | + <span className="rounded-full bg-white/10 px-3 py-1 text-white ring-1 ring-white/20"> |
| 53 | + Skills + Tools |
| 54 | + </span> |
| 55 | + <span className="rounded-full bg-white/10 px-3 py-1 text-white ring-1 ring-white/20"> |
| 56 | + MCP Integration |
| 57 | + </span> |
| 58 | + <span className="rounded-full bg-white/10 px-3 py-1 text-white ring-1 ring-white/20"> |
| 59 | + Execution Traces |
| 60 | + </span> |
| 61 | + <span className="rounded-full bg-white/10 px-3 py-1 text-white ring-1 ring-white/20"> |
| 62 | + Continuous Improvement |
| 63 | + </span> |
| 64 | + </div> |
| 65 | + </div> |
| 66 | + |
| 67 | + <div className="relative flex justify-center md:justify-end"> |
| 68 | + <div className="absolute -inset-8 -z-10 rounded-full bg-white/10 blur-3xl opacity-40" /> |
| 69 | + <img |
| 70 | + src="/surogate-mascot.svg" |
| 71 | + alt="Surogate mascot" |
| 72 | + width={917} |
| 73 | + height={917} |
| 74 | + className="h-auto max-w-xs w-full" |
| 75 | + /> |
| 76 | + </div> |
| 77 | + </div> |
| 78 | + </section> |
| 79 | + |
| 80 | + <section |
| 81 | + className="scroll-mt-24 border-t border-zinc-200 dark:border-white/10 bg-white/80 dark:bg-zinc-950/70" |
| 82 | + > |
| 83 | + <div className="mx-auto max-w-6xl px-4 py-12 sm:py-14"> |
| 84 | + <div className="mt-0 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3"> |
| 85 | + {agentPrimitives.map((item) => ( |
| 86 | + <div |
| 87 | + key={item.title} |
| 88 | + className="rounded-2xl border border-zinc-200/70 bg-white/70 p-5 dark:border-white/10 dark:bg-zinc-900/30" |
| 89 | + > |
| 90 | + <h3 className="text-sm font-semibold text-zinc-950 dark:text-white"> |
| 91 | + {item.title} |
| 92 | + </h3> |
| 93 | + <p className="mt-2 text-xs leading-relaxed text-zinc-700 dark:text-zinc-300"> |
| 94 | + {item.description} |
| 95 | + </p> |
| 96 | + </div> |
| 97 | + ))} |
| 98 | + </div> |
| 99 | + </div> |
| 100 | + </section> |
| 101 | + |
| 102 | + <section className="bg-white/95 dark:bg-zinc-950/70 border-t border-zinc-200 dark:border-white/10"> |
| 103 | + <div className="mx-auto max-w-6xl px-4 pt-16 pb-24 sm:pt-18 sm:pb-30"> |
| 104 | + <div className="mb-3 text-xs leading-relaxed text-zinc-950 dark:text-zinc-100"> |
| 105 | + <div className="font-bold">AGENT YAML EXAMPLE</div> |
| 106 | + </div> |
| 107 | + |
| 108 | + <pre className="whitespace-pre-wrap break-words rounded-2xl border border-zinc-200/70 bg-[var(--accent-purple)] p-5 text-xs leading-relaxed text-zinc-100 dark:border-white/10 dark:bg-[var(--accent-purple)] dark:text-zinc-100"> |
| 109 | +{String.raw`# agent.yaml |
| 110 | +name: contract-analyzer |
| 111 | +model: models/legal-slm-v2 |
| 112 | +
|
| 113 | +skills: |
| 114 | + - extract-obligations |
| 115 | + - classify-clauses |
| 116 | + - generate-summary |
| 117 | +
|
| 118 | +tools: |
| 119 | + - name: search-documents |
| 120 | + type: api |
| 121 | + endpoint: https://your-api/search |
| 122 | +
|
| 123 | +memory: enabled |
| 124 | +max_steps: 20`} |
| 125 | + </pre> |
| 126 | + </div> |
| 127 | + </section> |
| 128 | + |
| 129 | + <section className="relative overflow-hidden bg-[var(--accent-orange)] border-t border-black/10"> |
| 130 | + <img |
| 131 | + src="/heroBg.svg" |
| 132 | + alt="" |
| 133 | + width={1609} |
| 134 | + height={2527} |
| 135 | + className="pointer-events-none select-none absolute top-1/2 -translate-y-1/2 left-0 w-96 md:w-[500px] lg:w-[600px] h-auto" |
| 136 | + /> |
| 137 | + <div className="relative z-10 mx-auto max-w-6xl px-4 py-16 sm:py-20"> |
| 138 | + <div className="grid grid-cols-1 gap-10 md:grid-cols-2 items-start"> |
| 139 | + <div> |
| 140 | + <h2 className="text-xl sm:text-2xl font-semibold tracking-tight text-black"> |
| 141 | + OBSERVABILITY — every run is a trace |
| 142 | + </h2> |
| 143 | + <p className="mt-4 text-sm sm:text-base text-black/80 leading-relaxed"> |
| 144 | + Every agent execution generates a structured trace. Inspect it in the visual viewer, replay it step by step, or export it for analysis. |
| 145 | + </p> |
| 146 | + |
| 147 | + <ul className="mt-6 space-y-2 text-sm sm:text-base text-black/80"> |
| 148 | + <li className="flex gap-3"> |
| 149 | + <span className="mt-0.5 text-black/70">→</span> |
| 150 | + <span>LLM calls and responses — input prompt, output, latency, token count</span> |
| 151 | + </li> |
| 152 | + <li className="flex gap-3"> |
| 153 | + <span className="mt-0.5 text-black/70">→</span> |
| 154 | + <span>Tool invocations — which tool, what arguments, what was returned</span> |
| 155 | + </li> |
| 156 | + <li className="flex gap-3"> |
| 157 | + <span className="mt-0.5 text-black/70">→</span> |
| 158 | + <span>Sub-agent execution — full nested trace for every delegated task</span> |
| 159 | + </li> |
| 160 | + <li className="flex gap-3"> |
| 161 | + <span className="mt-0.5 text-black/70">→</span> |
| 162 | + <span>Skill execution steps — each stage of skill processing</span> |
| 163 | + </li> |
| 164 | + <li className="flex gap-3"> |
| 165 | + <span className="mt-0.5 text-black/70">→</span> |
| 166 | + <span>Memory operations — reads and writes</span> |
| 167 | + </li> |
| 168 | + <li className="flex gap-3"> |
| 169 | + <span className="mt-0.5 text-black/70">→</span> |
| 170 | + <span>Errors and runtime events — full stack with context</span> |
| 171 | + </li> |
| 172 | + </ul> |
| 173 | + </div> |
| 174 | + |
| 175 | + <div> |
| 176 | + <h2 className="text-xl sm:text-2xl font-semibold tracking-tight text-black"> |
| 177 | + THE IMPROVEMENT LOOP |
| 178 | + </h2> |
| 179 | + <p className="mt-4 text-sm sm:text-base text-black/80 leading-relaxed"> |
| 180 | + Agents in Surogate don't stay static. Every execution leaves a trace. Traces become training data. Training data produces Specialized Language Models (SLMs) — compact, fast models tuned to your specific agent workflows. |
| 181 | + </p> |
| 182 | + |
| 183 | + <ol className="mt-6 space-y-3 text-sm sm:text-base text-black/80 list-decimal list-inside"> |
| 184 | + <li>Collect execution traces from production</li> |
| 185 | + <li>Convert successful traces into training datasets</li> |
| 186 | + <li>Fine-tune an SLM on agent trajectories</li> |
| 187 | + <li>Evaluate the new model against benchmarks</li> |
| 188 | + <li>Promote to production — automatically or with approval gates</li> |
| 189 | + </ol> |
| 190 | + </div> |
| 191 | + </div> |
| 192 | + </div> |
| 193 | + </section> |
| 194 | + </main> |
| 195 | + <Footer /> |
| 196 | + </div> |
| 197 | + ); |
| 198 | +} |
| 199 | + |
0 commit comments