当前位置: 首页 > news >正文

文心一言4.0(ERNIE-Bot-4)申请方法及简单调用代码示例

10月17日过后,估计很多人会看到类似的新闻,如图:

我看到这则新闻也是觉得非常感兴趣,于是本着“百闻不如一见”的实事求是的态度检索如何申请,没想到还真找到了ERNIE-Bot-4(俗称:文心一言4.0)的申请入口,如下:

  • 体验地址

企业用户/个人开发者:填写表单申请开通:百度智能云千帆大模型平台邀您测试 审核通过后即可免费调用千帆文心4.0API

  • API文档

ERNIE-Bot-4 - 千帆大模型平台 | 百度智能云文档


 

我本人是填写表单申请一天左右收到了“百度智能云”的短信通知我通过了申请,老样子,先上图:

通过之后即使不是很擅长调用接口来测试模型质量,百度智能云也会提供在线测试的入口方便我们测试,如图:

也是可以外接知识库或者调整各种参数的,还算便利,也提供了prompt模板作为参考。

如果我们不想每次都打开网站去测试,也可以在本地进行调用来测试,下面以python为例:

先在百度智能云控制台“应用接入”里创建应用,内容自己发挥,主要是我们需要的AppID,API Key以及Secret Key。

当然,我们需要开通一下对应接口的付费,我这里是只开通了ERNIE-Bot-4的付费,0.12¥/千tokens,跟其他模型比可能有点小贵,自费开通,为爱发电哈哈。

好了,万事具备,下面就是一个简单的多轮对话代码示例:

import requests
import json
import os
import pickleclass WenXinYiYanChat:def __init__(self, api_key, secret_key, user_id="这里输入你的APPID", file_name="history.pkl"):# 初始化方法,用于设置API密钥、用户ID、文件名等self.api_key = api_keyself.secret_key = secret_keyself.user_id = user_idself.file_name = file_nameself.access_token = self.get_access_token()self.messages = []self.is_paused = Falsedef get_access_token(self):# 获取access_token,用于后续的API调用url = "https://aip.baidubce.com/oauth/2.0/token"params = {'grant_type': 'client_credentials','client_id': self.api_key,'client_secret': self.secret_key}headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.post(url, headers=headers, params=params)return response.json().get("access_token")def chat(self, user_message):# 进行对话的主要方法if self.is_paused:return "对话目前已暂停。请先恢复对话再继续。"self.messages.append({"role": "user", "content": user_message})payload = {"messages": self.messages,"user_id": self.user_id,"temperature": 0.95,"top_p": 0.8,"penalty_score": 1.0}url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token={self.access_token}"headers = {'Content-Type': 'application/json'}response = requests.post(url, headers=headers, data=json.dumps(payload))assistant_message = response.json().get("result")self.messages.append({"role": "assistant", "content": assistant_message})return assistant_messagedef clear_history(self):# 清除对话历史记录self.messages = []def get_chat_history(self):# 获取对话历史记录return self.messagesdef save_history(self):# 将对话历史记录保存到文件中with open(self.file_name, "wb") as f:pickle.dump(self.messages, f)def load_history(self):# 从文件中读取对话历史记录if os.path.exists(self.file_name):with open(self.file_name, "rb") as f:self.messages = pickle.load(f)def pause_chat(self):# 暂停对话,并保存对话历史记录self.is_paused = Trueself.save_history()def resume_chat(self):# 恢复对话,并加载对话历史记录self.is_paused = Falseself.load_history()if __name__ == "__main__":api_key = input("请输入您的API Key: ")secret_key = input("请输入您的Secret Key: ")'''如果不想每次都输入这两个KEY就把上面两行注释掉,去除下面两行的注释'''# api_key = "在这里输入你的API Key"# secret_key = "在这里输入你的Secret Key"chat_instance = WenXinYiYanChat(api_key, secret_key)while True:user_message = input("靓仔: ")# 添加控制语句,用于实现功能if user_message.lower() == "暂停":chat_instance.pause_chat()print("对话已暂停。")elif user_message.lower() == "恢复":chat_instance.resume_chat()print("对话已恢复。")elif user_message.lower() == "清除":chat_instance.clear_history()print("对话历史记录已清除。")elif user_message.lower() == "查看":history = chat_instance.get_chat_history()print("对话历史记录如下:")for message in history:print(message["role"] + ": " + message["content"])elif user_message.lower() == "载入":chat_instance.load_history()print("对话历史记录已载入。")elif user_message.lower() in ["exit", "退出"]:breakelse:response = chat_instance.chat(user_message)print("文心一言4.0: ", response)

以上是一个非常简陋的多轮对话代码示例,仅供测试接口,佬轻喷,虽然国外的模型质量很高,价格也便宜,国内模型开发的开源项目确实少之又少,但还是希望有更多人能够关注国内模型,众人拾柴火焰高,一同开发出更多更优秀的项目,最后,上效果图:

如果有友友开发出了更好的项目或者发现了更好的项目,记得踢我,一起学习!

http://www.lryc.cn/news/248873.html

相关文章:

  • 年终好价节买什么好?这些数码好物闭眼入
  • webpack对项目进行优化
  • Python edge-tts库全部声音模型一览表
  • 网络编程相关面试题
  • TCP_NODELAY与TCP通信效率
  • ZooKeeper的分布式锁---客户端命令行测试(实操课程)
  • 工业4.0时代:图像识别驱动制造业智能生产的未来
  • ROS vscode使用基本配置
  • Android、ESP32、ESP8266的mqtt通信
  • Hive安装与配置
  • vuejs: 解决浏览器切换页面后setInterval计时器停止执行的问题
  • 基于Web邮箱的邮件系统
  • 【Java学习笔记】75 - 算法优化入门 - 马踏棋盘问题
  • 第二十章 多线程
  • vue2使用npm依赖包导出xlsx文件
  • java--多态
  • 知识图谱06——将pdf中的表格(文字形式)保存至csv中
  • 一文教你使用Swagger---适合新手小白(结合实战)
  • VC++调试QT源码
  • 058-第三代软件开发-文件Model
  • 【领域驱动设计 学习目标及大纲】从CRUD到架构设计
  • asla四大开源组件应用示例(alsa-lib、alsa-utils、alsa-tools、alsa-plugins)
  • 文档理解的新时代:LayOutLM模型的全方位解读
  • 【二叉树】Leetcode 637. 二叉树的层平均值
  • 设计模式-15-Jdk源码中的设计模式
  • Vue框架学习笔记——事件scroll和wheel的区别
  • 【LeetCode】每日一题 2023_11_29 无限集中的最小数字(哈希/堆)
  • C/C++ 常用的四种查找算法
  • Linux | Ubuntu设置 netstat(网络状态)
  • 成为AI产品经理——模型构建流程(下)