使用python调用文心一言API,实现批量提问
在使用文心一言网页版时,一般都是输入一个提问,文心给出该提问的结果。但是,有时候我们需要批量向文心进行提问,而且这些提问的性质都是一样的,那么如何实现这个需求呢?
一、提出问题
例如:有一个表格,1000行2列,第1列是卷宗号,第2列是文书的内容。诉求是:希望能够从每个文书里提取其中的彩礼金额。
当然,也可以将每个文书内容输入网页版的文心一言中,然后复制输出的结果:
由于有1000行,也就是1000个文书,像上面的一个个地输入,再复制结果,效率太低。
二、使用python调用文心API实现批量提问:准备
第1步:登录账号
注册或者输入百度智能云账号,如下所示:
之后,点击下面的“产品”菜单,再点击“千帆大模型平台”,进入后,点击“立即使用”。
第2步:新建一个应用
点击“立即使用”后,进入下面页面,点击左侧的“应用接入”,点击“创建应用”,具体选项,自己根据所需选择或者填写即可。之后,就在下面出现一行内容,即后面会用到的API Key和Secret Key。提示:注意保存好这2个key,切勿外泄,以免造成资金损失。
第3步:开通应用付费
之后,点击上面页面右上角的“计费管理”,进入下面的页面:
点击上面页面右侧的开通付费,注意选择所需的大模型,再开通该大模型的付费。不需要的大模型,无需去开通。只有开通了付费,后面才能调用该大模型进行批量提问。
当然,在开通大模型付费时,最好在下面页面中点击“财务”,充值10元或者少量资金。
完成以上步骤,我们就新建了一个大模型的应用实例,并开通了该大模型实例的付费,而且进行了充值。接下来,我们就通过编写代码,实现批量提问。
三、使用python调用文心API实现批量提问:编写代码
import requests
import json
import pandas as pd
API_KEY = '就是上面提到的API key,粘贴到这里即可'
SECRET_KEY = '就是上面提到的Secret key,粘贴到这里即可'
# 获取access token
def get_access_token():
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {'grant_type':'client_credentials',
'client_id':API_KEY,
'client_secret':SECRET_KEY }
rep = requests.post(url, params=params)
return rep.json().get('access_token')
# 获取提问的结果
def get_result(my_content):
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=" + get_access_token()
lb = [ {'role':'user', 'content':my_content} ]
zd = { 'messages':lb}
payload = json.dumps( zd )
headers = {"Content-Type":'application/json' }
rep = requests.request('POST',url, headers=headers, data=payload)
rep = rep.json()
return rep['result']
# 实现批量提问
def main():
ai_result = list()
df = pd.read_excel('d:/fqb/1.xlsx',header=None)
print('内容的行数:',df.shape[0])
for text in df.iloc[:,1]:
text = text.replace('\n', '')
content_prefix = '文本内容是:'
content_suffix = '。请从这段文本中提取彩礼的金额,注意只需要输出金额即可,不需要输出其它内容。'
my_content = content_prefix + text + content_suffix
result = get_result(my_content)
ai_result.append( result )
df['结果'] = ai_result
df.to_excel('d:/fqb/结果.xlsx',index=False)
print('完成')
if __name__ == '__main__':
main()
上面的content_prefix变量和content_suffix变量的内容,是提问的一部分内容,这个内容能够更加精准地从text中提取我们所需的金额。可以根据自己所需,修改这个内容。
【提示】content_prefix变量和content_suffix变量内容的精准程度,直接影响到提取的结果,所以,最好在测试版代码中先测试好这个内容前后缀内容,达到最佳的输出结果。
以上实现批量提问的代码:需要注意下面几点:
1、需要修改的地方:一是API key和secret key;二是content_prefix变量和content_suffix变量的内容;三是读取的表格路径和保存结果的路径(确保文件第2列是文书)。
2、上面代码没有实现报错处理,也就是返回结果报错的情况。可以继续修改代码,使其更加稳健。
3、上面代码不是测试版本,可以做一个测试版本的代码,在测试达到理想结果后,再使用批量正式版本,这样避免产生过多的付费。
四、使用python调用文心API实现批量提问:测试版测试
测试版主要代码如下:
1、测试1如下所示:
2、测试2如下所示:
3、测试3如下所示:
五、总结
由上面的测试结果,我们可以看到提取的效果还是不错的,说明文心千帆大模型的功能还是很强大的。不过,提取结果的准确程度,还是取决于我们提问prompt的精准程度,所以,需要我们反复调整提问的内容,这个才是整个代码编写的核心。即使在网页版的文心一言,提问的内容也是最核心的,提问内容的精准程度决定了结果是否是我们所需。