GitHub - vanna-ai/vanna: ๐ค Chat with your SQL database ๐. Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval ๐.
์์ฝ
์์ธ ๋ด์ฉ
AI agent-based ์์คํ
์
๋๋ค. ์ด ๋ฒ์ ์ ํนํ ๊ธฐ์
ํ๊ฒฝ์์์ ๋ณด์, ํ์ฅ์ฑ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ค์ ์ ๋๊ณ ์ฌ์ค๊ณ๋์์ต๋๋ค.ํต์ฌ ๋ฐฉ๋ฒ๋ก ๋ฐ ๊ธฐ์ ์ ํน์ง:
Vanna 2.0์ ํต์ฌ์ Agent ๊ธฐ๋ฐ ์ํคํ
์ฒ์ user-aware ์์คํ
์
๋๋ค.
Web Component()๋ฅผ ํตํด Your Server(FastAPI๋ก ๊ตฌํ ๊ฐ๋ฅ)๋ก ์ ๋ฌ๋ฉ๋๋ค.*
Your Server๋ ์์ฒญ์ ํฌํจ๋ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด(์: ์ฟ ํค, JWT)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก User Resolver๋ฅผ ์ฌ์ฉํ์ฌ User ๊ฐ์ฒด(ID, ์ด๋ฉ์ผ, ๊ทธ๋ฃน ๋ฉค๋ฒ์ญ ํฌํจ)๋ฅผ ์์ฑํฉ๋๋ค.* ์ด
User ๊ฐ์ฒด๋ Agent์๊ฒ ์ ๋ฌ๋์ด ๋ชจ๋ ํ์ ์์
์ context๋ก ํ์ฉ๋ฉ๋๋ค.*
Agent๋ LLM service (์: AnthropicLlmService)์ ToolRegistry๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ง์๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.RequestContext๋ก๋ถํฐ ์ฌ์ฉ์ ์ ์(User ๊ฐ์ฒด)์ ์ถ์ถํ๋ ๋ก์ง์ ์ ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์คํ
์ ์ฌ์ฉ์์ identity์ group memberships๋ฅผ ๋ช
ํํ ์ธ์งํฉ๋๋ค.* User-Aware Tools:
Agent๊ฐ ํธ์ถํ๋ ๋ชจ๋ Tool์ ToolContext๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ๋ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด, SQL ์คํ์ ๋ด๋นํ๋ RunSqlTool์ ์ฌ์ฉ์์ ๊ถํ(group memberships)์ ๊ธฐ๋ฐ์ผ๋ก row-level security๋ฅผ ์๋ ์ ์ฉํ์ฌ ํด๋น ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ ๋ฐ์ดํฐ๋ง ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ํฌํจํ๋๋ก ํํฐ๋งํฉ๋๋ค. ์ฌ์ฉ์ ์ ์ Tool ๋ํ access_groups ์์ฑ์ ํตํด ์ ๊ทผ ๊ถํ์ ์ ์ํ๊ณ , execute ๋ฉ์๋ ๋ด์์ user ์ ๋ณด๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.* Enterprise Security Features:
User-awareness๋ audit logs(์ฌ์ฉ์๋ณ ์ฟผ๋ฆฌ ์ถ์ ), rate limiting(์ฌ์ฉ์๋ณ ์ฟผํฐ ๊ด๋ฆฌ), content filtering ๋ฑ ๋ค์ํ ๋ณด์ ๊ธฐ๋ฅ์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค.Agent๋ ์ฟผ๋ฆฌ ์คํ ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ Streaming Components ํํ๋ก Web Component๋ก ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ Progress Updates, SQL Code Block(๊ด๋ฆฌ์์๊ฒ๋ง ํ์ ๊ฐ๋ฅ), Interactive Data Table, Charts(Plotly ๊ธฐ๋ฐ ์๊ฐํ), ๊ทธ๋ฆฌ๊ณ Natural Language Summary๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด๋ Server-Sent Events (SSE)๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.Tool ํด๋์ค๋ฅผ ์์๋ฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๋ ์๋ก์ด Tool์ ์ ์ํ๊ณ Agent์ ๋ฑ๋กํ ์ ์์ต๋๋ค. ๊ฐ Tool์ pydantic ๊ธฐ๋ฐ์ args_schema๋ฅผ ์ ์ํ์ฌ LLM์ด ํธ์ถํ ๋ ํ์ํ ์ธ์๋ฅผ ๋ช
ํํ ํฉ๋๋ค. access_groups ์์ฑ์ ํตํด Tool์ ์ ๊ทผ ๊ถํ๋ ์ค์ ํ ์ ์์ต๋๋ค.* Lifecycle Hooks: ์์ฒญ ์ฒ๋ฆฌ ๊ณผ์ ์ ํน์ ์ง์ (์: ์ฟผํฐ ํ์ธ, ์ปค์คํ ๋ก๊น , ์ฝํ ์ธ ํํฐ๋ง)์ ์ฌ์ฉ์ ์ ์ ๋ก์ง์ ์ฝ์ ํ ์ ์๋
hooks๋ฅผ ์ ๊ณตํฉ๋๋ค.* LLM Middlewares:
LLM ํธ์ถ ์ ํ์ ์บ์ฑ, ํ๋กฌํํธ ์์ง๋์ด๋ง, ๋น์ฉ ์ถ์ ๋ฑ์ ๊ตฌํํ ์ ์๋ middleware ๊ณ์ธต์ ์ง์ํฉ๋๋ค.* Observability: ๋ด์ฅ๋
tracing ๋ฐ metrics ํตํฉ์ ํตํด ์์คํ
์ ๋์์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.์ํคํ ์ฒ ํ๋ฆ ์์ฝ:
User๋ Web Component()๋ฅผ ํตํด ์์ฐ์ด ์ง๋ฌธ์ ํฉ๋๋ค. ์ด ์ง๋ฌธ์ ์ธ์ฆ ์ ๋ณด์ ํจ๊ป Your Server๋ก POST ์์ฒญ๋ฉ๋๋ค. Your Server๋ User Resolver๋ฅผ ํตํด ์ฌ์ฉ์(User)๋ฅผ ์๋ณํ๊ณ , ์ด ์ ๋ณด๋ฅผ Agent์๊ฒ ์ ๋ฌํฉ๋๋ค. Agent๋ ์๋ณ๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก Tools(์: RunSqlTool)๋ฅผ ํธ์ถํ์ฌ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค. ์ด๋ Tools๋ ์ฌ์ฉ์์ ๊ถํ์ ๋ฐ๋ผ row-level security๋ฅผ ์ ์ฉํ์ฌ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ ์ดํฉ๋๋ค. ์ต์ข
์ ์ผ๋ก Agent๋ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ(Table, Chart, Summary)๋ฅผ Web Component๋ก ์คํธ๋ฆฌ๋ฐํ๊ณ , Web Component๋ ์ด๋ฅผ ์ฌ์ฉ์์๊ฒ beautiful UI๋ก ํ์ํฉ๋๋ค.
Vanna 2.0์ ์ด๋ฌํ agent-based ๋ฐ user-aware ์ค๊ณ๋ฅผ ํตํด ๋ค์ํ LLM ๋ฐ Database์ ํธํ๋๋ฉฐ, ๊ธฐ์กด ์ธ์ฆ ์์คํ
๊ณผ ์ฝ๊ฒ ํตํฉ๋์ด ๋ฐ์ดํฐ ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์
, ๋ฉํฐํ
๋ํธ SaaS, ๋๋ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์์ natural language interface ๊ตฌ์ถ์ ์ ํฉํฉ๋๋ค.