ChatGPT初体验与Android的集成使用

  • 前言
    • 创建自己的API KEY
    • Android端的集成
    • 代码
    • 总结

前言

ChatGPT凭借着强大的AI功能火的一塌糊涂,由于其官网在国内不能访问,很多小伙伴不能很友好的体验及使用,现在就来分享一下其简单的集成使用,最后附上在Android端的集成代码。
(温馨提示:以下部分网址需要代理访问)

创建自己的API KEY

  1. 首先打开ChatGPT的官网,在此就不在赘述其注册及登录的过程,具体步骤可以参考这里
  2. 进入账号后,点击右上角自己的头像,选择View API keys选项
  3. 点击这个按钮进行key的创建(生成的key记得复制,之后不会再显示,保存好,后面会用到)

Android端的集成

  1. 打开API文档,选择查看具体的集成步骤,官方提供了三种方式:curl、python、Node.js

  2. 这里我们需要将ChatGPT的chat功能进行集成,开始项目之前,我打算用kotlin + coroutines + retorfit2进行构建

  3. 在Android studio中新建项目,列出关键的依赖库:

    //retrofit
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    //coroutines
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
    
  4. 根据官方的Chat部分用例代码来看,需要加上两个请求头:

    curl https://api.openai.com/v1/chat/completions \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "Hello!"}]
    }'
  5. 编写我们自己的请求接口,带上请求头:

    interface ApiService {@POST("chat/completions")fun getMessage(@Header("Content-Type") type:String,@Header("Authorization") authorization:String, @Body body:SendBodyData):Call<ModelData>
    }
    
  6. viewmodel中实现具体的请求:

    private val baseUrl = "https://api.openai.com/v1/chat/completions"
    private val key = "sk-Rix2aNkoTt0NuiJQBCc4T3BlbkFJMnAdYtxTn1TfpOQ4K"
    var responseData =  MutableStateFlow(ModelData())suspend fun getMsg(info:String){when (val result = ApiHelper.getMsg("application/json","Bearer $key", SendBodyData(listOf(SendMessage(info,"user")),"gpt-3.5-turbo"))) {is Result.Success -> {responseData.emit(result.data)}is Result.Error -> {val exception = result.exception// 处理错误响应println(exception)}}
    }
    
  7. 最后在Activity中展示:

    lifecycleScope.launch {dataViewModel.responseData.collect{mBinding.idTVResponse.text = it.choices?.get(0)?.message?.contentmBinding.idTILQuery.setText("")}}lifecycleScope.launchWhenResumed {dataViewModel.getMsg(mBinding.idTILQuery.text.toString())
    }

代码

以上只是贴出了主要代码,具体的工程代码见这里

总结

过程中的踩坑:

  1. 请求头中Authorization是Bearer类型,否则返回401错误
  2. 手机运行的时候记得开启代理,否则白折腾半天…

【ChatGPT初体验与Android的集成使用】相关推荐

  1. ChatGPT初体验step by step:ChatGPT解决人类提出的数理逻辑问题,Python编程实践

    ChatGPT初体验step by step:ChatGPT解决人类提出的数理逻辑问题,Python编程实践 如果已有有效的open ai的api key,则跳过本文(1)(2)(3)(4),直接从( ...

  2. SAP ABAP ChatGPT 初体验 我会失业吗?

    SAP ABAP ChatGPT 初体验 我会失业吗? 简介: ChatGPT 最近很火,听说我可能要失业!就在今天我历经千辛万苦,终于把 ChatGPT 注册好了.话不多说,我先问两个 ABAP 开 ...

  3. ChatGPT初体验-帮我写一本奇幻冒险小说(Aethia的勇士)

    问:从现在开始,我希望你假装自己是奇幻类型的作者.你将成为我正在写的小说的代笔人.确认是或否. ChatGPT:是的,我将会假装自己是奇幻类型的作者为您代笔小说.请告诉我您需要我帮助写什么. 问:描述 ...

  4. ChatGPT初体验——震撼,好用,贾维斯已来

    2022.12.26 大概一个月的使用体验,我觉得chagpt的使用还算远远超出我的想象,可以说只有你想不到的,最近需要写一个基于shell的学生选课系统,但是时间实在是紧张的很,一开始chatgpt ...

  5. 马宁的Windows Phone 7.1初体验——XNA与Silverlight集成

    关于Windows Phone Mango真真假假的图片.视频已经在网上流传很久了,微软发布的Windows Phone 7.1 SDK可以让我们看到一部分Mango支持的功能. 普通用户对Mango ...

  6. ChatGPT初体验——开发好帮手

    写在前面 最近ChatGPT AI机器人火爆全网,甚至有人说,继画师之后,策划.程序.运营统统都要失业了,好奇之下,我也去试了下,最大的感受就是震惊,确实被惊艳到了,但大家也不用太焦虑,因为短期内不太 ...

  7. Android进阶:十一、视频播放器初体验,android开发入门pdf

    编译成功之后我们就可以在代码里面用它了,这个也很简单一般不会出什么问题.ijplayer里面提供了一个IMediaPlayer,我们初始化它即可: private void initMediaPlay ...

  8. [Android Studio] 初体验

    [Android Studio] 初体验 本人刚开始接触移动开发方面的知识,在很多方面都感觉寸步难行,移动开发这门课程应该是在我一年后学校才会开设,而移动开发所用到的java也是在我下个学期才开始正式 ...

  9. 使用Kotlin开发Android应用初体验

    使用Kotlin开发Android应用初体验 昨晚,最近一届的谷歌IO大会正式将Kotlin确定为了官方开发语言,作为一名Android开发鸟,怎么能不及时尝尝鲜呢? Kotlin的简要介绍 在开发之 ...

最新文章

  1. springboot整合mysql5.7_springboot整合mybatis访问mysql,数据库
  2. 关于kthreadd
  3. 汇编语言EQU伪指令
  4. Machine Learning:十大机器学习算法
  5. jQuery clearQueue
  6. 为什么我们需要Q#?
  7. Flink 状态管理
  8. mysql linux root密码忘记了怎么办,linux下忘记mysql的root密码解决办法 | 严佳冬
  9. ~~求欧拉函数(附模板题)
  10. 云服务器上部署pytorch,flask部署pytorch-服务端
  11. 数据挖掘项目实战—Kaggle入门竞赛:房价预测之EDA与特征工程
  12. linux三种连接方式
  13. 高德地图入驻广州交警 实现“互联网+交通”无缝对接
  14. 双闭环调速 matlab,双闭环直流调速系统仿真(Matlab).ppt
  15. 企业外贸网站建设的要求及注意事项
  16. device mapper机制详解
  17. python学习笔记之序列,内含列表和元组的常用方法
  18. 在MobaXterm使用命令tree出现乱码解决办法locale的设定及LANG、LC_CTYPE、LC_ALL环境变量
  19. 微信开发——网页授权
  20. CRM系统针对性的解决方案—客户管理一体化

热门文章

  1. javascript 夯实基础
  2. Exynos 4412 看门狗定时器中断
  3. List和IList的区别
  4. 使用计算机对炼钢过程进行实时监控,新钢炼钢-轧钢生产过程缓冲环节的解析、优化与控制 张志宏...
  5. 数据库与身份认证 - 04
  6. 为什么农民收入少,到底为什么
  7. 元宇宙十大技术及其产业
  8. 51单片机存储器原理
  9. 音视频开发中常见基础问题总结
  10. found dwarf version #039;4#039; linux,开发一个Linux调试器(四):Elves和dwarves