Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@ internal object Constants {
internal const val OPENAI_TOKEN = "{OPENAI_KEY}"

/** Chat model: "gpt-4-32k" or "gpt-3.5-turbo-16k" */
internal const val OPENAI_CHAT_MODEL = "gpt-3.5-turbo" // 4096 tokens for Sliding Window testing
internal const val OPENAI_CHAT_MODEL = "gpt-3.5-turbo-16k" // 4096 tokens for Sliding Window testing

/** Tokenizer model: GPT_4_32K or GPT_3_5_TURBO_16K */
internal val OPENAI_CHAT_TOKENIZER_MODEL = ModelType.GPT_3_5_TURBO // to match above
internal val OPENAI_CHAT_TOKENIZER_MODEL = ModelType.GPT_3_5_TURBO_16K // to match above

/** Completion model: text-davinci-003 */
internal const val OPENAI_COMPLETION_MODEL = "text-davinci-003"

/** Maximum token limit for model: 4,096 for "gpt-3.5-turbo"
* 16,384 for gpt-3.5-turbo-16k
* 32,768 for gpt-4-32k
* (used in Sliding Window calculations) */
internal const val OPENAI_MAX_TOKENS = 4096
internal const val OPENAI_MAX_TOKENS = 16384

/** Embedding model: text-embedding-ada-002 */
internal const val OPENAI_EMBED_MODEL = "text-embedding-ada-002"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import com.aallam.openai.client.OpenAI
import com.example.compose.jetchat.data.CustomChatMessage
import com.example.compose.jetchat.data.DroidconContract
import com.example.compose.jetchat.data.DroidconDbHelper
import com.example.compose.jetchat.data.DroidconSessionData
import com.example.compose.jetchat.data.DroidconSessionObjects
import com.example.compose.jetchat.data.SlidingWindow
import com.example.compose.jetchat.functions.AddFavoriteFunction
import com.example.compose.jetchat.functions.AskDatabaseFunction
Expand Down Expand Up @@ -283,7 +283,7 @@ class DroidconEmbeddingsWrapper(val context: Context?) {
for (dpKey in sortedVectors.tailMap(0.8)) {
Log.i("LLM", "Add to preamble: ${dpKey.key} -> ${dpKey.value}")

messagePreamble += DroidconSessionData.droidconSessions[dpKey.value] + "\n\n"
messagePreamble += DroidconSessionObjects.droidconSessions[dpKey.value]?.toRagString() + "\n\n"

}
messagePreamble += "\n\nUse the above information to answer the following question. Summarize and provide date/time and location if appropriate.\n\n"
Expand Down Expand Up @@ -361,10 +361,10 @@ class DroidconEmbeddingsWrapper(val context: Context?) {
Log.i("LLM", "Database $rowCount rows already exist - not loaded again")
} else {
Log.i("LLM", "Start embedding requests (database is empty)")
for (session in DroidconSessionData.droidconSessions) {
for (session in DroidconSessionObjects.droidconSessions) {
val embeddingRequest = EmbeddingRequest(
model = ModelId(Constants.OPENAI_EMBED_MODEL),
input = listOf(session.value)
input = listOf(session.value.forEmbedding())
)
val embedding = openAI.embeddings(embeddingRequest)
val vector = embedding.embeddings[0].embedding.toDoubleArray()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,26 @@ data class SessionInfo(
val subject: String,
val description: String = "" // TODO: don't have this optional
) {
/**
* Embed JUST the information that contains relevant context for vector similarity searching
*/
fun forEmbedding () : String {
return "Speaker role: $role\nSubject: $subject\nDescription:$description"
}

/** Mimic the old way that the code added session information to the prompt
* (from DroidconSessionData.kt) */
fun toRagString () : String {
return """
Speaker: $speaker
Role: $role
Location: $location
Date: $date
Time: $time
Subject: $subject
Description: $description""".trimIndent()
}

/** Simple JSON hack, TODO: add Json compiler extension for @Serializable */
fun toJson () : String {
// hit some bugs in the past where long text sneaks " double-quotes in.
Expand Down