创建应用¶
-登录账号进入bmob后台后,点击后台界面左上角“创建应用”,在弹出框输入你应用的名称,然后确认,你就拥有了一个等待开发的应用。
- -获取应用密钥¶
-选择你要开发的应用,进入该应用
- -在跳转页面,进入设置/应用密钥,点击复制,即可得到Application ID
导入依赖¶
-在app
的build.gradle
文件中添加依赖文件
:
dependencies {
- implementation 'io.github.bmob:android-sdk:3.9.6'
- implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
- implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
- 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-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>
-
- <!--允许联网 -->
- <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设置
-> 添加配置
,将你的密钥信息填上去即可。
-