当前位置:   article > 正文

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

ernie-bot-4 图片上传

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

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

  • 体验地址

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

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


 

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

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

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

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

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

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

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

  1. import requests
  2. import json
  3. import os
  4. import pickle
  5. class WenXinYiYanChat:
  6. def __init__(self, api_key, secret_key, user_id="这里输入你的APPID", file_name="history.pkl"):
  7. # 初始化方法,用于设置API密钥、用户ID、文件名等
  8. self.api_key = api_key
  9. self.secret_key = secret_key
  10. self.user_id = user_id
  11. self.file_name = file_name
  12. self.access_token = self.get_access_token()
  13. self.messages = []
  14. self.is_paused = False
  15. def get_access_token(self):
  16. # 获取access_token,用于后续的API调用
  17. url = "https://aip.baidubce.com/oauth/2.0/token"
  18. params = {
  19. 'grant_type': 'client_credentials',
  20. 'client_id': self.api_key,
  21. 'client_secret': self.secret_key
  22. }
  23. headers = {
  24. 'Content-Type': 'application/json',
  25. 'Accept': 'application/json'
  26. }
  27. response = requests.post(url, headers=headers, params=params)
  28. return response.json().get("access_token")
  29. def chat(self, user_message):
  30. # 进行对话的主要方法
  31. if self.is_paused:
  32. return "对话目前已暂停。请先恢复对话再继续。"
  33. self.messages.append({"role": "user", "content": user_message})
  34. payload = {
  35. "messages": self.messages,
  36. "user_id": self.user_id,
  37. "temperature": 0.95,
  38. "top_p": 0.8,
  39. "penalty_score": 1.0
  40. }
  41. url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token={self.access_token}"
  42. headers = {'Content-Type': 'application/json'}
  43. response = requests.post(url, headers=headers, data=json.dumps(payload))
  44. assistant_message = response.json().get("result")
  45. self.messages.append({"role": "assistant", "content": assistant_message})
  46. return assistant_message
  47. def clear_history(self):
  48. # 清除对话历史记录
  49. self.messages = []
  50. def get_chat_history(self):
  51. # 获取对话历史记录
  52. return self.messages
  53. def save_history(self):
  54. # 将对话历史记录保存到文件中
  55. with open(self.file_name, "wb") as f:
  56. pickle.dump(self.messages, f)
  57. def load_history(self):
  58. # 从文件中读取对话历史记录
  59. if os.path.exists(self.file_name):
  60. with open(self.file_name, "rb") as f:
  61. self.messages = pickle.load(f)
  62. def pause_chat(self):
  63. # 暂停对话,并保存对话历史记录
  64. self.is_paused = True
  65. self.save_history()
  66. def resume_chat(self):
  67. # 恢复对话,并加载对话历史记录
  68. self.is_paused = False
  69. self.load_history()
  70. if __name__ == "__main__":
  71. api_key = input("请输入您的API Key: ")
  72. secret_key = input("请输入您的Secret Key: ")
  73. '''
  74. 如果不想每次都输入这两个KEY就把上面两行注释掉,去除下面两行的注释
  75. '''
  76. # api_key = "在这里输入你的API Key"
  77. # secret_key = "在这里输入你的Secret Key"
  78. chat_instance = WenXinYiYanChat(api_key, secret_key)
  79. while True:
  80. user_message = input("靓仔: ")
  81. # 添加控制语句,用于实现功能
  82. if user_message.lower() == "暂停":
  83. chat_instance.pause_chat()
  84. print("对话已暂停。")
  85. elif user_message.lower() == "恢复":
  86. chat_instance.resume_chat()
  87. print("对话已恢复。")
  88. elif user_message.lower() == "清除":
  89. chat_instance.clear_history()
  90. print("对话历史记录已清除。")
  91. elif user_message.lower() == "查看":
  92. history = chat_instance.get_chat_history()
  93. print("对话历史记录如下:")
  94. for message in history:
  95. print(message["role"] + ": " + message["content"])
  96. elif user_message.lower() == "载入":
  97. chat_instance.load_history()
  98. print("对话历史记录已载入。")
  99. elif user_message.lower() in ["exit", "退出"]:
  100. break
  101. else:
  102. response = chat_instance.chat(user_message)
  103. print("文心一言4.0: ", response)

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/76032
推荐阅读