{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "53597c59-b248-4131-8fe0-b3617c38249c",
   "metadata": {},
   "outputs": [
    {
     "ename": "ModuleNotFoundError",
     "evalue": "No module named 'vanna.google'",
     "output_type": "error",
     "traceback": [
      "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
      "\u001b[31mModuleNotFoundError\u001b[39m                       Traceback (most recent call last)",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m      1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m vanna \u001b[38;5;28;01mas\u001b[39;00m vn\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m vanna.google \u001b[38;5;28;01mimport\u001b[39;00m GoogleGeminiChat\n\u001b[32m      3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m vanna.base \u001b[38;5;28;01mimport\u001b[39;00m VannaBase\n\u001b[32m      4\u001b[39m \n\u001b[32m      5\u001b[39m \u001b[38;5;66;03m# 1. Criamos um banco de vetores ultra-simples em memória (sem ChromaDB, sem Nuvem, sem Erros)\u001b[39;00m\n",
      "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'vanna.google'"
     ]
    }
   ],
   "source": [
    "import vanna as vn\n",
    "from vanna.google import GoogleGeminiChat\n",
    "from vanna.base import VannaBase\n",
    "\n",
    "# 1. Criamos um banco de vetores ultra-simples em memória (sem ChromaDB, sem Nuvem, sem Erros)\n",
    "class MyVanna(VannaBase, GoogleGeminiChat):\n",
    "    def __init__(self, config=None):\n",
    "        # Inicializa o Gemini diretamente\n",
    "        GoogleGeminiChat.__init__(self, config=config)\n",
    "        VannaBase.__init__(self, config=config)\n",
    "        \n",
    "        # Armazenamento simples em listas na memória do Python\n",
    "        self.ddl_list = []\n",
    "        self.queries_list = []\n",
    "\n",
    "    # Salva o DDL na memória\n",
    "    def add_ddl(self, ddl: str, **kwargs):\n",
    "        self.ddl_list.append(ddl)\n",
    "\n",
    "    # Salva as perguntas e respostas (Golden Queries) na memória\n",
    "    def add_question_sql(self, question: str, sql: str, **kwargs):\n",
    "        self.queries_list.append({\"question\": question, \"sql\": sql})\n",
    "\n",
    "    # Retorna os DDLs cadastrados para o Gemini usar no contexto\n",
    "    def get_related_ddl(self, question: str, **kwargs):\n",
    "        return self.ddl_list\n",
    "\n",
    "    # Retorna as queries de exemplo cadastradas para o Gemini usar de referência\n",
    "    def get_related_questions(self, question: str, **kwargs):\n",
    "        return self.queries_list\n",
    "\n",
    "# 2. Inicializamos o aplicativo com a sua chave do Gemini\n",
    "vn_app = MyVanna(config={\n",
    "    'api_key': 'SUA_API_KEY_DO_GEMINI_AQUI',\n",
    "    'model': 'gemini-1.5-flash'\n",
    "})\n",
    "\n",
    "# 3. Conectamos ao seu banco de dados Postgres\n",
    "try:\n",
    "    print(\"Tentando conectar ao banco Postgres...\")\n",
    "    vn_app.connect_to_postgres(\n",
    "       host='192.168.1.80',        # Endereço do seu banco\n",
    "        dbname='bdps55',      # Nome do banco de dados\n",
    "        user='postgres',      # Seu usuário do banco\n",
    "        password='ps@web',    # Sua senha\n",
    "        port=5432\n",
    "    )\n",
    "    \n",
    "    # 4. Testamos a conexão com o Postgres\n",
    "    df = vn_app.run_sql(\"SELECT 1 AS status_conexao;\")\n",
    "    if not df.empty and df['status_conexao'].iloc[0] == 1:\n",
    "        print(\"\\n✅ SUCESSO ABSOLUTO!\")\n",
    "        print(\"Ambiente limpo, Gemini pronto e Postgres conectado!\")\n",
    "        \n",
    "except Exception as e:\n",
    "    print(f\"\\n❌ Erro ao conectar ao Postgres: {e}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d8136e9c-9fc3-42d4-8736-8676ed3109ac",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
