README.md•4.43 kB
# 自然语言转pandas (nl2pandas)
## 简介
自然语言转pandas (nl2pandas)这个组件通过理解对表格信息的提问,生成对应语义的可执行Python代码,主要使用Pandas库。它可以用于基于表格的查询,问答等多种场景。
### 功能介绍
自然语言转pandas (nl2pandas)根据用户的输入的表格信息和查询query,利用大语言模型的理解和生成能力,自动生成符合查询语义的一行或多行pandas代码。
### 特色优势
自然语言转pandas (nl2pandas),基于百度自研的大语言模型文心一言,提供内置的自然语言转pandas代码的能力,无需更多的prompt描述,即可生成对应的查询代码。
### 应用场景
自然语言转pandas (nl2pandas)可用对结构化表格数据的自然语言查询场景,问答场景等。
## 基本用法
这里是一个简单示例,展示如何使用自然语言转Pandas组件:
```python
import os
import appbuilder
# 请前往千帆AppBuilder官网创建密钥,流程详见:https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1%E3%80%81%E5%88%9B%E5%BB%BA%E5%AF%86%E9%92%A5
os.environ["APPBUILDER_TOKEN"] = "..."
#定义表格信息 假设有一个小学学校表格,包含学校名、所属地区、创办时间、类别、学生人数、教职工人数、教学班数量等列。列名后给出示例(例如清华附小是学校名的示例),以及列值类型(字符串类型、数字值类型),最后给出列名的解释。列之间使用换行符分隔。
table_info = '''表格列信息如下:\n学校名 : 清华附小 , 字符串类型,代表小学学校的名称\n所属地区 : 西城区 , 字符串类型,表示该小学学校所在的位置\n创办时间 : 1998 , 数字值类型,表示该小学学校的创办时间\n类别 : 公立小学 , 字符串类型,表示该小学学校所在的类别\n学生人数 : 2000 , 数字值类型,表示该小学学校的学生数量\n教职工人数 : 140 , 数字值类型,表示该小学学校的教职工数量\n教学班数量 : 122 , 数字值类型,表示该小学学校的教学班数量'''
#定义查询问题
query = "海淀区有哪些学校"
query = appbuilder.Message(query)
#定义并运行Nl2pandas实例,得到结果
nl2pandas = appbuilder.Nl2pandasComponent(model="Qianfan-Agent-Speed-8K")
answer = nl2pandas(query, table_info = table_info)
```
## 参数说明
### 鉴权配置
使用组件之前,请首先申请并设置鉴权参数,可参考[组件使用流程](https://cloud.baidu.com/doc/AppBuilder/s/Olq6grrt6#1%E3%80%81%E5%88%9B%E5%BB%BA%E5%AF%86%E9%92%A5)。
```python
# 设置环境中的TOKEN,以下示例略
os.environ["APPBUILDER_TOKEN"] = "bce-YOURTOKEN"
```
### 初始化参数
- `model`: 模型名称,用于指定要使用的千帆模型。
### 调用参数
|参数名称 |参数类型 |是否必须 |描述 |示例值|
|--------|--------|--------|----|------|
|query |Message | 是 | 查询语句,一般是针对表格信息的提问 |例如'海淀区的小学有哪些'。建议长度是50字以内。 |
|table_info |str | 是 | 表格信息,是表格列名以及对应列名的举例和释义 |例如:’表格列信息如下:\n学校名 : 清华附小 , 字符串类型,代表小学学校的名称\n所属地区 : 西城区 , 字符串类型,表示该小学学校所在的位置\n创办时间 : 1998 , 数字值类型,表示该小学学校的创办时间\n类别 : 公立小学 , 字符串类型,表示该小学学校所在的类别\n学生人数 : 2000 , 数字值类型,表示该小学学校的学生数量\n教职工人数 : 140 , 数字值类型,表示该小学学校的教职工数量\n教学班数量 : 122 , 数字值类型,表示该小学学校的教学班数量‘ |
|stream |bool | 否 |指定是否以流式形式返回响应。默认为 False。 |False |
|temperature |float | 否 |模型配置的温度参数,用于调整模型的生成概率。取值范围为 0.0 到 1.0,其中较低的值使生成更确定性,较高的值使生成更多样性。默认值为 1e-10。 |0.7 |
### 响应参数
|参数名称 |参数类型 |描述 |示例值|
|--------|--------|----|------|
|result |Message |返回结果|Message(content="df.loc[df['所属地区'] == "海淀区","学校名"]")|
## 高级用法
多个表格查询或跨表查询场景。
## 更新记录和贡献
- 初始版本发布(2023-10)