Android ChatCPT集成

准备工作

        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.hqwc.cn/news/97908.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas DataFrame 数据存储格式比较

Pandas 支持多种存储格式&#xff0c;在本文中将对不同类型存储格式下的Pandas Dataframe的读取速度、写入速度和大小的进行测试对比。 创建测试Dataframe 首先创建一个包含不同类型数据的测试Pandas Dataframe。 import pandas as pdimport randomimport stringimport numpy …

华为Mate 60系列安装谷歌服务框架,安装Play商店,Google

华为Mate 60 Pro悄悄的上架。但是却震撼市场的强势登场,Mate 60系列默认搭载的就是鸿蒙4.0。那么mate 60加上4.0是否可以安装谷歌服务框架呢&#xff1f;本机到手经过测试是可以安装的&#xff0c;但是在解决play非保护机制认证还通知这个问题上,他和鸿蒙3.0是不一样的。如果我…

U盾难管理?用U盾专用USB集线器

公司有一堆U盾要插着用&#xff0c;但是一台电脑也才两三个接口&#xff0c;怎么办&#xff1f; 三个字&#xff0c;很简单&#xff0c; 一台U盾专用的USB集线器就能解决。 U盾专用集线器为解决网银U盾连接问题而生。 它有四大好处&#xff01; 集中管理 把所有U盾集中到一…

Opencv 图像金字塔----高斯和拉普拉斯

原文&#xff1a;图像金字塔----高斯和拉普拉斯 图像金字塔是图像中多尺度表达的一种&#xff0c;最初用于机器视觉和图像压缩&#xff0c;最主要用于图像的分割、融合。 高斯金字塔 ( Gaussian pyramid): 高斯金字塔是由底部的最大分辨率图像逐次向下采样得到的一系列图像…

静态路由配置实验:构建多路由器网络拓扑实现不同业务网段互通

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. 配置 IP 地址2. 按照需求配置静态路由&#xff0c;实现连接 PC 的业务网段互通 摘要&#xff1a; 本实验旨在通过配置网络设备的IP地址和静态路由&#xff0c;实现不同业务网段之间的互通。通过构建一组具有…

SpringCloudAlibaba之Sentinel介绍

文章目录 1 Sentinel1.1 Sentinel简介1.2 核心概念1.2.1 资源1.2.2 规则 1.3 入门Demo1.3.1 引入依赖1.3.2 集成Spring1.3.3 Spring中资源规则 1.4 Sentinel控制台1.5 核心原理1.5.1 NodeSelectorSlot1.5.2 ClusterBuilderSlot1.5.3 LogSlot1.5.4 StatisticSlot1.5.5 Authority…

故障分析 | OceanBase 频繁更新数据后读性能下降的排查

以下文章来源于爱可生开源社区 &#xff0c;作者张乾 爱可生开源社区. 爱可生开源社区&#xff0c;提供稳定的MySQL企业级开源工具及服务&#xff0c;每年1024开源一款优良组件&#xff0c;并持续运营维护。 测试在做 OceanBase 纯读性能压测的时候&#xff0c;发现对数据做过…

【python】读取.dat格式文件

import binascii# 打开二进制文件以只读二进制模式 with open(EXCEL/文件.dat, rb) as file:binary_data file.read()print(binary_data)# 将二进制数据转换为十六进制字符串 hex_data binascii.hexlify(binary_data).decode(utf-8) # binary_data 现在包含了文件的二进制内容…

go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)

前情提要&#xff1a; 需要安装好go的环境和VSCode的go插件。 hello world快速上手 1、创建go.mod 在项目根目录下打开命令行&#xff0c;或者直接用VSCode中的终端。输入命令 go mod init github.com/solenovex/web-tutorial 然后就能看到项目结构中多了一个go.mod 2、…

CRM 自动化如何改善销售和客户服务?

许多 B2B 和 B2C 公司都使用 CRM 系统来组织业务流程&#xff0c;使复杂的任务更容易完成。企业可以使用 CRM 自动化来自动化工作流程&#xff0c;让团队有更多的时间来执行高价值的任务&#xff0c;而不是陷于一堆琐碎事情中。 什么是CRM自动化&#xff1f; CRM 自动化是指 C…

uni-app 之 安装uView,安装scss/sass编译

uni-app 之 安装uView&#xff0c;安装scss/sass编译 image.png image.png image.png 点击HBuilder X 顶部&#xff0c;工具&#xff0c;插件安装&#xff0c;安装新插件 image.png image.png 安装成功&#xff01; 注意&#xff0c;一定要先登录才可以安装 image.png 1. 引…

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 容器技术将…