오류수정
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------ 제공자
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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모르는 것은 아는 척하지 않는다."
|
||||
|
||||
Reference in New Issue
Block a user