找回密码
 会员注册
查看: 26|回复: 0

文心一言API使用教程(python版)

[复制链接]

2

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-9-12 12:56:28 | 显示全部楼层 |阅读模式
注:在做项目的时候需要调用文心一言,发现网上的版本很乱,基本都止步在官方文档的代码上,所以写了一篇博客来记录自己的尝试实现了对文心一言的循环调用和自定义询问,本篇文章不需要有任何对api的基础知识,代码全部成功运行,并引用官方文档,祝大家成功实现自己的调用预置准备部分 注册百度千帆平台账户,并注册api文心一言的使用需要注册一个百度账户,可以使用百度网盘的账户进行登录百度智能云-登录(baidu.com)申请以后,进入文心千帆大模型操作百度智能云控制台(baidu.com)选择右侧边栏的应用接入,再点击创建应用就可以申请一个api了创建过程中只需要填写当前api的名称以及描述,默认所有服务都是勾选的(对api的使用没有任何影响)创建成功后会返回到应用接入的界面,记录下此时AppID、APIKey、SecretKey配置api,开通服务接口        1.点击控制台右上角的计费管理开通服务      注意文心一言的api的调用是需要付费的,并且提供多个大模型可以根据自己的选择进行开通,博主只开通了 ERNIE-Bot-turbo大模型公有云在线调用服务和ERNIE-Bot大模型公有云在线调用服务,不同服务的差别可以参考API列表API列表-千帆大模型平台|百度智能云文档(baidu.com) python装配库下载requsets库下载json库         程序编写部分获取AceesToken:需要通过AcessToken来访问文心一言,注意:access_token默认有效期30天,生产环境注意及时刷新。可参考官方文档获取access_token-千帆大模型平台|百度智能云文档(baidu.com)importrequestsimportjsondefmain():#clientid=APIKey,client_secret=SecretKey修改成自己的APIKey和SercetKeyclient_id="4YqbzGV59w6BU3Hh1GlBsaA1"client_secret="3mM6ys4yAG5j******v"url="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=4Y****saA1&client_secret=3mM6ys4yAG5j*****PnH0yDHlv"payload=""headers={'Content-Type':'application/json','Accept':'application/json'}response=requests.request("POST",url,headers=headers,data=payload)print(response.text)if__name__=='__main__':main()#会再终端打印一行文本即acesstoken根据终端打印的AcessToken获取数据,记录其中的refresh_tolen(不用抄下来这一步是为了让大家更好的理解接下来的get_acess_token()函数)  实现基本调用将refresh_token作为参数传入到调用程序中,现在就完成了最基本的使用,此时是默认的问题“你好”,message中的数据必须是奇数条,负责会报错importrequestsimportjson#修改成自己的apikey和secretkeyAPI_KEY="Kc8pXsRQ***TbbF"SECRET_KEY="bgS856cVXiw5gj****IekgH4b2n"defmain():url="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token="+get_access_token()#注意message必须是奇数条payload=json.dumps({"messages":[{"role":"user","content":"你好"}#,#{#"role":"assistant",#"content":"你好,有什么我可以帮助你的吗?"#}]})headers={'Content-Type':'application/json'}response=requests.request("POST",url,headers=headers,data=payload)print(response.text)defget_access_token():"""使用AK,SK生成鉴权签名(AccessToken):return:access_token,或是None(如果错误)"""url="https://aip.baidubce.com/oauth/2.0/token"params={"grant_type":"client_credentials","client_id":API_KEY,"client_secret":SECRET_KEY}returnstr(requests.post(url,params=params).json().get("access_token"))if__name__=='__main__':main() 程序升级部分 此部分需要一定的python基础,如json,requset等相关知识,可以自己在CSDN,博客园,菜鸟驿站和B站找相关教程,当然可以直接看最后的代码就是最终成品 问题:不能自定义问题的:设定一个输入字符串来解决将message中的"content“:”你好“换成s 问题:打印输出的内容存在不需要的部分:{"id":"as-nuhbvmdj8h","object":"chat.completion","created":1697125231,"result":"长沙有很多好玩的地方,以下是一些值得推荐的项目:\n\n*橘子洲:位于长沙市区对面的湘江中,是长沙必游的景点之一。这里有一片人工沙滩可以戏水游玩,还有毛泽东青年雕像、历史浮雕等可以参观。\n*岳麓山:位于长沙市区的岳麓山风景区是国家5A级旅游景区。这里有悠久的历史文化,拥有碑刻、古建筑、古植物、山水风光等各种景观,是长沙的一大标志性景点。\n*长沙IFS:这里以商场和写字楼为主,地下一楼有美食城,有丰富的长沙本地小吃。\n*湖南省博物馆:是湖南省最大的综合性历史博物馆,馆内珍藏着许多珍贵文物,记录了湖南的历史和文化。\n*天心阁:是长沙市区的标志性建筑之一,有着悠久的历史和文化背景。\n\n此外,长沙还有一些其他值得一游的地方,如黄兴广场、太平街、湖南省植物园等。这些地方都有各自独特的景观和特色,值得一探究竟。\n\n以上信息仅供参考,如有需要,建议您查阅官方资讯。","is_truncated":false,"need_clear_history":false,"usage":{"prompt_tokens":8,"completion_tokens":323,"total_tokens":331}}第一步:返回的response是一个response类型数据,我们可以用.json()将其转换成一个json类型第二步:观察到json的response是一个字典类型我们可以用['result']来访问元素importrequestsimportjson#修改成自己的apikey和secretkeyAPI_KEY="4YqbzGV59w******lBsaA1"SECRET_KEY="3mM6ys******xDPnH0yDHlv"defmain():url="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token="+get_access_token()s=input()#注意message必须是奇数条payload=json.dumps({"messages":[{"role":"user","content":s}]})headers={'Content-Type':'application/json'}res=requests.request("POST",url,headers=headers,data=payload).json()print(res['result'])defget_access_token():"""使用AK,SK生成鉴权签名(AccessToken):return:access_token,或是None(如果错误)"""url="https://aip.baidubce.com/oauth/2.0/token"params={"grant_type":"client_credentials","client_id":API_KEY,"client_secret":SECRET_KEY}returnstr(requests.post(url,params=params).json().get("access_token"))if__name__=='__main__':main()问题:只能输入一次询问如果没有其它传感器的话传入信号,我们就可以使用一个永真循环来实现importrequestsimportjson#修改成自己的apikey和secretkeyAPI_KEY="4YqbzGV59w***GlBsaA1"SECRET_KEY="3mM6ys4yAG58***QxDPnH0yDHlv"defmain():url="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token="+get_access_token()while(1):s=input()#注意message必须是奇数条payload=json.dumps({"messages":[{"role":"user","content":s}]})headers={'Content-Type':'application/json'}res=requests.request("POST",url,headers=headers,data=payload).json()print(res['result'])defget_access_token():"""使用AK,SK生成鉴权签名(AccessToken):return:access_token,或是None(如果错误)"""url="https://aip.baidubce.com/oauth/2.0/token"params={"grant_type":"client_credentials","client_id":API_KEY,"client_secret":SECRET_KEY}returnstr(requests.post(url,params=params).json().get("access_token"))if__name__=='__main__':main()最终结果,完结,撒花!!!importrequestsimportjson#修改成自己的apikey和secretkeyAPI_KEY="4Y***U3Hh1GlBsaA1"SECRET_KEY="3mM6ys4yAG5***xDPnH0yDHlv"defmain():url="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token="+get_access_token()while(1):s=input()#注意message必须是奇数条payload=json.dumps({"messages":[{"role":"user","content":s}]})headers={'Content-Type':'application/json'}res=requests.request("POST",url,headers=headers,data=payload).json()print(res['result'])defget_access_token():"""使用AK,SK生成鉴权签名(AccessToken):return:access_token,或是None(如果错误)"""url="https://aip.baidubce.com/oauth/2.0/token"params={"grant_type":"client_credentials","client_id":API_KEY,"client_secret":SECRET_KEY}returnstr(requests.post(url,params=params).json().get("access_token"))if__name__=='__main__':main()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 13:59 , Processed in 0.356154 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表