In [ ]:
%pip install vanna
In [2]:
import vanna as vn
登录¶
创建登录并获取API密钥就像输入您的电子邮件(在您运行此单元格后)并输入我们发送给您的代码一样简单。如果您没有看到代码,请检查您的垃圾邮件文件夹。
In [3]:
api_key = vn.get_api_key('my-email@example.com')
vn.set_api_key(api_key)
设置你的模型¶
您需要选择一个全局唯一的模型名称。尝试使用您的公司名称或其他唯一字符串。所有来自模型的数据都是隔离的——没有泄漏。
In [4]:
vn.set_model('my-model') # Enter your model name here. This is a globally unique identifier for your model.
使用DDL语句进行训练¶
如果您更喜欢手动训练,您不需要连接到数据库。您可以使用带有其他参数(如ddl)的train函数。
In [ ]:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
使用文档进行训练¶
有时您可能希望添加有关您的业务术语或定义的文档。
In [ ]:
vn.train(documentation="Our business defines OTIF score as the percentage of orders that are delivered on time and in full")
使用SQL进行训练¶
你也可以将SQL查询添加到你的训练数据中。如果你已经有一些现成的查询,这将非常有用。你可以直接从编辑器中复制并粘贴这些查询,开始生成新的SQL。
In [ ]:
vn.train(sql="SELECT * FROM my-table WHERE name = 'John Doe'")
查看训练数据¶
任何时候你都可以查看模型中包含的训练数据
In [7]:
vn.get_training_data()
Out[7]:
| id | training_data_type | question | content | |
|---|---|---|---|---|
| 0 | 15-doc | 文档 | 无 | 这是PARTSUPP表中的一个表。\n\n... |
| 1 | 11-doc | 文档 | 无 | 这是CUSTOMER表中的一个表。\n\n... |
| 2 | 14-doc | documentation | None | 这是ORDERS表中的一个表。\n\nfo... |
| 3 | 1244-sql | sql | 前10名客户的名称是什么? | SELECT c.c_name as customer_name\nFROM snowf... |
| 4 | 1242-sql | sql | 按总金额计算的前5名客户是哪些... | SELECT c.c_name AS customer_name, SUM(l.l_quan... |
| 5 | 17-doc | 文档 | 无 | 这是REGION表中的一个表。\n\nfo... |
| 6 | 16-doc | 文档 | 无 | 这是PART表中的一个表。\n\n以下... |
| 7 | 1243-sql | sql | 哪些是消费最高的前10名客户... | SELECT c.c_name as customer_name,\n sum(... |
| 8 | 1239-sql | sql | 基于他们的...,前100名客户是哪些 | SELECT c.c_name as customer_name,\n sum(... |
| 9 | 13-doc | 文档 | 无 | 这是SUPPLIER表中的一个表。\n\n... |
| 10 | 1241-sql | sql | 按总金额计算的前10名客户是哪些... | SELECT c.c_name as customer_name,\n sum(... |
| 11 | 12-doc | 文档 | 无 | 这是LINEITEM表中的一个表。\n\n... |
| 12 | 18-doc | 文档 | 无 | 这是NATION表中的一个表。\n\n该表... |
| 13 | 1248-sql | sql | 每个国家有多少客户? | SELECT n.n_name as country,\n count(*) a... |
| 14 | 1240-sql | sql | 每周的订单数量是多少? | SELECT date_trunc('week', o_orderdate) as week... |
移除训练数据¶
如果您错误地添加了一些训练数据,您可以将其删除。模型性能直接与训练数据的质量相关。
In [ ]:
vn.remove_training_data(id='my-training-data-id')
提问¶
In [ ]:
vn.ask()