微信扫码
与创始人交个朋友
我要投稿
AI工具让之前的不可能变成可能,曾经看过罗永浩的一次发布会,现场展示语音交互操作excel,结果演砸了,每逢demo必挂,IT界的著名定律依然有效。
现在,借助大语言模型,LangChain,我们可以把这件事情往前推进一步,使用LangChain和MiniMax构建智能体,通过自然语言跟数据库交互,查询数据。
# 建表
import sqlite3
# Connect to database
conn = sqlite3.connect('demo.db')
cursor = conn.cursor()
#Create table
query = '''
CREATE TABLE amazon_sales (
uniqId VARCHAR(255),
productName VARCHAR(255),
brandName VARCHAR(255),
Asin VARCHAR(255),
category INTEGER,
upcEanCode VARCHAR(255),
listPrice VARCHAR(255),
sellingPrice VARCHAR(255),
Quantity VARCHAR(255),
modelNum VARCHAR(255),
aboutProduct VARCHAR(255)
);
'''
cursor.execute(query)
使用pandas读取csv,并写入sqlite:
import pandas as pd
df = pd.read_csv('marketing_sample.csv')
df = df[df.columns[:11]] # 仅取前11列数据
df.columns = [
'uniqId', 'productName', 'brandName', 'asin', 'category',
'upcEanCode', 'listPrice', 'sellingPrice', 'Quantity',
'modelNum', 'aboutProduct'
]
#Import the csv into database
df.to_sql('amazon_sales', conn, if_exists='append', index=False)
conn.close()
申请地址,https://api.minimax.chat/,申请后,账号内会赠送75元接口使用费,这波羊毛是薅一次的。
注册完成minimax后,记录GROUPID和APPKEY,我们使用LangChain的试验包完成主体代码。
from langchain_community.llms import Minimax
# Load the model, 填充你自己的key和groupid
MINMAXAPIKEY = ''
MINMAXGROUPID = ''
llm = Minimax(minimax_api_key=MINMAXAPIKEY, minimax_group_id=MINMAXGROUPID)
# Prompt the model,验证接口可用
response = minimax.invoke("What is the difference between panda and bear?")
print(response)
from langchain.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain
# 数据库链接
db = SQLDatabase.from_uri("sqlite:///demo.db")
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
到此开发已经完成,接下来看看交互效果怎么样。
db_chain.run('what is the productName for uniqId 4c69b61db1fc16e7013b43fc926e502d?')
db_chain.run('不同的productName有多少,如果数量超过10条数据,仅返回数量?')
给的结果竟然是英文的,有些诡异。再看下原生SQL返回的结果,对比了结果是一致的。
cursor.execute('select count(distinct productName) from amazon_sales')
result = cursor.fetchall()
print(result)
>>> [(9930,)]
实际上chain预置了prompt,使用特定的prompt,以及table相关的上下文信息,跟LLM交互,拿到SQL后,执行。
这个过程可以通过打开LangChain的debug和verbose来观察到交互过程:
import langchain
langchain.verbose = True
langchain.debug = True
db_chain.run('what is the productName for uniqId 4c69b61db1fc16e7013b43fc926e502d?')
交互过程可以通过LangChain的Smith来图形化展示,解释的会更清楚一些,需要知道如何使用Smith的话
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-28
2024-04-26
2024-04-11
2024-08-21
2024-07-09
2024-07-18
2024-08-13
2024-10-25
2024-07-01
2024-06-17