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

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

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

一、提出问题

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

相关文章

13.python学习笔记-API调用_python通过api获取数据

Web API是网站的一部分,分为客户端和服务端。客户端通过向特定URL发送请求到服务端,服务端响应客户端的请求返回数据,这种请求方式称为API调用。目前Web项目返回数据格式常用JSON。本章将介绍...

C# 中调用 Python 代码的实现方式

一、引言在软件开发中,经常会遇到需要结合不同编程语言优势的场景。C# 和 Python 作为两种广泛应用的语言,各自在某些领域有着独特的优势。C# 以其高性能和强大的类型系统在企业级应用中占据重要地位...

通过Python调用deepseek的API进行对话

import requests import json # DeepSeek 模型的 API 端点 API_URL = "https://api.deepseek.com/v1/chat/compl...

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

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

Python调用免费翻译API实现Excel文件批量翻译

工作中用到翻译软件是再正常不过的事情了,一般浏览外文网站翻译直接用谷歌插件还好解决。如果有一个Excel文件,里面有上万条需要翻译的内容,不能使用百度或Google免费的文档功能,需要怎么解决呢?总不...

python调用热门的Kimi:利用 API 生成文本的强大工具

代码概述下面给定的 Python 代码展示了如何利用 Moonshot AI API 的 Kimi 模型生成文本。Kimi 是一个由 Moonshot AI 开发的多模态 AI 模型,擅长生成中文和英...