fuzzyworld

ai-chat-android-auto / files / app / src / main / java / net / fuzzyworld / aichat / AiProvider.kt

AiProvider.kt

1010 B · history · blame

1package net.fuzzyworld.aichat
2
3import okhttp3.OkHttpClient
4import java.util.concurrent.TimeUnit
5
6data class ModelInfo(val id: String, val displayName: String)
7
8interface AiProvider {
9 /** Stable key used in SharedPreferences. Never change after release. */
10 val id: String
11 val displayName: String
12 val defaultBaseUrl: String
13 val defaultModel: String
14 val requiresApiKey: Boolean
15 /** Whether the user can override the base URL (Ollama, Custom). */
16 val allowsBaseUrlOverride: Boolean
17 val supportsWebSearch: Boolean
18
19 fun ask(
20 apiKey: String,
21 baseUrl: String,
22 model: String,
23 question: String,
24 onResult: (String?) -> Unit,
25 )
26
27 fun listModels(
28 apiKey: String,
29 baseUrl: String,
30 onResult: (List<ModelInfo>?) -> Unit,
31 )
32}
33
34internal object Http {
35 val client: OkHttpClient = OkHttpClient.Builder()
36 .connectTimeout(30, TimeUnit.SECONDS)
37 .readTimeout(90, TimeUnit.SECONDS)
38 .build()
39}