Vanna 구성하기 — LLM·DB·메모리·인증 설정
Vanna 구성하기 — LLM·DB·메모리·인증 설정
"자연어 질문 → SQL → 결과"를 만들려면 Vanna 에이전트를 구성해야 해요. 크게 네 가지를 정하면 돼요 — LLM, 데이터베이스, 에이전트 메모리, 사용자 인증. 이 예시는 Anthropic의 Claude와 SQLite를 조합한 흐름이에요.
패키지 설치
pip install 'vanna[anthropic,fastapi]'
LLM 구성
from vanna.integrations.anthropic import AnthropicLlmService
llm = AnthropicLlmService(
model="claude-sonnet-4-5",
api_key="sk-ant-..." # 또는 os.getenv("ANTHROPIC_API_KEY")
)
데이터베이스 구성
SQL 실행을 담당하는 도구를 등록해요. 여기선 SQLite의 RunSqlTool을 써요.
from vanna.tools import RunSqlTool
from vanna.integrations.sqlite import SqliteRunner
db_tool = RunSqlTool(
sql_runner=SqliteRunner(database_path="./your_database.db")
)
에이전트 메모리 구성
에이전트 메모리는 성공한 질문-SQL 쌍(더 일반적으로는 질문-도구인자 튜플)을 저장해서, 다음에 비슷한 질문이 오면 참고해 SQL을 처음부터 재생성하지 않아도 되게 해줘요. 이게 Vanna가 데이터베이스 스키마·업무 로직을 점점 학습하는 원리예요.
from vanna.tools.agent_memory import SaveQuestionToolArgsTool, SearchSavedCorrectToolUsesTool, SaveTextMemoryTool
from vanna.integrations.local.agent_memory import DemoAgentMemory
from vanna.core.registry import ToolRegistry
agent_memory = DemoAgentMemory(max_items=1000)
tools = ToolRegistry()
tools.register_local_tool(SaveQuestionToolArgsTool(), access_groups=['admin'])
tools.register_local_tool(SearchSavedCorrectToolUsesTool(), access_groups=['admin', 'user'])
tools.register_local_tool(SaveTextMemoryTool(), access_groups=['admin', 'user'])
사용자 인증 구성
사용자를 어떻게 식별·인증할지 정해요. 아래는 쿠키 기반으로 이메일에서 그룹 멤버십을 정하는 간단한 예시예요.
from vanna.core.user import UserResolver, User, RequestContext
class SimpleUserResolver(UserResolver):
async def resolve_user(self, request_context: RequestContext) -> User:
user_email = request_context.get_cookie('vanna_email') or '[email protected]'
group = 'admin' if user_email == '[email protected]' else 'user'
return User(id=user_email, email=user_email, group_memberships=[group])
user_resolver = SimpleUserResolver()
Agent로 묶기
구성 요소들을 Agent로 조립하면 완성돼요.
from vanna import Agent
from vanna.core.registry import ToolRegistry
from vanna.tools import VisualizeDataTool
# 등록된 tools + agent_memory + llm + user_resolver 로 Agent 생성
더 알아보기
다른 LLM 제공사(OpenAI·Azure·Gemini·Ollama)와 DB(SQLite 외) 조합은 공식 Configure 문서에서 선택해서 보면 돼요.