Skip to content

Commit 180ed77

Browse files
feat: OpenAIモデル名を変更可能にする (#121)
* feat: OpenAIモデル名を変更可能にする OpenAI APIを利用する際、gpt-4o-mini以外のモデル (GPT-4.1など) も利用できるように、設定画面からモデル名を指定できるようにする。 主な変更点: - `Config` に `OpenAiModelName` 設定項目を追加 (デフォルト値: "gpt-4o-mini") - 設定画面 (`ConfigWindow`) にモデル名を入力するTextFieldを追加 - `OpenAIClient` が設定されたモデル名を使用するように修正 - Config定義の構成をリファクタリングし、再宣言エラーを解消 - APIリクエスト時に使用するモデル名をデバッグログに出力する機能を追加 * コメント対応 * 不要な部分を削除 * IDミスってpushしたので戻す
1 parent 13eabd3 commit 180ed77

File tree

5 files changed

+18
-4
lines changed

5 files changed

+18
-4
lines changed

azooKeyMac/Configs/CustomCodableConfigItem.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ extension Config {
103103
])
104104
static let key: String = "dev.ensan.inputmethod.azooKeyMac.preference.user_dictionary_temporal2"
105105
}
106-
107106
}
108107

109108
extension Config {

azooKeyMac/Configs/StringConfigItem.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,11 @@ extension Config {
4141
static var key: String = "dev.ensan.inputmethod.azooKeyMac.preference.ZenzaiProfile"
4242
}
4343
}
44+
45+
extension Config {
46+
/// OpenAIモデル名
47+
struct OpenAiModelName: StringConfigItem {
48+
static var `default`: String = "gpt-4o-mini"
49+
static var key: String = "dev.ensan.inputmethod.azooKeyMac.preference.OpenAiModelName"
50+
}
51+
}

azooKeyMac/InputController/OpenAIClient.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,17 +178,19 @@ private struct Prompt {
178178
// - properties:
179179
// - prompt: 変換対象の前のテキスト
180180
// - target: 変換対象のテキスト
181+
// - modelName: モデル名
181182
//
182183
// - methods:
183184
// - toJSON(): リクエストをOpenAI APIに適したJSON形式に変換する。
184185
struct OpenAIRequest {
185186
let prompt: String
186187
let target: String
188+
let modelName: String
187189

188190
// リクエストをJSON形式に変換する関数
189191
func toJSON() -> [String: Any] {
190192
[
191-
"model": "gpt-4o-mini", // Structured Outputs対応モデル
193+
"model": modelName,
192194
"messages": [
193195
["role": "system", "content": "You are an assistant that predicts the continuation of short text."],
194196
["role": "user", "content": """

azooKeyMac/InputController/azooKeyMacInputController.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,8 +467,10 @@ extension azooKeyMacInputController {
467467
self.segmentsManager.appendDebugMessage("プロンプト取得成功: \(prompt) << \(composingText)")
468468

469469
let apiKey = Config.OpenAiApiKey().value
470-
let request = OpenAIRequest(prompt: prompt, target: composingText)
471-
self.segmentsManager.appendDebugMessage("APIリクエスト準備完了: prompt=\(prompt), target=\(composingText)")
470+
let modelName = Config.OpenAiModelName().value
471+
let request = OpenAIRequest(prompt: prompt, target: composingText, modelName: modelName)
472+
self.segmentsManager.appendDebugMessage("APIリクエスト準備完了: prompt=\(prompt), target=\(composingText), modelName=\(modelName)")
473+
self.segmentsManager.appendDebugMessage("Using OpenAI Model: \(modelName)")
472474

473475
// 非同期タスクでリクエストを送信
474476
Task {

azooKeyMac/Windows/ConfigWindow.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ struct ConfigWindow: View {
99
@ConfigState private var zenzaiPersonalizationLevel = Config.ZenzaiPersonalizationLevel()
1010
@ConfigState private var enableOpenAiApiKey = Config.EnableOpenAiApiKey()
1111
@ConfigState private var openAiApiKey = Config.OpenAiApiKey()
12+
@ConfigState private var openAiModelName = Config.OpenAiModelName()
1213
@ConfigState private var learning = Config.Learning()
1314
@ConfigState private var inferenceLimit = Config.ZenzaiInferenceLimit()
1415
@ConfigState private var debugWindow = Config.DebugWindow()
@@ -110,6 +111,8 @@ struct ConfigWindow: View {
110111
isPresented: $openAiApiKeyPopover
111112
)
112113
}
114+
TextField("OpenAI Model Name", text: $openAiModelName, prompt: Text("例: gpt-4o-mini"))
115+
.disabled(!$enableOpenAiApiKey.wrappedValue)
113116
}
114117
}
115118
Spacer()

0 commit comments

Comments
 (0)