在
app
的
build.gradle
文件中添加
依赖文件
:
dependencies {
implementation 'io.github.bmob:android-sdk:4.1.0'
implementation 'io.reactivex.rxjava3:rxjava:3.1.9'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
implementation 'com.squareup.okio:okio:2.2.2'
implementation 'com.google.code.gson:gson:2.8.5'
创建Application子类
新建一个继承自Application的子类BmobApp。代码如下:
public class BmobApp extends Application {
public static BmobAI bmobAI;
@Override
public void onCreate() {
super.onCreate();
//初始化
Bmob.initialize(this,"你的application id");
//初始化AI(初始化时,会自动创建一个websocket,保持心跳连接,确保实时回复)
bmobAI = new BmobAI();
配置AndroidManifest.xml
在你的应用程序的AndroidManifest.xml文件中添加如下的应用类名、权限和ContentProvider信息:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.bmob.example"
android:versionCode="1"
android:versionName="1.0">
<!--允许联网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取GSM(2g)、WCDMA(联通3g)等网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取wifi网络状态的信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:name=".BmobApp"
....其他信息>
<activity
...其他信息
</activity>
<!--添加ContentProvider信息 -->
<provider
android:name="cn.bmob.v3.util.BmobContentProvider"
android:authorities="你的应用包名.BmobContentProvider">
</provider>
</application>
</manifest>
调用AI对话
//连接AI服务器(这个代码为了防止AI连接中断,因为可能会存在某些情况下,比如网络切换、中断等,导致心跳连接失败)
BmobApp.bmobAI.Connect();
//发送对话信息
BmobApp.bmobAI.Chat("帮我用写一段android访问Bmob后端云的代码", "session_id", new ChatMessageListener() {
@Override
public void onMessage(String message) {
//消息流的形式返回AI的结果
Log.d("Bmob", message);
@Override
public void onFinish(String message) {
//一次性返回全部结果,这个方法需要等待一段时间,友好性较差
Log.d("Bmob", message);
@Override
public void onError(String error) {
//OpenAI的密钥错误或者超过OpenAI并发时,会返回这个错误
Log.d("Bmob", "连接发生异常了"+error);
@Override
public void onClose() {
Log.d("Bmob", "连接被关闭了");
其中,session_id是会话Id信息,你可以传入用户的objectId,也可以是其他固定的信息,如用户的手机号码、注册账号等等。后端根据会话Id信息,自动拼接相应的上下文信息,发送给GPT进行处理。
onMessage方法是以流的形式,不断回传message信息给你,呈现在UI界面上。通过这种方法,你可以实现更好的用户体验。
onFinish方法是等待GPT完全请求完毕,才回传最终内容message给你。
onError和onClose方法是请求连接发生错误时调用,如网络关闭等。
BmobAI的其他方法
BmobAI类还有isConnect方法和Connect方法。
isConnect方法返回布尔值,表示是否和服务器保持着连接状态。
Connect方法是主动和服务器连接的方法,主要是当你的网络发生异常时,主动重新和服务器进行连接。
停止输出内容
如果你想中断AI的内容输出,还可以调用如下的代码:
BmobApp.bmobAI.Stop();
自定义AI机器人
如果需要设置AI的角色,你可以在调用 BmobApp.bmobAI.Chat 方法前,调用 BmobApp.bmobAI.setPrompt 方法,如:
BmobApp.bmobAI.setPrompt("接下来的每个回复都要叫我宝贝");
启用这个方法之后,我们会在每次给AI发起内容生成的时候,都在最开始的地方附带上 "接下来的每个回复都要叫我宝贝" 这句话,确保内容按你的要求生成。
清除对话
SDK会在 内存 中保存会话(session)信息,每次执行 BmobAI.Chat 方法时,会自动找到最近的 7对 上下文(17条对话),组装好内容,和最终的AI服务商交互。
如果你不想携带以往的会话(session)信息,可以在执行 BmobAI.Chat 方法之前,先执行 BmobAI.Clear("你的session名称") 方法,将session信息从内存中清除。
模拟对话内容
你还可以自由地在调用BmobAI.Chat方法前,模拟添加用户的问和ChatGPT的答。
方法如下:
//模拟用户的问
BmobApp.bmobAI.setUserChatMessage("模拟用户的问题","你的session名称");
//模拟Chatgpt的答
BmobApp.bmobAI.setAssistantChatMessage("模拟Chatgpt的回答","你的session名称");
接口费用
免费赠送1000条。
超过1000条,可以选择购买(1分钱一条)或者使用自有的密钥。
使用自有密钥的方法如下:进入到应用之后,依次点击 设置 -> AI设置 -> 添加配置,将你的密钥信息填上去即可。
视频教程
源码下载
AI快速入门源码下载
AI角色案例