构建集成生成式AI的Android应用不再是拥有研究部门的团队的专利。Google提供了多种工具,让任何Android开发者都能在不成为机器学习专家的情况下,为其应用添加智能功能。本教程将逐步指导您从空白项目开始,创建一个使用Google Vertex AI Agent Builder的Android应用,并实现首次自然语言交互。
为什么生成式AI改变了Android开发者的游戏规则
语言模型的兴起改变了我们设计用户界面的方式。用户不再需要面对僵硬的按钮和表单,而是可以与应用进行对话。根据Google Cloud的一篇文章,“vibe coding”——用自然语言描述你想要构建的内容——正成为一种独立的开发方法(来源:Cloud Google - Vibe Coding Explained)。对于Android来说,这为内置个人助手、内容生成器或实时分析工具开辟了道路。
官方指南“AI on Android”(来源:Developer Android - AI on Android)列出了可用的API:ML Kit、TensorFlow Lite,以及通过Google AI Edge提供的新API。但对于高级生成式处理,Vertex AI Agent Builder是最全面的工具。
实际案例:智能任务管理应用
设想一个名为“SmartTasks”的应用,它允许用户添加任务、组织任务,并获得上下文建议(例如:“我今天的优先事项是什么?”)。生成式AI用于分析任务并提出优先级顺序、总结一天,甚至生成子任务。
这个案例特意保持简单,以便专注于集成过程。您可以根据自己的需求进行调整。
前提条件
- Android Studio(最新稳定版)
- 一个Firebase项目(免费),用于身份验证和云存储
- 一个启用了结算功能的Google Cloud项目(Vertex AI是付费服务,但有启动积分)
- Kotlin和Android基础知识
步骤1:创建Android项目并添加Firebase
打开Android Studio,使用“Empty Views Activity”创建一个新项目。将其命名为“SmartTasks”。
然后,将Firebase添加到您的项目。官方文档(来源:Firebase Google - Add Firebase to your Android project)详细说明了步骤:
- 前往Firebase控制台,如果尚未创建项目,请创建一个。
- 使用您项目的包名添加一个Android应用。
- 下载`google-services.json`文件并将其放在项目的`app/`文件夹中。
- 在`build.gradle`(应用级别)中添加Firebase依赖:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-auth-ktx")
implementation("com.google.firebase:firebase-firestore-ktx")
- 同步项目。
Firebase将用于身份验证(保护Vertex AI访问所必需)和存储任务。
步骤2:启用Vertex AI Agent Builder
Vertex AI Agent Builder允许创建基于语言模型的对话代理。官方codelab(来源:Codelabs Developers Google - Building AI Agents with Vertex AI Agent Builder)详细描述了该过程。
- 在Google Cloud控制台中,启用Vertex AI API。
- 在Vertex AI Agent Builder中创建一个“Agent”:
- 命名:“SmartTasksAgent”
- 定义基础模型(例如`gemini-1.5-pro`)
- 添加系统指令:“你是一个生产力助手。你帮助用户组织任务。用法语回答。”
- 记下`agent_id`(类似于`projects/.../locations/.../agents/...`)。
- 生成API密钥(或使用服务账户)以从Android应用调用代理。
> 提示:为了安全访问,不要将密钥直接嵌入应用。使用Firebase Functions作为代理,或使用Vertex AI for Android SDK(预览版)。
步骤3:在应用中集成Vertex AI SDK
Google最近发布了Android版Vertex AI SDK(alpha版)。将其添加到您的项目很简单:
implementation("com.google.cloud:google-cloud-vertexai:0.3.0") // 检查版本
如果您更喜欢REST方式,可以使用Retrofit直接调用API。但SDK更易于处理身份验证和流式传输。
创建一个仓库来集中调用:
class SmartTasksRepository(private val agentId: String) {
private val vertexAI = VertexAI.init(/ context /)
suspend fun askAgent(prompt: String): String {
val agent = vertexAI.agent(agentId)
val response = agent.sendMessage(prompt)
return response.text
}
}
> 注意:由于SDK处于alpha阶段,API可能会发生变化。请参考官方文档获取最新更新。
步骤4:聊天用户界面
创建一个简单的屏幕,使用RecyclerView显示消息和一个输入字段。使用ViewModel管理状态。
class ChatViewModel(private val repository: SmartTasksRepository) : ViewModel() {
private val _messages = MutableLiveData<List<Message>>()
val messages: LiveData<List<Message>> = _messages
fun sendMessage(text: String) {
viewModelScope.launch {
_messages.value = _messages.value + Message(text, isUser = true)
val response = repository.askAgent(text)
_messages.value = _messages.value + Message(response, isUser = false)
}
}
}
步骤5:将Firebase任务与代理关联
为了让代理了解用户的任务,需要提供上下文。当用户提问时,从Firestore获取任务并将其作为上下文发送到提示中。
示例:
val tasks = firestore.collection("users").document(userId).collection("tasks").get().await()
val context = "这是我当前的任务:${tasks.documents.joinToString { it.data }}"
val prompt = "$context
${userInput}"
val response = repository.askAgent(prompt)
部署与测试
在模拟器或实体设备上测试应用。确保代理正确响应。例如:
- 用户:“我今天的优先事项是什么?”
- 代理:“根据你的任务,优先事项是完成项目报告,因为明天截止。然后,你下午2点有一个会议。”
优化与生产部署
- 错误处理:添加超时和错误消息,以防代理无响应。
- 配额限制:Vertex AI有每分钟请求限制。对常见问题使用客户端缓存。
- 安全性:验证用户输入以防止提示注入。
- 成本:通过Google Cloud控制台监控消耗,并通过限制上下文来优化token数量。
Android上的生成式AI仍处于早期阶段,但Google的工具使其变得可访问。通过结合Firebase作为后端和Vertex AI作为智能层,您可以创建理解用户自然语言的应用。本教程为您提供了基础;接下来,由您来想象可能性。
进一步阅读
- Cloud Google - Vibe Coding Explained - 使用生成式AI编码的指南
- Developer Android - AI on Android - Android AI工具概述
- Firebase Google - Add Firebase to your Android project - Firebase官方文档
- Codelabs Developers Google - Building AI Agents with Vertex AI Agent Builder - 逐步Codelab
- Medium - Tutorial: Getting Started with Google Antigravity - 关于agent-first平台的文章
- Reddit - I thought AI would build my app for me... Here's what actually ... - 关于期望与现实的经验分享
这些来源将帮助您深入了解每个步骤。
