本文档将详细指导开发者如何在Cocos Creator和Android环境中集成和使用MediaTek端侧大模型SDK,以便在应用中实现高效的文本生成、图像生成和语音识别功能。
开发环境
SDK及模型的下载地址:https://download.cocos.org/CocosPersona/GenAI/GenAi_SDK.zip
安卓文件配置下载地址:https://download.cocos.org/CocosPersona/GenAI/GenAI_Android.zip
Cocos工程下载地址:https://download.cocos.org/CocosPersona/GenAI/GenAi_CocosProject.zip
Cocos Creator 集成指南
步骤1:SDK管理脚本集成
在Cocos Creator项目中集成SDK,首先需要创建一个用于调用本地功能的管理类。以下是一个基本的SDK管理脚本示例,包括文本生成、图像生成和语音识别功能。
创建 GenAiMgr.ts 文件
在Cocos项目的合适位置创建一个新的TypeScript文件 GenAiMgr.ts,并添加以下内容:
import { _decorator, Component, native, Node, sys } from 'cc';
export class GenAiMgr {
// 文本生成函数
static genText(prompt: string) {
if (sys.os !== sys.OS.ANDROID || !sys.isNative) return;
native.bridge.sendToNative('mtkGenText', prompt);
}
// 图像生成函数
static genImage(prompt: string) {
if (sys.os !== sys.OS.ANDROID || !sys.isNative) return;
native.bridge.sendToNative('mtkGenImage', prompt);
}
// 开始语音识别
static startAsr() {
if (sys.os !== sys.OS.ANDROID || !sys.isNative) return;
native.bridge.sendToNative('mtkStartAsr');
}
// 结束语音识别
static endAsr() {
if (sys.os !== sys.OS.ANDROID || !sys.isNative) return;
native.bridge.sendToNative('mtkEndAsr');
}
}
步骤2:控制脚本实现
创建一个控制脚本,作为AI功能的调用入口。
创建 GenAiCtrl.ts 文件
在项目中创建一个新的TypeScript文件 GenAiCtrl.ts,用于管理从UI到SDK的所有调用:
import { _decorator, native, Node, sys } from 'cc';
import { GenAiMgr } from './GenAiMgr';
class GenAiCtrl {
// 异步调用AI回复生成
async genAiReply(question: string): Promise<void> {
if (sys.os !== sys.OS.ANDROID || !sys.isNative) return;
GenAiMgr.genText(question);
}
}
const genAICtrl = new GenAiCtrl();
export default genAICtrl;
步骤3:在项目中使用控制脚本
在你的项目逻辑中调用 genAiCtrl.genAiReply 方法来触发文本生成。确保在合适的UI组件或逻辑脚本中引用并使用 genAICtrl。
Android 端集成指南
步骤1:引入依赖
将提供的 mtklibrary-release-sd-qw2-1.5.aar 文件放入Android项目的 libs 文件夹中,并在 build.gradle 文件中添加以下依赖:
dependencies {
implementation files('libs/mtklibrary-release-sd-qw2-1.5.aar')
}
并配置PROP_MIN_SDK_VERSION=26
步骤2:配置 AndroidManifest.xml
在 AndroidManifest.xml 中添加所需库的使用说明:
<uses-native-library android:name="libapuwareutils_v2.mtk.so" android:required="false"/>
<uses-native-library android:name="libapuwareutils.mtk.so" android:required="false"/>
<uses-native-library android:name="libtflite_mtk.mtk.so" android:required="false"/>
<uses-native-library android:name="libneuronusdk_adapter.mtk.so" android:required="false"/>
步骤3:安装大模型和SD DLA 文件
通过ADB把文件夹下面的sd和llm_sdk 拷贝到手机的/data/local/tmp/目录下,也可以使用工具包内的install.bat/install.sh 脚本安装。
步骤4:实现Java端控制脚本
在Android Java代码中,创建一个类来管理与Cocos通过JsbBridge通信的逻辑。
创建 GenAiHelper.java 文件, 可以参考template模板里的案例
在适当的包下创建 GenAiHelper.java,并实现以下功能:
/**
* Initializes the GenAiHelper by setting up the JsbBridge callback.
* 通过设置 JsbBridge 回调来初始化 GenAiHelper。
*/
public static void init() {
JsbBridge.setCallback(new JsbBridge.ICallback() {
@Override
public void onScript(String arg0, String arg1) {
if (arg0.equals("mtkGenText")) {
genText(arg1);
} else if (arg0.equals("mtkGenImage")) {
genImage(arg1, 18);
} else if (arg0.equals("mtkStartAsr")) {
AbilityManager.ins().stopTTS();
AbilityManager.ins().startAsr();
} else if (arg0.equals("mtkEndAsr")) {
AbilityManager.ins().endAsr();
}
}
});
}
/**
* Generates text based on the provided prompt and handles the response.
* 根据提供的提示生成文本并处理响应。
*
* @param prompt The input prompt for text generation.
*/
public static void genText(String prompt) {
mtkGenText(prompt, response -> {
GenAiManager.createReplay(response);
AbilityManager.ins().speechText(response);
});
}
/**
* Generates an image based on the provided prompt and handles the image data.
* 根据提供的提示生成图像并处理图像数据。
*
* @param prompt The input prompt for image generation.
* @param step The number of steps for image generation.
*/
public static void genImage(String prompt, int step) {
mtkGenImage(prompt, step, imageData -> {
String base64Data = Base64.encodeToString(imageData, Base64.NO_WRAP);
GenAiManager.createImage(base64Data);
});
}
步骤5:初始化SDK
在您的主 Activity 或应用入口处调用 GenAiHelper.init() 来初始化SDK。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GenAiHelper.init();
}
}
通过遵循以上步骤,您可以在Cocos和Android环境中成功集成并使用MediaTek端侧大模型SDK,从而在您的应用中实现复杂的AI功能。
CPU检测
目前项目支持天玑9400系列处理器,可以使用genAiHelper 内提供的方法检测是否是天玑9400系列处理器。
/**
* Checks if the device's CPU is MediaTek (MTK) 9400.
* 检查设备的 CPU 是否为 MediaTek (MTK) 9400。
*
* @return true if the CPU is MTK 9400, false otherwise.
*/
public static boolean isMtkCpu9400() {
String cpuModel = getCpuModel();
return cpuModel != null && cpuModel.contains("mt6991");
}
/**
* Retrieves the CPU model of the device.
* 获取设备的 CPU 型号。
*
* @return The CPU model, or null if it cannot be determined.
*/
public static String getCpuModel() {
String cpuModel = null;
try {
cpuModel = Build.HARDWARE;
} catch (Exception e) {
e.printStackTrace();
}
return cpuModel;
}
超频控制:
可以使用cpuBoost启动,默认是关闭的。
// 1: 开启,0:关闭
MtkQw.cpuBoost(1);
天玑生成式AI功能目前支持天玑8300、8400、9300、9400。本案暂仅支持天玑9400;天玑8300、8400、9300可通过天玑NeuroPilot文档指导实现,详情请联系支持团队mdc@mediatek.com