Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update multi turn conversations (chat), update github action version #43

Open
wants to merge 17 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/build_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,18 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: gradle
- name: Build the generativeai release artifacts
run: ./gradlew generativeai:publishAllPublicationsToMavenRepository
- name: Upload the generativeai artifacts
uses: actions/upload-artifact@v2

- name: Upload generated artifacts
uses: actions/upload-artifact@v4

with:
name: generative-ai-android
path: generativeai/m2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check-code-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout branch
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check-licensing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout branch
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/check_for_api_changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout master
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand All @@ -30,10 +30,10 @@ jobs:
mv common/public.api ~/common/public.api

- name: Checkout branch
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/generate_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: gradle
- name: Run dokka
run: ./gradlew generativeai:dokkaHtml
- name: Upload generated docs
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: google-ai-android
path: generativeai/build/dokka/html
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout branch
uses: actions/checkout@v3.5.3
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
Expand Down
31 changes: 26 additions & 5 deletions generativeai-android-sample/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

/*
* Copyright 2023 Google LLC
*
Expand Down Expand Up @@ -50,14 +52,33 @@ android {
composeOptions {
kotlinCompilerExtensionVersion = "1.5.4"
}
afterEvaluate {
val projectPath = rootProject.file(".").absolutePath
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = freeCompilerArgs + listOf(
"-opt-in=kotlin.OptIn",
"-opt-in=kotlin.RequiresOptIn",
)
freeCompilerArgs = freeCompilerArgs + listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=$projectPath/report/compose-metrics",
)
freeCompilerArgs = freeCompilerArgs + listOf(
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=$projectPath/report/compose-reports",
)
}
}
}
}

dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
implementation("androidx.activity:activity-compose:1.8.1")
implementation("androidx.navigation:navigation-compose:2.7.5")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0")
implementation("androidx.activity:activity-compose:1.8.2")
implementation("androidx.navigation:navigation-compose:2.7.6")

implementation(platform("androidx.compose:compose-bom:2023.10.01"))
implementation("androidx.compose.ui:ui")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
* limitations under the License.
*/

@file:Suppress("UNCHECKED_CAST")

package com.google.ai.sample

import androidx.lifecycle.ViewModel
Expand All @@ -27,14 +29,14 @@ import com.google.ai.sample.feature.text.SummarizeViewModel

val GenerativeViewModelFactory = object : ViewModelProvider.Factory {
override fun <T : ViewModel> create(
viewModelClass: Class<T>,
modelClass: Class<T>,
extras: CreationExtras
): T {
val config = generationConfig {
temperature = 0.7f
}

return with(viewModelClass) {
return with(modelClass) {
when {
isAssignableFrom(SummarizeViewModel::class.java) -> {
// Initialize a GenerativeModel with the `gemini-flash` AI model
Expand Down Expand Up @@ -69,7 +71,7 @@ val GenerativeViewModelFactory = object : ViewModelProvider.Factory {
}

else ->
throw IllegalArgumentException("Unknown ViewModel class: ${viewModelClass.name}")
throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
}
} as T
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ enum class Participant {

data class ChatMessage(
val id: String = UUID.randomUUID().toString(),
var text: String = "",
val text: String = "",
val participant: Participant = Participant.USER,
var isPending: Boolean = false
)
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ internal fun ChatRoute(
Scaffold(
bottomBar = {
MessageInput(
isLoading = chatUiState.isLoading,
onSendMessage = { inputText ->
chatViewModel.sendMessage(inputText)
},
Expand Down Expand Up @@ -146,13 +147,6 @@ fun ChatBubbleItem(
modifier = Modifier.padding(bottom = 4.dp)
)
Row {
if (chatMessage.isPending) {
CircularProgressIndicator(
modifier = Modifier
.align(Alignment.CenterVertically)
.padding(all = 8.dp)
)
}
BoxWithConstraints {
Card(
colors = CardDefaults.cardColors(containerColor = backgroundColor),
Expand All @@ -171,6 +165,7 @@ fun ChatBubbleItem(

@Composable
fun MessageInput(
isLoading: Boolean,
onSendMessage: (String) -> Unit,
resetScroll: () -> Unit = {}
) {
Expand Down Expand Up @@ -198,6 +193,7 @@ fun MessageInput(
.weight(0.85f)
)
IconButton(
enabled = !isLoading,
onClick = {
if (userMessage.isNotBlank()) {
onSendMessage(userMessage)
Expand All @@ -211,11 +207,19 @@ fun MessageInput(
.fillMaxWidth()
.weight(0.15f)
) {
Icon(
Icons.Default.Send,
contentDescription = stringResource(R.string.action_send),
modifier = Modifier
)
if (isLoading) {
CircularProgressIndicator(
modifier = Modifier
.align(Alignment.CenterVertically)
.padding(all = 8.dp)
)
} else {
Icon(
Icons.Default.Send,
contentDescription = stringResource(R.string.action_send),
modifier = Modifier
)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,7 @@

package com.google.ai.sample.feature.chat

import androidx.compose.runtime.toMutableStateList

class ChatUiState(
messages: List<ChatMessage> = emptyList()
) {
private val _messages: MutableList<ChatMessage> = messages.toMutableStateList()
val messages: List<ChatMessage> = _messages

fun addMessage(msg: ChatMessage) {
_messages.add(msg)
}

fun replaceLastPendingMessage() {
val lastMessage = _messages.lastOrNull()
lastMessage?.let {
val newMessage = lastMessage.apply { isPending = false }
_messages.removeLast()
_messages.add(newMessage)
}
}
}
data class ChatUiState(
val isLoading : Boolean,
val messages: List<ChatMessage>
)
Loading