- CopilotKit์ ํ์คํ ์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ React ๊ธฐ๋ฐ ํ๋ก ํธ์๋ SDK
- AG-UI ํ๋กํ ์ฝ์ ์ฐฝ์์์ด์ 1st Party ํด๋ผ์ด์ธํธ โ AG-UI๋ฅผ ์ง์ ๋ง๋ ํ์ฌ
- Chat UI, Generative UI, Shared State, HITL ์ํฌํ๋ก๋ฅผ React ํ /์ปดํฌ๋ํธ๋ก ์ถ์ํํ์ฌ ์ ๊ณต
- LangGraph, CrewAI, Google ADK, AWS Strands ๋ฑ ๋ชจ๋ AG-UI ํธํ ๋ฐฑ์๋์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ MIT ์คํ์์ค
CopilotKit์ด ํด๊ฒฐํ๋ ค๋ ๋ฌธ์
์์ด์ ํธ ๋ฐฑ์๋๋ ์๋๋ฐ ํ๋ก ํธ์๋์์ ์ด๋ฅผ โ์ ๋๋กโ ๋ณด์ฌ์ฃผ๊ณ ์ ์ดํ๋ ๊ฒ์ ์ฌ์ ํ ๋ณต์กํ๋ค:
- ์คํธ๋ฆฌ๋ฐ ์ฑํ UI, ๋๊ตฌ ํธ์ถ ์๊ฐํ, ์ํ ๋๊ธฐํ๋ฅผ ๋งค๋ฒ ์ง์ ๊ตฌํํด์ผ ํจ
- ์์ด์ ํธ๊ฐ ์์ฑํ ๊ฒฐ๊ณผ๋ฅผ React ์ปดํฌ๋ํธ๋ก ๋ ๋๋งํ๋ ํ์ค ํจํด์ด ์์
- ์์ด์ ํธ ์คํ ์ค ์ฌ์ฉ์ ์น์ธ/ํธ์ง์ด ํ์ํ HITL ์ํฌํ๋ก๊ฐ ํ๋ก ํธ์๋์์ ๊น๋ค๋ก์
- ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ง๋ค ์ฐ๊ฒฐ ๋ฐฉ์์ด ๋ฌ๋ผ ํ๋ก ํธ์๋ ์ฝ๋๋ฅผ ์ฌ์์ฑํด์ผ ํจ
CopilotKit์ ์ด ๋ฌธ์ ๋ฅผ AG-UI ํ๋กํ ์ฝ ์์ React SDK๋ฅผ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋ค.
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- AG-UI๊ฐ ํ๋กํ ์ฝ(์ด๋ฒคํธ ํ์ค)์ด๋ผ๋ฉด, CopilotKit์ ๊ทธ ํ๋กํ ์ฝ ์์ ๊ตฌ์ถ๋ ๊ตฌํ์ฒด(React SDK + Runtime)
- AG-UI๋ง์ผ๋ก๋ ํ๋ก ํธ์๋๋ฅผ ๋ฐ๋ฐ๋ฅ๋ถํฐ ๋ง๋ค์ด์ผ ํ์ง๋ง, CopilotKit์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ์ ํ ์ ์ ๊ณต
- ํ๋กํ ์ฝ๊ณผ ๊ตฌํ์ฒด์ ๊ด๊ณ๋ฅผ ์ดํดํด์ผ ์์ด์ ํธ ์ฑ ์ค๊ณ ์ ์ฌ๋ฐ๋ฅธ ๋ ์ด์ด๋ฅผ ์ ํํ ์ ์์
AS-IS: AG-UI ํ๋กํ ์ฝ๋ง์ผ๋ก ์ง์ ๊ตฌํ
sequenceDiagram autonumber participant Dev as ๊ฐ๋ฐ์ participant FE as React Frontend participant AGUI as AG-UI Client participant Agent as AI Agent Dev->>FE: ์ฑํ UI ์ง์ ๊ตฌํ Dev->>FE: ์คํธ๋ฆฌ๋ฐ ํ์ฑ ๋ก์ง ๊ตฌํ Dev->>FE: ์ํ ๋๊ธฐํ ๋ก์ง ๊ตฌํ Dev->>FE: ๋๊ตฌ ํธ์ถ ๋ ๋๋ง ๊ตฌํ Dev->>FE: HITL ์น์ธ UI ๊ตฌํ FE->>AGUI: HttpAgent ์ง์ ์ฐ๊ฒฐ AGUI->>Agent: runAgent(input) Agent-->>AGUI: BaseEvent stream AGUI-->>FE: ์ด๋ฒคํธ ์๋ ์ฒ๋ฆฌ Note over Dev,FE: ๋ชจ๋ UI/๋ก์ง์<br/>๋ฐ๋ฐ๋ฅ๋ถํฐ ๊ตฌํ
TO-BE: CopilotKit SDK ์ฌ์ฉ
sequenceDiagram autonumber participant Dev as ๊ฐ๋ฐ์ participant CK as CopilotKit participant RT as Copilot Runtime participant Agent as AI Agent Dev->>CK: CopilotSidebar + useAgent Note over Dev,CK: 3์ค๋ก ์ฑํ UI ์์ฑ CK->>RT: AG-UI ์ด๋ฒคํธ (์๋) RT->>Agent: ๋ผ์ฐํ + ์ธ์ฆ + ๋ฏธ๋ค์จ์ด Agent-->>RT: ๋ค์ดํฐ๋ธ ์ด๋ฒคํธ RT-->>CK: AG-UI ํ์ค ์ด๋ฒคํธ CK-->>CK: ์๋ ์คํธ๋ฆฌ๋ฐ ๋ ๋๋ง CK-->>CK: Generative UI ์๋ ๋ง์ดํธ CK-->>CK: Shared State ๋๊ธฐํ Note over Dev,CK: UI/์ํ/์ธ์ฆ์<br/>SDK๊ฐ ์ฒ๋ฆฌ
์ํคํ ์ฒ
graph TB subgraph "Frontend - React" A["CopilotKit Provider"] B["CopilotSidebar / CopilotPopup"] C["useAgent / useCoAgent"] D["useCopilotAction (Frontend Tools)"] E["Generative UI Components"] end subgraph "Backend" F["Copilot Runtime"] G["AG-UI Middleware"] H["Agent Router"] end subgraph "Agent Backends" I["LangGraph"] J["CrewAI"] K["Google ADK"] L["Built-in Agent"] end A --> B A --> C A --> D A --> E B --> F C --> F F --> G G --> H H --> I H --> J H --> K H --> L
ํต์ฌ ๊ตฌ์ฑ ์์
| ๋ ์ด์ด | ๊ตฌ์ฑ ์์ | ์ญํ |
|---|---|---|
| Provider | <CopilotKit> | ์ต์์ ์ปจํ
์คํธ. runtimeUrl๋ก Runtime ์ฐ๊ฒฐ |
| Prebuilt UI | <CopilotSidebar>, <CopilotPopup> | ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฑํ ์ปดํฌ๋ํธ |
| Hooks | useAgent, useCoAgent | ์์ด์ ํธ ์ํ ์ ๊ทผยท์ ์ด. AG-UI ์์ ์ง์ ์์น |
| Frontend Tools | useCopilotAction | ์์ด์ ํธ โ ํ๋ก ํธ์๋ ์ก์ ํธ๋์คํ |
| Generative UI | Tool Rendering, State Rendering | ์์ด์ ํธ ์ถ๋ ฅ์ React ์ปดํฌ๋ํธ๋ก ๋ ๋๋ง |
| Runtime | CopilotRuntime | ์๋ฒ์ฌ์ด๋ ์๋ํฌ์ธํธ. ์ธ์ฆ, ๋ผ์ฐํ , ๋ฏธ๋ค์จ์ด |
์ฃผ์ ๊ธฐ๋ฅ
1. Chat UI (ํ๋ฆฌ๋นํธ ์ปดํฌ๋ํธ)
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-core/v2";
import "@copilotkit/react-ui/v2/styles.css";
export default function App() {
return (
<CopilotKit runtimeUrl="/api/copilotkit">
<YourApp />
<CopilotSidebar />
</CopilotKit>
);
}์คํธ๋ฆฌ๋ฐ, ๋๊ตฌ ํธ์ถ, ์์ด์ ํธ ์๋ต์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ์์ฑํ ์ฑํ UI.
2. useAgent ํ
const { agent } = useAgent({ agentId: "my_agent" });
// ์์ด์ ํธ ์ํ ์ฝ๊ธฐ/์ฐ๊ธฐ
return (
<div>
<h1>{agent.state.city}</h1>
<button onClick={() => agent.setState({ city: "NYC" })}>
Set City
</button>
</div>
);useCoAgent์ ์์ ํธํ. AG-UI ์์ ์ง์ ์์นํ์ฌ ์์ด์ ํธ ์ฐ๊ฒฐ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ ์ด.
3. Generative UI (3๊ฐ์ง ํ์ )
| ํ์ | ์ค๋ช | ํ๋กํ ์ฝ |
|---|---|---|
| Static | ์ฑ์ด ์ ์ดํ๋ ์์ ์ ์ปดํฌ๋ํธ ๋ ๋๋ง | AG-UI |
| Declarative | ์์ด์ ํธ๊ฐ UI ํธ๋ฆฌ ์ ์, ์ฑ์ด ๊ฒ์ฆยท๋ง์ดํธ | A2UI |
| Open-Ended | MCP Apps, Open JSON UI | MCP |
4. Copilot Runtime
์๋ฒ์ฌ์ด๋ ๋ฐฑ์๋ ๋ ์ด์ด:
- ์ธ์ฆ/๋ณด์: API ํค๋ฅผ ์๋ฒ์ ๋ณด๊ด, ํด๋ผ์ด์ธํธ ๋ ธ์ถ ๋ฐฉ์ง
- Agent Routing: ๋ณต์ ์์ด์ ํธ ์๋ ํ์ยท๋ผ์ฐํ
(
"default"์์ด์ ํธ ์ง์) - AG-UI Middleware: ๋ก๊น , ๊ฐ๋๋ ์ผ, ์์ฒญ ๋ณํ์ ์๋ฒ์์ ์คํ
- Built-in Middleware: A2UI, MCP Apps๋ฅผ ์ค์ ํ ์ค๋ก ํ์ฑํ
const runtime = new CopilotRuntime({
agents: {
"default": new HttpAgent({ url: "https://my-agent.example.com" }),
},
a2ui: {}, // A2UI ์๋ ํ์ฑํ
mcpApps: { // MCP ์๋ฒ ์ฐ๊ฒฐ
servers: [
{ type: "http", url: "http://localhost:3108/mcp", serverId: "my-server" },
],
},
});AG-UI์์ ๊ด๊ณ
AG-UI Protocol (ํ์ค)
โโโ CopilotKit (๊ตฌํ์ฒด, 1st Party Client)
โโโ React SDK (ํ๋ก ํธ์๋ ํ
/์ปดํฌ๋ํธ)
โโโ Copilot Runtime (๋ฐฑ์๋ ๋ฏธ๋ค์จ์ด/๋ผ์ฐํ
)
โโโ Copilot Cloud (ํ๋ฆฌ๋ฏธ์: observability, threads)
- AG-UI๋ ํ๋กํ ์ฝ ์คํ โ ์ด๋ฒคํธ ํ์ , ํ๋ฆ ํจํด, ์ ์ก ๊ท๊ฒฉ์ ์ ์
- CopilotKit์ AG-UI ์์ SDK โ ํ๋กํ ์ฝ์ React ์ปดํฌ๋ํธ์ ์๋ฒ ๋ฐํ์์ผ๋ก ๊ตฌํ
- AG-UI ํ๋กํ ์ฝ ์์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ ์๋ ์์ง๋ง(
HttpAgent์ง์ ์ฐ๊ฒฐ), CopilotKit ์์ด๋ ์ธ์ฆ, ๋ผ์ฐํ , UI ์ปดํฌ๋ํธ๋ฅผ ๋ชจ๋ ์ง์ ๊ตฌํํด์ผ ํจ
์ง์ ํ๋ ์์ํฌ
| ํ๋ ์์ํฌ | ์ํ |
|---|---|
| Built-in Agent | โ (ํ๋ ์์ํฌ ๋ถํ์) |
| LangGraph | โ |
| Google ADK | โ |
| Microsoft Agent Framework | โ |
| AWS Strands | โ |
| Mastra | โ |
| Pydantic AI | โ |
| CrewAI Flows | โ |
| Agno, AG2, LlamaIndex | โ |