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

 注:在做项目的时候需要调用文心一言,发现网上的版本很乱,基本都止步在官方文档的代码上,所以写了一篇博客来记录自己的尝试实现了对文心一言的循环调用和自定义询问,本篇文章不需要有任何对api的基础知识,代码全部成功运行,并引用官方文档,祝大家成功实现自己的调用

预置准备部分 


  • 注册百度千帆平台账户,并注册api

    1. 文心一言的使用需要注册一个百度账户,可以使用百度网盘的账户进行登录百度智能云-登录 (baidu.com)
    2. 申请以后,进入文心千帆大模型操作百度智能云控制台 (baidu.com)
    3. 选择右侧边栏的应用接入,再点击创建应用就可以申请一个api了
    4. 创建过程中只需要填写当前api的名称以及描述,默认所有服务都是勾选的(对api的使用没有任何影响)
    5. 创建成功后会返回到应用接入的界面,记录下此时AppID、API Key、Secret Key
  • 配置api,开通服务接口

        1.点击控制台右上角的计费管理开通服务

       注意文心一言的api的调用是需要付费的,并且提供多个大模型可以根据自己的选择进行开通,博主只开通了  ERNIE-Bot-turbo大模型公有云在线调用服务和ERNIE-Bot大模型公有云在线调用服务,不同服务的差别可以参考API列表API列表 - 千帆大模型平台 | 百度智能云文档 (baidu.com)

  •  python装配库

    • 下载requsets库
    • 下载json库

         


程序编写部分

  • 获取Acees Token:

    1. 需要通过Acess Token来访问文心一言,注意:access_token默认有效期30天,生产环境注意及时刷新。可参考官方文档获取access_token - 千帆大模型平台 | 百度智能云文档 (baidu.com)
      import requests
      import jsondef main():# client id = API Key, client_secret = Secret Key 修改成自己的API Key 和Sercet Keyclient_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()#会再终端打印一行文本即acess token
    2. 根据终端打印的Acess Token获取数据,记录其中的refresh_tolen(不用抄下来这一步是为了让大家更好的理解接下来的get_acess_token()函数)

  •     实现基本调用

  1. 将refresh_token作为参数传入到调用程序中,现在就完成了最基本的使用,此时是默认的问题“你好”,message中的数据必须是奇数条,负责会报错
    import requests
    import json
    #修改成自己的api key和secret key
    API_KEY = "Kc8pXsRQ***TbbF"
    SECRET_KEY = "bgS856cVXiw5gj****IekgH4b2n"def main():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)def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):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}return str(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']来访问元素
      • import requests
        import json
        #修改成自己的api key和secret key
        API_KEY = "4YqbzGV59w******lBsaA1"
        SECRET_KEY = "3mM6ys******xDPnH0yDHlv"def main():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'])def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):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}return str(requests.post(url, params=params).json().get("access_token"))if __name__ == '__main__':main()
    • 问题:只能输入一次询问
      • 如果没有其它传感器的话传入信号,我们就可以使用一个永真循环来实现
        import requests
        import json
        #修改成自己的api key和secret key
        API_KEY = "4YqbzGV59w***GlBsaA1"
        SECRET_KEY = "3mM6ys4yAG58***QxDPnH0yDHlv"def main():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'])def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):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}return str(requests.post(url, params=params).json().get("access_token"))if __name__ == '__main__':main()
  • 最终结果 ,完结,撒花!!!

    import requests
    import json
    #修改成自己的api key和secret key
    API_KEY = "4Y***U3Hh1GlBsaA1"
    SECRET_KEY = "3mM6ys4yAG5***xDPnH0yDHlv"def main():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'])def get_access_token():"""使用 AK,SK 生成鉴权签名(Access Token):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}return str(requests.post(url, params=params).json().get("access_token"))if __name__ == '__main__':main()

         

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/472464.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VitePress-17- 配置- appearance 的作用详解

作用说明 appearance : 是进行主题模式的配置开关,决定了是否启用深色模式。 可选的配置值: true: 默认配置,可以切换为深色模式; false: 禁用主题切换,只使用默认的配置; dark: 默认使用深色模式&#xff…

[01] Vue2学习准备

目录 vue理解创建实例插值表达式 {{}}响应式特性 vue理解 Vue.js 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 创建实例 准备容器 <div id…

Crypto-RSA3

题目&#xff1a;&#xff08;BUUCTF在线评测 (buuoj.cn)&#xff09; 共模攻击 ​ 前提&#xff1a;有两组及以上的RSA加密过程&#xff0c;而且其中两次的m和n都是相同的&#xff0c;那么就可以在不计算出d而直接计算出m的值。 ​ 设模数为n&#xff0c;两个用户的公钥分别为…

机器学习——聚类问题

&#x1f4d5;参考&#xff1a;西瓜书ysu老师课件博客&#xff08;3&#xff09;聚类算法之DBSCAN算法 - 知乎 (zhihu.com) 目录 1.聚类任务 2.聚类算法的实现 2.1 划分式聚类方法 2.1.1 k均值算法 k均值算法基本原理&#xff1a; k均值算法算法流程&#xff1a; 2.2 基于…

优秀的电机驱动MCU:MM32SPIN360C

DC-DC电源布局注意点&#xff1a; 电源模块布局布线可提前下载芯片的datasheet&#xff08;数据表&#xff09;&#xff0c;按照推荐的布局和布线进行设计。 1) 芯片电源接近原则&#xff1a; 对于为芯片提供电压的开关电源&#xff0c;应确保它尽量靠近芯片放置。这样可以避…

【STM32 CubeMX】I2C查询方式

文章目录 前言一、CubeMX配置IIC二、查询方式的使用2.1 分析一种情况2.2 Master模式2.3 Mem模式 总结 前言 在STM32 CubeMX环境中&#xff0c;I2C&#xff08;Inter-Integrated Circuit&#xff09;通信协议的查询方式是一种简单而常见的通信方式。通过查询方式&#xff0c;微…

揭开Markdown的秘籍:引用|代码块|超链接

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 引用1.1 &#x1f514;引用1.2 &#x1f514;嵌套引用1.3 &…

ARM编译器5.06下载安装

ARM编译器5.06下载安装 1.官网下载 进入官方网站ARM Complier v5.06官网下载页面 进入后的界面为 往下翻&#xff0c;找到如图位置的5.06 for windows的文件&#xff0c;点击下载&#xff0c;下载时需要登录账号 2.安装 先解压下载的压缩文件&#xff0c;在installer文件夹里…

前端工程化面试题 | 11.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【每日一题】06 排序链表

问题描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 求解 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* sortList(struct ListNode* head) {struct…

【友塔笔试面试复盘】八边形取反问题

问题&#xff1a;一个八边形每条边都是0&#xff0c;现在有取反操作&#xff0c;选择一条边取反会同时把当前边和2个邻边取反&#xff08;如果是0变为1&#xff0c;如果是1变为0&#xff09; 现在问你怎么取反能使得八条边都变为1. 当时陷入了暴力递归漩涡&#xff0c;给出一个…

CSS的background 背景图片自动适应元素大小,实现img的默认效果 background-size:100% 100%;

CSS的background 背景图片自动适应元素大小,实现img的默认效果 background-size:100% 100%; 关键是background-size:100% 100%; background-size:100% 100%; background-size:100% 100%; background-size:contain; 保持纵横比, 容器部分可能空白background-size:cover; 保…