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 语句进行训练¶
如果您选择手动训练,则无需连接到数据库。您可以将 train 函数与其他参数(如 ddl)一起使用
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 | 训练数据类型 | 问题 | 内容 | |
---|---|---|---|---|
0 | 15-doc | 文档 | 无 | 这是 PARTSUPP 表中的一个表。\n\n其 ... |
1 | 11-doc | 文档 | 无 | 这是 CUSTOMER 表中的一个表。\n\n其 ... |
2 | 14-doc | 文档 | 无 | 这是 ORDERS 表中的一个表。\n\n其 ... |
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\n其 ... |
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()