수다 떨기 (GEMINI) 개발 이야기
이번 이야기는 이전 버전에서 달라지는 수다 떨기(GEMINI) 버전에 대한 이야기입니다. 이전 버전은 koGPT을 활용한 버전이었습니다. 다만, KAKAO API 가 제공하는 koGPT의 기능은 그렇게 많은 도움을 주지 않았던 거 같습니다. 해서 이번에는 구글에서 제공하고 있는 GEMINI API을 활용한 버전으로 옮겨 가고자 합니다.
https://developer.android.com/studio/preview/gemini-template?hl=ko
그 시작은 android 개발자 가이드 페이지에서 시작 됩니다. 이전 글에서도 강조했던 것과 같이 AI 이야기를 하는 부분은 prompt을 어떻게 작성을 하는 가에 따라 달라진다고 볼 수 있을 것 같습니다. android 개발자 가이드에서 보는 것과 같이 구성을 하게 되면 기본적인 APP 은 만들어질 수 있습니다.
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.google.ai.client.generativeai.GenerativeModel
import com.google.mlkit.nl.translate.Translator
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
class SummarizeViewModel(
private val generativeModel: GenerativeModel
) : ViewModel() {
private val _uiState: MutableStateFlow<SummarizeUiState> =
MutableStateFlow(SummarizeUiState.Initial)
val uiState: StateFlow<SummarizeUiState> = _uiState.asStateFlow()
var transString = mutableListOf("")
lateinit var englishGermanTranslator : Translator
fun summarize(inputText: String, englishGermanTranslator: Translator) {
_uiState.value = SummarizeUiState.Loading
val prompt = "You are a psychologist who counsels men and women on breakups. The other person who is saddened by the breakup of a loved one will ask you questions that can help them get out of the heartache of the breakup. You should answer this question by talking about various ways to get out of your current state of mind. Summarize the other person's question before answering. You must answer in Korean. Now let's ask the question : $inputText"
viewModelScope.launch {
try {
val response = generativeModel.generateContent(prompt)
response.text?.let { outputContent ->
_uiState.value = SummarizeUiState.Success(outputContent)
}
} catch (e: Exception) {
_uiState.value = SummarizeUiState.Error(e.localizedMessage ?: "")
}
}
}
}
GEMINI와 호출을 하기 위해서 구현하는 viewModel인데, prompt 구문을 한글을 번역해 영문으로 작성해 주었습니다. Gemini AI는 영문을 중심으로 기동하고 있기 때문 이기도 합니다.
앱을 구현하기 위해서는 android studio 의 버전이 최신 버전 (canari 버전입니다)을 설치하여야 가능합니다. 혹시 이전 버전을 시용해서 시도하시지는 않으시길 기원할게요.
사용자가이드
앱의 구성은 단순 간결합니다.
앱이 시작되면 향후 사용하게 될 영어 -> 한글 자동 번역을 위한 ML Data 수신을 시도합니다. 이 때는 잠시 동안(최대 3분 이내)의 대기 시간이 발생됩니다.
화면 하단에 대화창에 당신의 이야기를 들려주세요. 상담가는 이별한 남녀의 슬픔에 대한 적극적인 상담을 하게 될 겁니다. 충분한 상담이 이루어져서 당신의 마음에 평온한 시간이 함께 하실 수 있기를 기원해 드리겠습니다.
오늘도 당신의 하루에 응원을 드립니다.
수다떨기 챗봇 새로운 버전과 함께 하세요.
https://play.google.com/store/apps/details?id=com.billcorea.sudabot0222
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : Android Gradle plugin version 8.3.0 에서 만난 Manifest merger failed ? (34) | 2024.03.07 |
---|---|
안드로이드앱 만들기 : 오디오 볼륨 조절 한방에 해 보기 (12) | 2024.02.23 |
안드로이드 앱 만들기 : Google 생성형 AI 첫번째 프로젝트 빌드 해 보기 (94) | 2024.01.05 |
Compose to Kotlin Compatibility 을 검색 하면 나오는 페이지의 비교 (74) | 2024.01.04 |
앱 개발자가 살아가는 방식 (?) (72) | 2023.12.20 |