vanna.base.base

class VannaBase(abc.ABC)

提供使用继承创建 ABC 的标准方法的辅助类。

config
run_sql_is_set
def generate_sql(self, question: str, **kwargs) -> str:
def generate_followup_questions(self, question: str, **kwargs) -> str:
def generate_questions(self, **kwargs) -> list[str]:

示例

vn.generate_questions()

生成可以向 Vanna.AI 提出的问题列表。

@abstractmethod
def generate_embedding(self, data: str, **kwargs) -> list[float]:
@abstractmethod
def get_similar_question_sql(self, question: str, **kwargs) -> list:
@abstractmethod
def add_question_sql(self, question: str, sql: str, **kwargs) -> str:
@abstractmethod
def add_ddl(self, ddl: str, **kwargs) -> str:
@abstractmethod
def add_documentation(self, doc: str, **kwargs) -> str:
@abstractmethod
def get_training_data(self, **kwargs) -> pandas.core.frame.DataFrame:
@abstractmethod
def remove_training_data(id: str, **kwargs) -> bool:
@abstractmethod
def get_sql_prompt( self, question: str, question_sql_list: list, ddl_list: list, doc_list: list, **kwargs):
@abstractmethod
def get_followup_questions_prompt( self, question: str, question_sql_list: list, ddl_list: list, doc_list: list, **kwargs):
@abstractmethod
def submit_prompt(self, prompt, **kwargs) -> str:
@abstractmethod
def generate_question(self, sql: str, **kwargs) -> str:
@abstractmethod
def generate_plotly_code( self, question: str = None, sql: str = None, df_metadata: str = None, **kwargs) -> str:
def connect_to_snowflake( self, account: str, username: str, password: str, database: str, role: Optional[str] = None, warehouse: Optional[str] = None):
def connect_to_sqlite(self, url: str):

连接到 SQLite 数据库。这只是一个设置 [vn.run_sql][vanna.run_sql] 的辅助函数。

参数
  • url (str): 要连接的数据库 URL。
返回

None

def connect_to_postgres( self, host: str = None, dbname: str = None, user: str = None, password: str = None, port: int = None):

使用 psycopg2 连接器连接到 postgres。这只是一个设置 [vn.run_sql][vanna.run_sql] 的辅助函数。示例:

vn.connect_to_postgres(
    host="myhost",
    dbname="mydatabase",
    user="myuser",
    password="mypassword",
    port=5432
)
参数
  • host (str): postgres 主机。
  • dbname (str): postgres 数据库名称。
  • user (str): postgres 用户。
  • password (str): postgres 密码。
  • port (int): postgres 端口。
def connect_to_bigquery(self, cred_file_path: str = None, project_id: str = None):

使用 bigquery 连接器连接到 gcs。这只是一个设置 [vn.run_sql][vanna.run_sql] 的辅助函数。示例:

vn.connect_to_bigquery(
    project_id="myprojectid",
    cred_file_path="path/to/credentials.json",
)
参数
  • project_id (str): gcs 项目 ID。
  • cred_file_path (str): gcs 凭据文件路径
def run_sql(sql: str, **kwargs) -> pandas.core.frame.DataFrame:
def ask( self, question: Optional[str] = None, print_results: bool = True, auto_train: bool = True) -> Optional[Tuple[Optional[str], Optional[pandas.core.frame.DataFrame], Optional[plotly.graph_objs._figure.Figure]]]:
def train( self, question: str = None, sql: str = None, ddl: str = None, documentation: str = None, plan: vanna.types.TrainingPlan = None) -> str:

示例

vn.train()

使用问题及其相应的 SQL 查询训练 Vanna.AI。如果您不带参数调用它,它将检查您是否连接到数据库,并尝试训练该数据库的元数据。如果您使用 sql 参数调用它,则等同于 [add_sql()][vanna.add_sql]。如果您使用 ddl 参数调用它,则等同于 [add_ddl()][vanna.add_ddl]。如果您使用 documentation 参数调用它,则等同于 [add_documentation()][vanna.add_documentation]。此外,您可以传递一个 [TrainingPlan][vanna.TrainingPlan] 对象。使用 [vn.get_training_plan_experimental()][vanna.get_training_plan_experimental] 获取训练计划。

参数
  • question (str): 用于训练的问题。
  • sql (str): 用于训练的 SQL 查询。
  • ddl (str): DDL 语句。
  • documentation (str): 用于训练的文档。
  • plan (TrainingPlan): 用于训练的训练计划。
def get_training_plan_generic(self, df) -> vanna.types.TrainingPlan:
def get_training_plan_snowflake( self, filter_databases: Optional[List[str]] = None, filter_schemas: Optional[List[str]] = None, include_information_schema: bool = False, use_historical_queries: bool = True) -> vanna.types.TrainingPlan:
def get_plotly_figure( self, plotly_code: str, df: pandas.core.frame.DataFrame, dark_mode: bool = True) -> plotly.graph_objs._figure.Figure:

示例

fig = vn.get_plotly_figure(
    plotly_code="fig = px.bar(df, x='name', y='salary')",
    df=df
)
fig.show()

从数据框和 Plotly 代码获取 Plotly 图形。

参数
  • df (pd.DataFrame): 要使用的数据框。
  • plotly_code (str): 要使用的 Plotly 代码。
返回

plotly.graph_objs.Figure: Plotly 图形。

class SplitStorage(VannaBase)

提供使用继承创建 ABC 的标准方法的辅助类。

def get_similar_question_sql(self, embedding: str, **kwargs) -> list:
@abstractmethod
def store_question_sql_embedding(self, embedding: str, **kwargs) -> str:
@abstractmethod
def store_ddl_embedding(self, embedding: str, **kwargs) -> str:
@abstractmethod
def store_documentation_embedding(self, embedding: str, **kwargs) -> str:
@abstractmethod
def get_similar_question_sql_ids(self, embedding: str, **kwargs) -> list:
@abstractmethod
def get_question_sql(self, question_sql_ids: list, **kwargs) -> list:
@abstractmethod
def get_documentation(self, doc_ids: list, **kwargs) -> list:
@abstractmethod
def get_ddl(self, ddl_ids: list, **kwargs) -> list: