oneapi 準備
首先確保你有oneapi ,然后申請 kimi的api
需要去Moonshot AI - 開放平臺? ? ?
然后添加一個api key
然后打開oneapi的渠道界面,添加kimi。
然后點擊 測試, 如果能生成響應時間,就是配置正確。
然后創建令牌?http://xxx:3000/token? ?, 模型名是moonshot-v1-8k
然后復制token , token是sk開頭的一串密碼。
其他平臺接入也是類似操作, 不懂的讀者可以留言評論。
Vanna安裝使用
說明
Vanna是一個輕量的Python庫, 用來做nl2sql 。 它可以根據用戶的問題, 生成對應的sql 查詢語句。一般來說。vanna需要建表sql和一些常見的查詢sql。 然后vanna 會通過搜索你的sql 來模仿生成一個sql 。? (用prompt的形式)。
安裝庫
pip install vanna就可以了
然后執行以下代碼。
from openai import OpenAI
from vanna.openai.openai_chat import OpenAI_Chat
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
# zhipu
from zhipuai import ZhipuAI# oneapi kimi
#url,API_KEY,model_name = "http://10.106.153.12:3002/v1",'sk-NykXx0lml5gnMy6gEe8bA114BbB644C398Ac0d8b5a123d48','moonshot-v1-8k'
url,API_KEY,model_name = "http://10.106.153.11:9002/v1",'EMPTY', 'qwen2-7b-instruct'client = OpenAI(api_key=API_KEY,base_url=url,
)
def single_query(query):return [{"role": "user", "content": query}]def qwen_chat(client,model,history):# create a chat completion temperature=0.9,completion = client.chat.completions.create(model=model, max_tokens=512,messages=history)return completion.choices[0].message.content
# print the completion
# 用這一行測試是否能正常訪問 oneapi的接口
# print(qwen_chat(client,model_name,single_query('你好')))class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):def __init__(self, client=None, config=None):ChromaDB_VectorStore.__init__(self, config=config)OpenAI_Chat.__init__(self, client=client, config=config)vn = MyVanna(client=client, config={"model": model_name})
#vn.max_tokens = 1000
vn.temperature = 1
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY COMMENT '用戶ID',username VARCHAR(50) COMMENT '用戶名',email VARCHAR(100) COMMENT '電子郵件',age INT COMMENT '年齡',gender VARCHAR(10) COMMENT '性別(男/女)',city VARCHAR(50) COMMENT '城市'
) COMMENT='用戶信息表' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
""")
vn.train(ddl="CREATE TABLE IF NOT EXISTS consumption_record ( id INT PRIMARY KEY COMMENT '消費記錄ID',""user_id COMMENT '用戶id' ,item_id INT COMMENT '商品id',amount INT COMMENT '數量' ,consumption INT COMMENT '總消費'"") COMMENT='購買記錄' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ")
query = '男性用戶的總消費是多少'
res = vn.generate_sql(query)
print("#"*10)
print(query,res)
print("#"*10)
query = '男性用戶有多少個'
res = vn.generate_sql('男性用戶有多少個')print("#"*10)
print(query,res)
print("#"*10)
vanna的優勢是可以直接生成sql,不需要訪問你的數據表。 只需要sql 建表信息, 或者是一些已有的sql ,它可以從已有的sql中進行學習。