One能聊天接入百度千帆大模型 —— 文心一言

One能聊天介绍:基于ChatGPT实现的微信小程序,适配H5和WEB端。包含前后端,支持打字效果输出流式输出,支持AI聊天次数限制,支持分享增加次数等功能
One能聊天开源地址:https://github.com/oldinaction/ChatGPT-MP
One能聊天演示环境:可关注【阿壹族】公众号,并回复【One能聊天】查看
下文将介绍在One能聊天项目中接入百度千帆大模型 — 文心一言

开通服务

首先介绍一下百度AI相关产品矩阵
如下图百度力推的千帆大模型超级工厂,他包含

  • 千帆大模型平台:其中大模型开发就是自己训练一个大模型,这种比较有技术含量,少部分企业才会用到;大模型调用则包含百度开放的文心大模型(即文心一言,ERNIE 4.0和ERNIE 3.5为模型版本分类,对标ChatGPT),还包括一些第三方模型供调用
  • 千帆AppBuilder:是提供开发者基于文心大模型可以快速开发出一个AI应用,创建的应用可以集成一些官方的组件(如天气查询、快递查询等),也可以集成自定义组件(通过画布拖拽,自行编排组件逻辑,如调用企业内部API或调用大模型接口),另外还可导入知识库供大模型使用(支持txt/pdf/doc/url等模式)。通过AppBuilder创建的应用官方提供一个访问链接供普通用户使用(界面是通用的AI聊天界面),开发者也可以通过SDK调用创建的AI应用从而集成到实际的业务系统中。这部分会在后续文章中做详细说明
  • 千帆AI原生应用商店:就是百度自己开发的AI应用。如超级助理,下载浏览器插件即可使用,支持划词翻译、网页解读、OCR识别等功能

本文主要对文心大模型ERNIE的API调用做详细说明
image.png
创建应用:进入 https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application 创建,可勾选启用的模型,如ERNIE-3.5-8KERNIE-4.0-8KYi-34B-Chat(免费)等
image.png
部分模型计费说明如下
image.png

单次API调用案例

@RequestMapping("/baidu/ernieBotTurbo")
public Result baiduErnieBotTurbo(@RequestBody Map<String, Object> params) {
   
    BaiduConfig baiduConfig = SpringU.getBean(BaiduConfig.class);
    BaiduService baiduService = new BaiduService(baiduConfig.getApiKey(), baiduConfig.getApiSecret());
    BaiduChatMessage chatMessage = BaiduChatMessage.builder()
            .content((String) params.get("content"))
            .role("user")
            .build();
    ErnieBotTurboStreamParam postParam = ErnieBotTurboStreamParam.builder()
            .user_id(StpUtil.getLoginIdAsString())
            .messages(MiscU.Instance.toList(chatMessage))
            .build();
    ErnieBotTurboResponse ernieBotTurboResponse = baiduService.ernieBotTurbo(postParam);
    return Result.success(ernieBotTurboResponse);
}

// 该方法是同步请求API,会等大模型将数据完全生成之后,返回响应结果,可能需要等待较长时间,视生成文本长度而定
public ErnieBotTurboResponse ernieBotTurbo(ErnieBotTurboStreamParam param) {
   
    if (param == null) {
   
        log.error("参数异常:param不能为空");
        throw new RuntimeException("参数异常:param不能为空");
    }
    if (param.isStream()) {
   
        param.setStream(false);
    }
    String fullChatUrl = SpringU.getBean(BaiduConfig.class).getFullChatUrl();
    String post = HttpUtil.post(fullChatUrl + BaiduConfig.getToken(appKey, secretKey), JSONUtil.toJsonStr(param));
    return JSONUtil.toBean(post, ErnieBotTurboResponse.class);
}

public class BaiduConfig {
   
    @Value("${aezo-chat-gpt.baidu.api-key:}")
    private String apiKey;
    @Value("${aezo-chat-gpt.baidu.api-secret:}")
    private String apiSecret;
    @Value("${aezo-chat-gpt.baidu.chat-url:yi_34b_chat}")
    private String chatUrl;

    /**
     * Yi-34B-Chat 免费使用 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/vlpteyv3c
     * 模型对应路径如,更多参考官方文档:
     * Yi-34B-Chat: yi_34b_chat
     * ERNIE-Lite-8K-0922: eb-instant
     * ERNIE-Speed-8K: ernie_speed
     */
    private static final String CHAT_URL_TPL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/%s?access_token=";

    public static String getToken(String appKey, String secretKey) {
   
        String url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + appKey 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值