오류수정

This commit is contained in:
2026-09-01 14:44:46 +09:00
parent a5a1f1d9e9
commit 01c852fef9
3 changed files with 34 additions and 6 deletions

View File

@@ -46,7 +46,7 @@ public class ChatConfig
/// <summary>Gemini API 키. 비우면 환경 변수 GEMINI_API_KEY 를 쓴다.</summary>
public string geminiApiKey = "";
public string geminiModel = "gemini-3.7-flash";
public string geminiModel = "gemini-3.6-flash";
// --- 공통 ---
@@ -132,10 +132,33 @@ public bool Save()
}
}
/// <summary>손으로 고친 설정 파일에 모르는 값이 적혀 있을 수 있다. 아는 값으로 되돌린다.</summary>
/// <summary>
/// 설정 파일에 모르는 값이 적혀 있을 수 있다. 아는 값으로 되돌린다.
///
/// 특히 모델 이름은 제공자가 언제든 없앤다(예: gemini-2.5-flash 는 신규 사용자에게
/// 제공 중단됐다). 설정 화면의 선택지에 없는 값이 파일에 남아 있으면, 화면은
/// 첫 항목을 칠해 보여주는데 실제 요청은 예전 값으로 나간다 — 보이는 것과
/// 쓰이는 것이 어긋난다. 그 상태가 제일 찾기 어렵다.
/// </summary>
void Normalize()
{
if (provider != ProviderGemini) provider = ProviderAnthropic;
model = Coerce(model, AnthropicChatBackend.SelectableModels, "model");
effort = Coerce(effort, AnthropicChatBackend.SelectableEfforts, "effort");
geminiModel = Coerce(geminiModel, GeminiChatBackend.SelectableModels, "geminiModel");
}
static string Coerce(string value, (string Label, string Id)[] options, string field)
{
foreach (var option in options)
{
if (option.Id == value) return value;
}
Debug.LogWarning($"[ChatConfig] {field} 의 '{value}' 는 선택지에 없어 " +
$"'{options[0].Id}' 로 되돌립니다.");
return options[0].Id;
}
// ------------------------------------------------------------------ 제공자

View File

@@ -32,14 +32,19 @@ public class GeminiChatBackend : MonoBehaviour, IChatBackend
[SerializeField] bool verboseLog = true;
/// <summary>
/// 설정 화면에 보여줄 모델 선택지. 전부 무료 티어에 포함된 Flash 계열이다.
/// 데스크톱 비서는 짧게 여러 번 주고받으므로 Pro 보다 Flash 가 맞다.
/// 설정 화면에 보여줄 모델 선택지. 데스크톱 비서는 짧게 여러 번 주고받으므로
/// Pro 보다 Flash 가 맞다.
///
/// 이 목록은 언제든 낡는다. 실제로 2.5 계열은 신규 사용자에게 제공이 끊겼고
/// 서버가 404 와 함께 "3.6 을 쓰라"고 회신한다. 그래서 막혔을 때는
/// ListUsableModels 가 이 키로 실제 쓸 수 있는 목록을 서버에 물어본다.
/// 목록이 또 낡으면 그쪽 안내를 따르면 된다.
/// </summary>
public static readonly (string Label, string Id)[] SelectableModels =
{
("3.6 Flash", "gemini-3.6-flash"),
("3.7 Flash", "gemini-3.7-flash"),
("3.5 Flash", "gemini-3.5-flash"),
("2.5 Flash", "gemini-2.5-flash"),
};
ChatConfig config;

View File

@@ -4,7 +4,7 @@
"model": "claude-opus-5",
"effort": "low",
"geminiApiKey": "AQ.Ab8RN6IyGR0lHx5BYmYTf-k4BZBxSVs21RajRn1O6s62wQdxug",
"geminiModel": "gemini-2.5-flash",
"geminiModel": "gemini-3.6-flash",
"maxTokens": 2048,
"maxHistoryMessages": 40,
"persona": "너는 사용자의 데스크톱 위에 사는 작은 캐릭터 비서다.\n말투는 친근한 반말. 사용자가 존댓말을 쓰면 존댓말로 맞춰준다.\n화면 한켠의 작은 말풍선에 표시되므로 답변은 두세 문장 안에서 끝낸다.\n목록이나 표는 쓰지 않고, 길어질 것 같으면 핵심만 말한 뒤 더 들을지 되묻는다.\n모르는 것은 아는 척하지 않는다."