Android ChatCPT集成

news2024/11/16 19:26:57

准备工作

        ChatGPT账号(openai)

        集成好网络框架(默认使用Retrofit)

接入

        选择modele

        这里使用的是 「https://api.openai.com/v1/chat/completions」

        创建API Keys

运行效果

POST https://api.openai.com/v1/chat/completions
Content-Type: application/json
Content-Length: 79
Authorization: Bearer 你的API Keys(sk-xxxxxEUbR)
Body:{"messages":[{"content":"Who are you?","role":"user"}],"model":"gpt-3.5-turbo"}

返回
<-- 200 https://api.openai.com/v1/chat/completions (2576ms)
date: Mon, 04 Sep 2023 07:17:50 GMT
content-type: application/json
access-control-allow-origin: *
cache-control: no-cache, must-revalidate
openai-model: gpt-3.5-turbo-0613
openai-organization: user-pnritcadmm5y4rt9a1ebccdh
openai-processing-ms: 1357
openai-version: 2020-10-01
strict-transport-security: max-age=15724800; includeSubDomains
x-ratelimit-limit-requests: 200
x-ratelimit-limit-tokens: 40000
x-ratelimit-remaining-requests: 195
x-ratelimit-remaining-tokens: 39980
x-ratelimit-reset-requests: 31m9.648s
x-ratelimit-reset-tokens: 30ms
x-request-id: c87017722536f2676384cdfd02af455c
cf-cache-status: DYNAMIC
server: cloudflare
cf-ray: 801474734dba599d-IAD
alt-svc: h3=":443"; ma=86400

{
    "id": "chatcmpl-7uy8Cml8r1GYP0DQkJB3KrzNo0vQl",
    "object": "chat.completion",
    "created": 1693811868,
    "model": "gpt-3.5-turbo-0613",
    "choices": [{
        "index": 0,
        "message": {
            "role": "assistant",
            "content": "I am an AI language model created by OpenAI called GPT-3. I am here to assist and provide information to the best of my abilities."
        },
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 11,
        "completion_tokens": 31,
        "total_tokens": 42
    }
}

实现

2.1调用

        ArrayList<ChatGPTUPBodyBean.MessageBean> list = new ArrayList<>();
        list.add(new ChatGPTUPBodyBean.MessageBean("user","Who are you?"));
        ChatGPTUPBodyBean bodyBean = new ChatGPTUPBodyBean(list,"gpt-3.5-turbo") ;
        Map<String, String> headerMap = new HashMap<>();
        headerMap.put("Content-Type", "application/json");
        headerMap.put("Authorization", "Bearer 你的API Keys");
        ChatGPTRetrofitManager.getInstance().create(IChatGPTService.class).completions(bodyBean,headerMap)
                .subscribeOn(Schedulers.io())//切换到IO线程
                .observeOn(AndroidSchedulers.mainThread())//切换到主线程
                // 添加订阅
                .subscribe(responseData -> {
                }, throwable -> {
                    ToastUtil.showMessage(R.string.str_network_exception);
                });

2.2 IChatGPTService

  • 1.以Body的形式传递数据

  • 2.设置请求头

public interface IChatGPTService {
    @POST("v1/chat/completions")
    Observable<ChatGPTBean> completions(@Body ChatGPTUPBodyBean bodyBean, @HeaderMap Map<String,String> headerMap);
}

2.3 上行参数(ChatGPTUPBodyBean)

public class ChatGPTUPBodyBean {

    public List<MessageBean> messages;
    public String model;

    public static class MessageBean {
        /**
         * role : user
         * content : Who are you?
         */

        public String role;
        public String content;

        public MessageBean(String role, String content) {
            this.role = role;
            this.content = content;
        }
    }

    public ChatGPTUPBodyBean(List<MessageBean> messages, String model) {
        this.messages = messages;
        this.model = model;
    }
}

2.4 返回实体

        按照上面返回的JSON生成即可,提取choices.message.content即可。

        这只是个简单的Demo,接入起来十分简单。但是具体商用还是要结合自己的业务场景来做,这个仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCA之路---EX280(8)

RHCA之路—EX280(8) 1. 题目 On master.lab.example.com using the template file in http://materials.example.com/exam280/gogs as a basis, install an application in the ditto project according to the following requirements: All of the registry entries must poi…

AndroidTV端:酒店扫码认证投屏DLNA

被老板叼了几次了&#xff0c;最近实在忍不了&#xff0c;准备离职&#xff1b; 但是担心离职后长时间没有办法找到工作 就想贡献一套平时琢磨出来的程序&#xff0c;请各位有能力的话带我熬过这凛冽的寒冬。 目前写出来的&#xff0c;有三个端&#xff1a;安卓TV端&#xf…

Kali之BurpSuite_pro安装配置

文章目录 配置jdk环境安装BurpSuitePro设置快捷方式启动方式 BurpSuite2021专业版本地址&#xff1a; 下载链接&#xff1a;https://pan.baidu.com/s/1PjzcukRDoc_ZFjrNxI8UjA 提取码&#xff1a;nwm7 我的安装工具都在/home/kali/tools/ 解压后我放在burpsuite_pro目录下 把j…

Harbor 私人(企业)docker镜像仓库部署

目录 一、资源下载二、配置前准备三、配置harbor.yml文件四、安装五、上传镜像到Harbor docker镜像仓库 一、资源下载 在GitHub上可以找到相关的下载&#xff1a;https://github.com/goharbor/harbor/releases 或者Linux直接wget&#xff1a; ┌──(root㉿kali)-[~] └─# w…

飞行动力学 - 第17节-航向静稳定性 之 基础点摘要

飞行动力学 - 第17节-航向静稳定性 之 基础点摘要 1. 航向静稳定性2. 航向静稳定性的组成3. 参考资料 1. 航向静稳定性 飞机受到侧滑扰动后&#xff0c;如果能产生使机头指向原来方向的力矩&#xff0c;抵消侧滑&#xff0c;则称为航向静稳定性。 2. 航向静稳定性的组成 飞机…

vue3+ts+vite项目引入echarts

概述 技术栈&#xff1a;Vue3 Ts Vite Echarts 简介&#xff1a; 图文详解&#xff0c;教你如何在Vue3项目中引入Echarts&#xff0c;封装Echarts组件&#xff0c;并实现常用Echarts图例 文章目录 概述一、先看效果1.1 静态效果1.2 动态效果 二、话不多数&#xff0c;引入 …

三步搭建个人网站并发布上线【内网穿透】

三步搭建个人网站并发布上线【内网穿透】 文章目录 三步搭建个人网站并发布上线【内网穿透】前言一、在本地电脑上制作一个网站二、使用WordPress建立网站三、通过cpolar建立的数据隧道发布到公网上 前言 在这个个性飞扬的时代&#xff0c;每个人都希望拥有表现自我的平台&…

C++(QT)画图行车

通过鼠标在窗口上点击形成多个点的连线&#xff0c;绘制一辆汽车沿着绘制的连线轨迹前进。要求连线点数大于20.可以通过清除按钮清除已经绘制的连线&#xff0c;并可以重新绘制一条轨迹连线。当车辆行驶到轨迹终点时&#xff0c;自动停止。&#xff08;汽车实在可用方块代替&am…

[羊城杯 2023] web

文章目录 D0nt pl4y g4m3!!! D0n’t pl4y g4m3!!! 打开题目&#xff0c;可以判断这里为php Development Server 启动的服务 查询得知&#xff0c;存在 PHP<7.4.21 Development Server源码泄露漏洞(参考文章) 抓包&#xff0c;构造payload 得到源码 class Pro{private $ex…

Linux创建新文件的几种方式

第一种是 vi 文件名&#xff0c;然后进入vi编辑&#xff0c;完了之后保存退出&#xff1b;然后ls看一下&#xff0c;文件有了&#xff1b; 在终端输入 cat > 文件名&#xff0c;这没用过&#xff1b;输入以后回车&#xff0c;不会退出命令&#xff1b;输入一行文字&#xff…

基于Jetson Nano的并行图像滤波算法优化与部署

基于 Jetson Nano 的并行图像滤波算法优化 我们实现了基于 GPU (CUDA) 和 CPU (PThread) 的卷积算法&#xff0c;在此基础之上&#xff0c;我们进一步实现 Sobel、Laplacian、均值和高斯滤波器&#xff0c;它们可以被用于图像处理&#xff0c;一个典型的应用场景就是图像降噪。…

nc细节点

nc细节点 1.每个新home都要替换这个xml文件 2.新建的自定义档案所在的路径 3.在已经发布好的单据上新加一个表体时生成Java源代码的注意事项 可以重新生成Java源代码到其他路径位置上&#xff0c;然后再去生成的路径上把新加的表体VO拿到工作空间里面就可以了 4.rest.proper…

什么是手术麻醉系统?

一、手术麻醉系统的主要作用 手术麻醉系统能更好、更准确地记录和管理手术与麻醉的临床信息&#xff0c;提高医生和麻醉师的工作效率。它主要用于病人手术与麻醉的申请、审批、安排&#xff0c;精确记录病人在手术过程中的术中医嘱、术中费用等信息&#xff0c;追踪生命体征等…

新唐nuc980笔记3-led指示灯测试

记录测试新唐nuc980的指示灯功能。 1、新唐nuc980开发板的指示灯电路如下&#xff1a; 使用的是PB8。 2、新建led工程&#xff0c;测试工程代码如下&#xff1a; #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h>//GP…

01. Kubernetes基础入门

目录 1、前言 2、Kubernetes介绍 2.1、什么是Kubernetes 2.2、主要功能 2.3、与Docker的关系 2.4、Kubernetes集群架构体系 3、Kubernetes组件 3.1、核心组件 3.2、附加组件 4、Kubernetes对象 4.1、对象管理 4.2、命名空间 4.3、标签 1、前言 Docker 容器技术将…

静态路由:配置和使用详解

文章目录 一、静态路由的配置和使用详解1. 配置要点1.1 点到点接口配置1.2 以太网接口配置 2. 默认路由3. 静态路由的配置命令4. 静态路由实现路由备份和负载分担 二、静态路由的优先级和比较1. 静态路由的优先级设置2. 静态路由与动态路由的比较2.1 静态路由优缺点2.2 动态路由…

《阿里巴巴 Java 开发手册》(一)命名风格

《阿里巴巴 Java 开发手册》 一、编程规约(一)命名风格 一、编程规约 (一)命名风格

【U盘】实现U盘清空并重置恢复存储

打开电脑&#xff0c;将U盘插入USB端口&#xff0c;点按快捷键【WinR】&#xff0c;弹出运行对话框&#xff0c;输入命令 diskpart 进入命令提示符窗口 输入指令 list disk 查看现在的硬盘 这里显示的U盘编号是“1”&#xff0c;因此输入select disk “1”&#xff0c;就是选择…

leetcode56. 合并区间(java)

合并区间 题目描述贪心算法代码演示 题目描述 难度 - 中等 leetcode56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好…

微服务[Nacos]

CAP 1&#xff09;一致性(Consistency) (所有节点在同一时间具有相同的数据) 2&#xff09;可用性(Availability)(保证每个请求不管成功或者失败都有响应) 3&#xff09;分区容错(Partition tolerance)(系统中任意信息的丢失或失败不会影响系统的继续运作) 一、虚拟机镜像准备 …