DAIL-SQL代码复现 --- Text-to-SQL Empowered by Large Language Models: ABenchmark Evaluation

自己遇到过的一些坑,想记录下,方便以后其他人复现更顺利。如有问题可私信联系,看到后会及时回复。

整个过程准备好apikey,中转的即可。

一、论文地址

《Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation》

https://github.com/BeachWang/DAIL-SQL

二、代码复现跑通

在github上拉去源码后,我是使用Pycharm打开的。然后根据README.md文件搭建环境。

设置环境时,您需要下载 stanford-cornlp 并解压到 ./third_party 文件夹。 接下来,您需要启动 coreNLP 服务器:

apt install default-jre
apt install default-jdk
cd third_party/stanford-corenlp-full-2018-10-05
nohup java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer &
cd ../../

此外,还要设置 Python 环境:(我使用的是python3.8,在anconda中自己创建好虚拟环境后再Pycharm中选择刚刚创建的虚拟环境,附上conda常用命令)

// 查看conda中所有虚拟环境
conda env list
// 创建虚拟环境 conda create -n [环境名称] python=[版本号]
conda create -n DAIL-SQL python=3.8
// 激活虚拟环境
conda activate [环境名称]
// 退出虚拟环境
conda deactivate [环境名称]
// 删除虚拟环境
conda remove -n [环境名称] --all
conda create -n DAIL-SQL python=3.8
conda activate DAIL-SQL
python -m pip install --upgrade pip
pip install -r requirements.txt
python nltk_downloader.py

在运行 python nltk_downloader.py时可能会遇到问题,可以自行下载好相应的文件,包括corpora里面的stopwords,tokenizers里面的punkt,下载链接:GitHub - nltk/nltk_data: NLTK Data

在packages中均可找到,这里也可以把tokenizers里面的punkt_tab也下载下来,后面评估的时候会用到。

然后继续:

Data Preprocess

python data_preprocess.py

Prompt Generation

我运行的是README.md文件里面提到的两种的第一种

python generate_question.py \
--data_type spider \
--split test \
--tokenizer gpt-3.5-turbo \
--max_seq_len 4096 \
--prompt_repr SQL \
--k_shot 9 \
--example_type QA \
--selector_type  EUCDISQUESTIONMASK

运行的时候如果遇到sentence-transformers/all-mpnet-base-v2错误,可以找到官网下载下来all-mpnet-base-v2然后在DAIL-SQL根目录创建文件夹senetence-transformers,将下载的all-mpnet-base-v2放到该目录下

Calling the LLM

Without voting:(其中openaikey是自己的apikey,我的prompt_dir是 ./dataset/process/SPIDER-TEST_SQL_9-SHOT_EUCDISQUESTIONMASK_QA-EXAMPLE_CTX-200_ANS-4096/)

python ask_llm.py \
--openai_api_key [your_openai_api_key]  \
--model gpt-4 \
--question [prompt_dir]

这个过程会消耗大量token

需要修改一部分代码:加入红框中圈出的代码

--proxy是我的代理(梯子),default填入代理的地址端口

--base_url是我的apikey的中转接口地址,在default中填入地址

然后就是

Running Example

这里同样也需要apikey,可以运行下面两个命令中的任意一个,其中mini的是运行生成两条sql语句,在 ./dataset/process/SPIDER-TEST_SQL_9-SHOT_EUCDISQUESTIONMASK_QA-EXAMPLE_CTX-200_ANS-4096/下面可以看到RESULT_MODEL-gpt-4.txt,里面有2条sql语句。

如果想要多生成一些sql语句,可以修改下图中--end_index的值,修改为几则生成几条sql语句(生成sql语句是需要一定量token的)

bash run_dail_sql_mini.sh [your_openai_api_key]

运行下面这个命令则会生成1034条sql语句,会消耗大量token,同样也是在上述路径下

bash run_dail_sql.sh [your_openai_api_key]

如在上述路径的文件里面出现如下sql语句,则run阶段成功执行,接下来便是评估。

三、评估

评估链接:https://github.com/taoyds/spider

进入后如下图,下载下面红框中圈出的两个.py文件,放在DAIL-SQL项目根目录,具体目录结构如上面展示sql文件的图片所示:

然后往下滑找到下图红框圈出的python命令,我是把python3改为python能成功运行。

命令:

python evaluation.py --gold [gold file] --pred [predicted file] --etype [evaluation type] --db [database dir] --table [table file]

其中--gold:dataset/spider/dev_gold.sql 

--pred:dataset/process/SPIDER-TEST_SQL_9-SHOT_EUCDISQUESTIONMASK_QA-EXAMPLE_CTX-200_ANS-4096/RESULTS_MODEL-gpt-4.txt

--etype:all

--db:dataset/spider/database

--table:dataset/spider/tables.json

具体路径根据自己项目来。

然后运行即可成功。

到这里恭喜你完成了DAIL-SQL的整体代码运行的复现。

### 关于面包板电源模块 MB102 的 USB 供电规格及兼容性 #### 1. **MB102 基本功能** 面包板电源模块 MB102 是一种常见的实验工具,主要用于为基于面包板的小型电子项目提供稳定的电压输出。它通常具有两路独立的稳压输出:一路为 5V 和另一路可调电压(一般范围为 3V 至 12V)。这种设计使得它可以满足多种芯片和传感器的不同工作电压需求。 #### 2. **USB 供电方式** MB102 支持通过 USB 接口供电,输入电压通常是标准的 5V DC[^1]。由于其内部集成了 LM7805 稳压器以及可调节电位器控制的直流-直流变换电路,因此即使输入来自电脑或其他低功率 USB 设备,也能稳定地向负载供应电力。不过需要注意的是,如果项目的功耗较高,则可能超出某些 USB 端口的最大电流能力(一般是 500mA),从而引起不稳定现象或者保护机制启动断开连接的情况发生。 #### 3. **兼容性分析** 该型号广泛适用于各种微控制器单元 (MCU),特别是那些像 Wemos D1 R32 这样可以通过杜邦线轻松接入并共享相同逻辑级别的系统[^2]。另外,在提到 Arduino Uno 板时也表明了良好的互操作性,因为两者均采用相似的标准接口定义与电气特性参数设置[^4]: - 对于需要 3.3V 工作环境下的组件来说,只需调整好对应跳线帽位置即可实现精准匹配; - 当涉及到更多外围扩展应用场合下,例如带有多重模拟信号采集任务的情形里,利用 MB102 提供干净无干扰的基础能源供给就显得尤为重要了[^3]。 综上所述,对于打算构建以单片机为核心的原型验证平台而言,选用具备良好声誉记录且易于获取配件支持服务链路上下游资源丰富的品牌产品——如这里讨论过的这款特定类型的配电装置不失为明智之举之一。 ```python # 示例 Python 代码展示如何检测硬件状态 import machine pin = machine.Pin(2, machine.Pin.IN) if pin.value() == 1: print("Power supply is stable.") else: print("Check your connections and power source.") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值