Web应用如何集成OpenAI开放能力实现ChatGPT的对话功能





一、先看效果

目前程序员盒子Web应该已经基于OpenAI开放能力实现了一个用起来还比较流畅的AI智能对话机器人。

访问程序员盒子首页: 程序员盒子 - 助力编程学习提效

Ctrl + Enter 快捷键可唤醒AI助手:



我问:程序员盒子网站

AI回答:程序员盒子网站是一家专注于提供程序员需要的资源的网站。它提供了各种关于编程的资源,以及讨论、分享等社区功能,使用户可以更快更好的学习开发技能。程序员盒子网站收集了大量与编程相关的资料和内容,这些资料包括但不限于书籍、教程、技术文章、编程语言等。它还提供了一个交流平台,让用户可以相互分享经验,讨论技术问题,提出建议和解决问题。

如图对话所示,当我问到程序员盒子网站的时候,AI的回答却是对网站内容进行的一定分析之后给出了回复,这个回复内容在网上找不到的(也证明分析能力还是很强的,确实可以称为我的一个AI助手!)

那我们下来看下这样的对话能力我们改如何实现,即如何接入OpenAi的对话能力,自己实现一个ChatGPT的对话功能。

二、申请Token

大家自己如果有了解过的也知道OpenAi在访问账号、网络等对国内有限制,盒子对此作了一层简单的封装,让我们的对话能力接入变得非常简单。首先,在对话之前你需要先申请OpenAi接口请求Token,这个由程序员盒子cu.api接口平台提供技术支持:

接口文档地址: OpenAi Token国内获取API接口

盒子提供了后端请求的API与支持前端跨域请求的Jsonp API两个接口:





Java调用示例:

  // 创建自己的token获取API(其中AK、SK在程序员盒子个人中心接口调用菜单下可以获取)
  String tokenApi = String.format("https://www.coderutil.com/api/openai/getToken?access-key=%s&secret-key=%s", 盒子为你分配的AK, 盒子为你分配的SK);
  // 请求获取token
  String token = HttpClientUtil.get(tokenApi, String.class);



三、请求OpenAi 对话API实现对话能力

这里说前端如何实现,主要关心对话数据能力:

示例代码:

/**
 * 聊天对话
 */
public Object chat(String input) {
        // 请求程序员盒子获取Token
        String token = getTokenFromCoderUtilApi(ak, sk);
        // 请求头参数
        Map<String, String> headers = this.buildHeaders(token);
        // 对话模型、输入 body
        Map<String, Object> param = this.buildChatParam(input);
        // openAi 对话接口
        String completionsApi = "https://api.openai.com/v1/completions";
        try {
            // 请求并返回对话结果
            return HttpClientUtil.post(completionsApi, param, headers, Object.class);
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
}

/**
 * 构造请求头
 */
private Map<String, String> buildHeaders(String token) {
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        headers.put("Authorization", "Bearer ".concat(token));
        return headers;
}

/**
 * 构造请求参数
 */
private Map<String, Object> buildChatParam(String input) {
        Map<String, Object> param = new HashMap<>();
        param.put("model", "text-davinci-003"); // 对话模型
        param.put("prompt", input+"\n");
        param.put("max_tokens", 3000);
        param.put("temperature", 0.8);
        return param;
}



Done!!

程序员盒子接入百度文心大模型文生图能力_程序员盒子技术团队的博客-CSDN博客

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员盒子应用作者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值