使用python调用文心一言API,实现批量提问

liftword3个月前 (02-09)技术文章45

在使用文心一言网页版时,一般都是输入一个提问,文心给出该提问的结果。但是,有时候我们需要批量向文心进行提问,而且这些提问的性质都是一样的,那么如何实现这个需求呢?

一、提出问题

例如:有一个表格,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的精准程度,所以,需要我们反复调整提问的内容,这个才是整个代码编写的核心。即使在网页版的文心一言,提问的内容也是最核心的,提问内容的精准程度决定了结果是否是我们所需。

相关文章

PySpark源码解析,用Python调用高效Scala接口,搞定大规模数据分析

机器之心专栏作者:汇量科技-陈绪相较于Scala语言而言,Python具有其独有的优势及广泛应用性,因此Spark也推出了PySpark,在框架上提供了利用Python语言的接口,为数据科学家使用该框...

使用python调用ChatGPT的API,打造属于自己的桌面智能助手

上期图文教程,我们介绍了ChatGPT的注册使用过程,并且使用ChatGPT生成了一个CNN卷积神经网络的代码,由于ChatGPT的官方只公布了GPT-3的API接口,因此我们基于ChatGPT 3代...

C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

前言每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Pytho...

使用Python调用ChatGPT API_python调用api函数

当前ChatGPT使用gpt-3.5和gpt-4等语言大模型,提供了强大的文本交互功能。用户也可以使用gpt-3.5或gpt-4提供的API接口构建自己的应用。本文简单的介绍一下使用Python调用C...

Python 使用 FastAPI 和 PostgreSQL 构建简单 API

最近一年公司也在卷 LLM 的应用项目,所以我们也从 goper =˃ Pythoner。 这一年使用最多的就是 Python 的 FastAPI 框架。下面一个简易项目让你快速玩转 Python A...