Skip to content

Commit 38dd3ea

Browse files
committed
refactor: enum화, cli 사용성 개선
1 parent e17348e commit 38dd3ea

21 files changed

Lines changed: 447 additions & 806 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.commitchronicle.cli
2+
3+
enum class AIProvider(
4+
val displayName: String,
5+
val models: List<AIModel>
6+
) {
7+
OPENAI("OpenAI", listOf(
8+
AIModel("gpt-4o", "GPT-4o (Latest)"),
9+
AIModel("gpt-4o-mini", "GPT-4o Mini (Latest)"),
10+
AIModel("gpt-4-turbo", "GPT-4 Turbo"),
11+
AIModel("gpt-4", "GPT-4"),
12+
AIModel("gpt-3.5-turbo", "GPT-3.5 Turbo")
13+
)),
14+
CLAUDE("Claude", listOf(
15+
AIModel("claude-3-5-sonnet-20241022", "Claude 3.5 Sonnet (Latest)"),
16+
AIModel("claude-3-5-haiku-20241022", "Claude 3.5 Haiku (Latest)"),
17+
AIModel("claude-3-opus-20240229", "Claude 3 Opus"),
18+
AIModel("claude-3-sonnet-20240229", "Claude 3 Sonnet"),
19+
AIModel("claude-3-haiku-20240307", "Claude 3 Haiku")
20+
)),
21+
GEMINI("Gemini", listOf(
22+
AIModel("gemini-2.0-flash", "Gemini 2.0 Flash (Latest)"),
23+
AIModel("gemini-2.5-flash", "Gemini 2.5 Flash (Latest)"),
24+
AIModel("gemini-2.5-pro", "Gemini 2.5 Pro (Latest)"),
25+
AIModel("gemini-1.5-flash", "Gemini 1.5 Flash (Deprecated)"),
26+
AIModel("gemini-1.5-pro", "Gemini 1.5 Pro (Deprecated)")
27+
)),
28+
PERPLEXITY("Perplexity", listOf(
29+
AIModel("llama-3.1-sonar-small-128k-online", "Llama 3.1 Sonar Small"),
30+
AIModel("llama-3.1-sonar-large-128k-online", "Llama 3.1 Sonar Large"),
31+
AIModel("llama-3.1-sonar-huge-128k-online", "Llama 3.1 Sonar Huge")
32+
)),
33+
DEEPSEEK("DeepSeek", listOf(
34+
AIModel("deepseek-chat", "DeepSeek Chat"),
35+
AIModel("deepseek-coder", "DeepSeek Coder")
36+
));
37+
38+
val key: String get() = name.lowercase()
39+
val defaultModel: AIModel get() = models.first()
40+
41+
companion object {
42+
fun fromKey(key: String): AIProvider? = values().find { it.key == key.lowercase() }
43+
44+
fun getProviderOptions(): List<Pair<String, String>> = values().map { it.key to it.displayName }
45+
}
46+
}
47+
48+
data class AIModel(
49+
val id: String,
50+
val displayName: String
51+
) {
52+
fun toPair(): Pair<String, String> = id to displayName
53+
}
54+
55+
enum class SupportedLanguage(
56+
val code: String,
57+
val displayName: String
58+
) {
59+
ENGLISH("en", "English"),
60+
KOREAN("ko", "한국어 (Korean)"),
61+
CHINESE("zh", "中文 (Chinese)"),
62+
JAPANESE("ja", "日本語 (Japanese)");
63+
64+
fun toPair(): Pair<String, String> = code to displayName
65+
66+
companion object {
67+
fun getLanguageOptions(): List<Pair<String, String>> = values().map { it.toPair() }
68+
69+
fun fromCode(code: String): SupportedLanguage? = values().find { it.code == code }
70+
}
71+
}

0 commit comments

Comments
 (0)