创建应用

登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。

获取应用密钥

选择你要开发的应用,进入该应用

在跳转页面,进入设置/应用密钥,点击复制,即可得到Application ID

导入依赖

appbuild.gradle文件中添加依赖文件

dependencies {
    implementation 'io.github.bmob:android-sdk:4.0.7'
    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给你。 onErroronClose方法是请求连接发生错误时调用,如网络关闭等。

  • 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角色案例