文心一言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 pickle


class WenXinYiYanChat:
    def __init__(self, api_key, secret_key, user_id="这里输入你的APPID", file_name="history.pkl"):
        # 初始化方法,用于设置API密钥、用户ID、文件名等
        self.api_key = api_key
        self.secret_key = secret_key
        self.user_id = user_id
        self.file_name = file_name
        self.access_token = self.get_access_token()
        self.messages = []
        self.is_paused = False

    def 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_message

    def clear_history(self):
        # 清除对话历史记录
        self.messages = []

    def get_chat_history(self):
        # 获取对话历史记录
        return self.messages

    def 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 = True
        self.save_history()

    def resume_chat(self):
        # 恢复对话,并加载对话历史记录
        self.is_paused = False
        self.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", "退出"]:
            break
        else:
            response = chat_instance.chat(user_message)
            print("文心一言4.0: ", response)

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

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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
微信小程序可以通过接入ERNIE-BOT来实现智能聊天机器人的功能。ERNIE-BOT是百度开发的一种基于自然语言处理的聊天机器人技术,可以实现与用户的对话交互。 首先,我们需要在微信小程序的后台进行相关的配置。我们可以使用百度的开放平台提供的API密钥,将其与微信小程序的应用ID绑定,以确保数据的安全传输。确定好认证方式后,我们就可以在小程序的后台管理界面中配置相关的参数,包括API密钥和接口路径等。 接下来,在微信小程序的代码中,我们需要通过调用相关的API接口来实现与ERNIE-BOT的通信和交互。可以使用微信小程序提供的request方法来发送HTTP请求,将用户的输入消息发送给ERNIE-BOT,并获取其返回的响应消息。 当用户在小程序中输入文本消息后,我们可以将其作为参数,通过HTTP请求发送给ERNIE-BOT的接口。ERNIE-BOT会对用户的输入进行分析和理解,并生成相应的回复消息。接收到ERNIE-BOT返回的响应后,我们可以将其展示在微信小程序的聊天界面上,与用户进行交互。 在进行接入ERNIE-BOT时,我们可以根据具体的需求进行一些调整和优化。例如,可以通过设置一些预设的规则和指令,来控制ERNIE-BOT的回答行为;可以通过对机器学习模型进行微调,来提高ERNIE-BOT的准确性和可靠性;还可以通过与其他功能的结合,实现更多个性化的功能和交互效果。 总的来说,微信小程序接入ERNIE-BOT可以帮助企业和开发者实现智能聊天机器人的功能,进一步提升用户体验,为用户提供更加便捷和高效的服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值