diff --git a/default/content/index.json b/default/content/index.json index 24e73e5c9..f08573e56 100644 --- a/default/content/index.json +++ b/default/content/index.json @@ -766,5 +766,13 @@ { "filename": "presets/context/Mistral V3-Tekken.json", "type": "context" + }, + { + "filename": "presets/instruct/Mistral V7.json", + "type": "instruct" + }, + { + "filename": "presets/context/Mistral V7.json", + "type": "context" } ] diff --git a/default/content/presets/context/Mistral V7.json b/default/content/presets/context/Mistral V7.json new file mode 100644 index 000000000..519d5d152 --- /dev/null +++ b/default/content/presets/context/Mistral V7.json @@ -0,0 +1,11 @@ +{ + "story_string": "[SYSTEM_PROMPT] {{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}[/SYSTEM_PROMPT]", + "example_separator": "", + "chat_start": "", + "use_stop_strings": false, + "allow_jailbreak": false, + "always_force_name2": true, + "trim_sentences": false, + "single_line": false, + "name": "Mistral V7" +} diff --git a/default/content/presets/instruct/Mistral V7.json b/default/content/presets/instruct/Mistral V7.json new file mode 100644 index 000000000..b6b81ae02 --- /dev/null +++ b/default/content/presets/instruct/Mistral V7.json @@ -0,0 +1,22 @@ +{ + "input_sequence": "[INST] ", + "output_sequence": " ", + "last_output_sequence": "", + "system_sequence": "[SYSTEM_PROMPT] ", + "stop_sequence": "", + "wrap": false, + "macro": true, + "names_behavior": "always", + "activation_regex": "", + "system_sequence_prefix": "", + "system_sequence_suffix": "", + "first_output_sequence": "", + "skip_examples": false, + "output_suffix": "", + "input_suffix": "[/INST]", + "system_suffix": "[/SYSTEM_PROMPT]", + "user_alignment_message": "", + "system_same_as_user": false, + "last_system_sequence": "", + "name": "Mistral V7" +} diff --git a/public/css/toggle-dependent.css b/public/css/toggle-dependent.css index 6abfa3e1d..b6cf2ace1 100644 --- a/public/css/toggle-dependent.css +++ b/public/css/toggle-dependent.css @@ -474,6 +474,8 @@ label[for="trim_spaces"]:has(input:checked) i.warning { #claude_function_prefill_warning { display: none; + color: red; + font-weight: bold; } #openai_settings:has(#openai_function_calling:checked):has(#claude_assistant_prefill:not(:placeholder-shown), #claude_assistant_impersonation:not(:placeholder-shown)) #claude_function_prefill_warning { diff --git a/public/index.html b/public/index.html index 3337a5ced..7fd23b432 100644 --- a/public/index.html +++ b/public/index.html @@ -2740,6 +2740,7 @@ + @@ -2979,6 +2980,7 @@ + @@ -3159,6 +3161,8 @@

Cohere Model

+ diff --git a/public/locales/ko-kr.json b/public/locales/ko-kr.json index 751209603..1aa13299f 100644 --- a/public/locales/ko-kr.json +++ b/public/locales/ko-kr.json @@ -1,13 +1,13 @@ { "Favorite": "가장 좋아하는", - "Tag": "꼬리표", - "Duplicate": "복제하다", + "Tag": "태그", + "Duplicate": "복제하기", "Persona": "페르소나", "Delete": "삭제", "AI Response Configuration": "AI 응답 구성", "AI Configuration panel will stay open": "AI 구성 패널이 열린 상태로 유지됩니다", "clickslidertips": "수동으로 값을 입력하려면 클릭하세요.", - "MAD LAB MODE ON": "매드랩 모드 켜짐", + "MAD LAB MODE ON": "미치광이 연구실 모드 켜짐", "Documentation on sampling parameters": "샘플링 매개 변수에 대한 문서", "kobldpresets": "코볼드 사전 설정", "guikoboldaisettings": "KoboldAI 인터페이스 설정", @@ -22,28 +22,28 @@ "openaipresets": "OpenAI 사전 설정", "Text Completion presets": "텍스트 완성 프리셋", "AI Module": "AI 모듈", - "Changes the style of the generated text.": "생성 된 텍스트의 스타일을 변경합니다.", + "Changes the style of the generated text.": "생성된 텍스트의 스타일을 변경합니다.", "No Module": "모듈 없음", - "Instruct": "지시하다", + "Instruct": "지시", "Prose Augmenter": "산문 증강기", "Text Adventure": "텍스트 어드벤처", "response legth(tokens)": "응답 길이 (토큰)", "Streaming": "스트리밍", - "Streaming_desc": "생성되는대로 응답을 조금씩 표시하십시오", + "Streaming_desc": "생성되는대로 응답을 조금씩 표시하세요", "context size(tokens)": "컨텍스트 크기 (토큰)", "unlocked": "잠금 해제됨", - "Only enable this if your model supports context sizes greater than 8192 tokens": "모델이 8192 토큰보다 큰 컨텍스트 크기를 지원하는 경우에만 활성화하십시오", + "Only enable this if your model supports context sizes greater than 8192 tokens": "모델이 8192 토큰보다 큰 컨텍스트 크기를 지원하는 경우에만 활성화하세요", "Max prompt cost:": "최대 프롬프트 비용:", "Display the response bit by bit as it is generated.": "생성되는 대답을 조금씩 표시합니다.", "When this is off, responses will be displayed all at once when they are complete.": "이 기능이 꺼져 있으면 대답은 완료되면 한 번에 모두 표시됩니다.", "Temperature": "온도", - "rep.pen": "반복 패널티", - "Rep. Pen. Range.": "반복 벌칙 범위", - "Rep. Pen. Slope": "대표적 패널티 기울기", - "Rep. Pen. Freq.": "반복 벌칙 빈도", - "Rep. Pen. Presence": "반복 벌칙 존재", + "rep.pen": "반복 페널티", + "Rep. Pen. Range.": "반복 페널티 범위", + "Rep. Pen. Slope": "대표적 페널티 기울기", + "Rep. Pen. Freq.": "반복 페널티 빈도", + "Rep. Pen. Presence": "반복 페널티 존재", "TFS": "TFS", - "Phrase Repetition Penalty": "구절 반복 패널티", + "Phrase Repetition Penalty": "구절 반복 페널티", "Off": "끄기", "Very light": "매우 가벼운", "Light": "가벼운", @@ -51,17 +51,17 @@ "Aggressive": "공격적", "Very aggressive": "매우 공격적", "Unlocked Context Size": "잠금 해제된 컨텍스트 크기", - "Unrestricted maximum value for the context slider": "컨텍스트 슬라이더의 제한 없는 최대값", + "Unrestricted maximum value for the context slider": "컨텍스트 슬라이더에 대한 제한 없는 최대값", "Context Size (tokens)": "컨텍스트 크기 (토큰)", "Max Response Length (tokens)": "최대 응답 길이 (토큰)", "Multiple swipes per generation": "세대당 다중 스와이프", "Enable OpenAI completion streaming": "OpenAI 완성 스트리밍 활성화", - "Frequency Penalty": "빈도 패널티", - "Presence Penalty": "존재 패널티", + "Frequency Penalty": "빈도 페널티", + "Presence Penalty": "존재 페널티", "Count Penalty": "카운트 페널티", "Top K": "상위 K", "Top P": "상위 P", - "Repetition Penalty": "반복 벌칙", + "Repetition Penalty": "반복 페널티", "Min P": "최소 P", "Top A": "상위 A", "Quick Prompts Edit": "빠른 프롬프트 편집", @@ -69,12 +69,12 @@ "NSFW": "NSFW", "Jailbreak": "탈옥", "Utility Prompts": "유틸리티 프롬프트", - "Impersonation prompt": "피소하는 프롬프트", + "Impersonation prompt": "사칭 프롬프트", "Restore default prompt": "기본 프롬프트 복원", - "Prompt that is used for Impersonation function": "피소 기능에 사용되는 프롬프트", - "World Info Format Template": "세계 정보 형식 템플릿", + "Prompt that is used for Impersonation function": "사칭 기능에 사용되는 프롬프트", + "World Info Format Template": "월드 인포 형식 템플릿", "Restore default format": "기본 형식 복원", - "Wraps activated World Info entries before inserting into the prompt.": "프롬프트에 삽입하기 전에 활성화된 세계 정보 항목을 래핑합니다.", + "Wraps activated World Info entries before inserting into the prompt.": "프롬프트에 삽입하기 전에 활성화된 월드 인포 항목을 래핑합니다.", "scenario_format_template_part_1": "사용", "scenario_format_template_part_2": "내용이 삽입된 위치를 표시합니다.", "Scenario Format Template": "시나리오 형식 템플릿", @@ -94,7 +94,7 @@ "Replace empty message": "빈 메시지 대체", "Send this text instead of nothing when the text box is empty.": "텍스트 상자가 비어 있을 때 이 텍스트를 아무것도 없이 보내세요.", "Seed": "시드", - "Set to get deterministic results. Use -1 for random seed.": "결정적인 결과를 얻으려면 설정하세요. 무작위 시드에는 -1을 사용합니다.", + "Set to get deterministic results. Use -1 for random seed.": "결정적인 결과를 얻으려면 설정하세요. 무작위 시드를 위해서는 -1 값을 사용합니다.", "Temperature controls the randomness in token selection": "온도는 토큰 선택에서의 무작위성을 제어합니다.", "Top_K_desc": "Top K는 선택할 수 있는 최대 상위 토큰 양을 설정합니다.", "Top_P_desc": "Top P (일명 핵심 샘플링)", @@ -103,60 +103,60 @@ "Min_P_desc": "Min P는 기본 최소 확률을 설정합니다.", "Top_A_desc": "Top A는 가장 높은 토큰 확률의 제곱에 기반하여 토큰 선택에 대한 임계값을 설정합니다.", "Tail_Free_Sampling_desc": "꼬리 제거 샘플링 (TFS)", - "rep.pen range": "반복 패널티 범위", - "Mirostat": "미로스타트", - "Mode": "방법", + "rep.pen range": "반복 페널티 범위", + "Mirostat": "Mirostat", + "Mode": "모드", "Mirostat_Mode_desc": "값이 0이면 Mirostat가 완전히 비활성화됩니다. 1은 Mirostat 1.0용이고 2는 Mirostat 2.0용입니다.", - "Tau": "타우", + "Tau": "Tau", "Mirostat_Tau_desc": "Mirostat 출력의 가변성을 제어합니다.", - "Eta": "에타", + "Eta": "Eta", "Mirostat_Eta_desc": "Mirostat의 학습률을 제어합니다.", "Ban EOS Token": "EOS 토큰 금지", "Ban_EOS_Token_desc": "KoboldCpp가 포함된 EOS(End-of-Sequence) 토큰(및 KoboldAI가 포함된 다른 토큰도 가능)을 금지합니다.\r스토리 작성에 적합하지만 채팅 및 교육 모드에는 사용하면 안 됩니다.", "GBNF Grammar": "GBNF 문법", "Type in the desired custom grammar": "원하는 사용자 정의 문법을 입력하세요.", "Samplers Order": "샘플러 순서", - "Samplers will be applied in a top-down order. Use with caution.": "샘플러는 위에서 아래로 적용됩니다. 주의하여 사용하십시오.", - "Tail Free Sampling": "꼬리가 자유로운 샘플링", - "Load koboldcpp order": "코볼드 CPP 순서로 로드", - "Preamble": "전문", - "Use style tags to modify the writing style of the output.": "스타일 태그를 사용하여 출력의 쓰기 스타일을 수정하십시오.", - "Banned Tokens": "금지 된 토큰", + "Samplers will be applied in a top-down order. Use with caution.": "샘플러는 위에서 아래로 적용됩니다. 주의하여 사용하세요.", + "Tail Free Sampling": "Tail Free 샘플링", + "Load koboldcpp order": "kobold CPP 순서로 로드", + "Preamble": "서두", + "Use style tags to modify the writing style of the output.": "스타일 태그를 사용하여 출력의 쓰기 스타일을 수정하세요.", + "Banned Tokens": "금지된 토큰", "Sequences you don't want to appear in the output. One per line.": "출력에 나타나지 않길 원하는 시퀀스입니다. 한 줄에 하나씩.", - "Logit Bias": "로그 비애", + "Logit Bias": "Logit 편향", "Add": "추가", - "Helps to ban or reenforce the usage of certain words": "특정 단어의 사용을 금지하거나 강화하는 데 도움이됩니다.", + "Helps to ban or reenforce the usage of certain words": "특정 단어의 사용을 금지하거나 강화하는데 도움이 됩니다.", "CFG Scale": "CFG 스케일", - "Negative Prompt": "부정적인 프롬프트", - "Add text here that would make the AI generate things you don't want in your outputs.": "AI가 출력에서 원하지 않는 것을 생성하도록하는 텍스트를 여기에 추가하십시오.", - "Used if CFG Scale is unset globally, per chat or character": "CFG 스케일이 전역적으로 설정되지 않은 경우 사용됩니다. 채팅 당 또는 캐릭터 당", - "Mirostat Tau": "미로스탯 타우", - "Mirostat LR": "미로스타트 LR", + "Negative Prompt": "부정적 프롬프트", + "Add text here that would make the AI generate things you don't want in your outputs.": "AI가 출력에서 원하지 않는 것을 생성하도록하는 텍스트를 여기에 추가하세요.", + "Used if CFG Scale is unset globally, per chat or character": "CFG 스케일이 전역적으로 설정되지 않은 경우, 각 채팅 또는 각 캐릭터마다 사용됩니다.", + "Mirostat Tau": "Mirostat Tau", + "Mirostat LR": "Mirostat LR", "Min Length": "최소 길이", "Top K Sampling": "상위 K 샘플링", - "Nucleus Sampling": "핵 샘플링", + "Nucleus Sampling": "Nucleus 샘플링", "Top A Sampling": "상위 A 샘플링", "CFG": "CFG", "Neutralize Samplers": "샘플러 중화", - "Set all samplers to their neutral/disabled state.": "모든 샘플러를 중립/비활성 상태로 설정하십시오.", + "Set all samplers to their neutral/disabled state.": "모든 샘플러를 중립/비활성 상태로 설정하세요.", "Sampler Select": "샘플러 선택", "Customize displayed samplers or add custom samplers.": "표시된 샘플러를 사용자 정의하거나 사용자 정의 샘플러를 추가하세요.", - "Epsilon Cutoff": "이프실론 자르기", + "Epsilon Cutoff": "Epsilon 자르기", "Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled": "Epsilon 절단은 토큰이 샘플링에서 제외되는 확률 하한선을 설정합니다.", - "Eta Cutoff": "에타 자르기", - "Eta_Cutoff_desc": "에타 절단은 특별한 에타 샘플링 기술의 주요 매개 변수입니다. 1e-4 단위로; 합리적인 값은 3입니다. 비활성화하려면 0으로 설정하십시오. 자세한 내용은 Hewitt et al. (2022)의 Truncation Sampling as Language Model Desmoothing 논문을 참조하십시오.", - "rep.pen decay": "대표 펜 부패", - "Encoder Rep. Pen.": "인코더 반복 패널티", - "No Repeat Ngram Size": "반복 없는 N그램 크기", + "Eta Cutoff": "Eta 자르기", + "Eta_Cutoff_desc": "Eta 절단은 특별한 Eta 샘플링 기술의 주요 매개 변수입니다. 1e-4 단위로; 합리적인 값은 3입니다. 비활성화하려면 0으로 설정하세요. 자세한 내용은 Hewitt et al. (2022)의 Truncation Sampling as Language Model Desmoothing 논문을 참조하세요.", + "rep.pen decay": "반복 페널티 붕괴", + "Encoder Rep. Pen.": "인코더 반복 페널티", + "No Repeat Ngram Size": "반복 없는 Ngram 크기", "Skew": "비스듬한", - "Max Tokens Second": "최대 토큰 초", + "Max Tokens Second": "초당 최대 토큰", "Smooth Sampling": "부드러운 샘플링", "Smooth_Sampling_desc": "2차/3차 변환을 사용하여 분포를 조정할 수 있습니다. 평활화 요소 값이 낮을수록 더 창의적이 됩니다. 일반적으로 0.2-0.3 사이가 가장 적합합니다(곡선 = 1로 가정). 평활화 곡선 값이 높을수록 곡선이 더 가파르게 변하고 확률이 낮은 선택을 더욱 적극적으로 처벌하게 됩니다. 1.0 곡선은 Smoothing Factor만 사용하는 것과 같습니다.", "Smoothing Factor": "평활화 요소", "Smoothing Curve": "평활화 곡선", "DRY_Repetition_Penalty_desc": "DRY는 입력의 끝을 이전에 입력에서 발생한 시퀀스로 확장하는 토큰에 페널티를 적용합니다. 비활성화하려면 승수를 0으로 설정하세요.", "DRY Repetition Penalty": "DRY 반복 페널티", - "DRY_Multiplier_desc": "DRY를 활성화하려면 값 > 0으로 설정하십시오. 가장 짧은 페널티를 받는 시퀀스에 대한 페널티의 크기를 제어합니다.", + "DRY_Multiplier_desc": "DRY를 활성화하려면 값 > 0으로 설정하세요. 가장 짧은 페널티를 받는 시퀀스에 대한 페널티의 크기를 제어합니다.", "Multiplier": "승수", "DRY_Base_desc": "시퀀스 길이가 증가함에 따라 페널티가 증가하는 속도를 제어합니다.", "Base": "베이스", @@ -172,23 +172,23 @@ "Maximum Temp": "최대 온도", "Exponent": "지수", "Mirostat (mode=1 is only for llama.cpp)": "Mirostat (mode=1은 llama.cpp 전용입니다)", - "Mirostat_desc": "미로스타트는 출력 헷갈림의 온도계입니다", - "Mirostat Mode": "미로스탯 모드", - "Variability parameter for Mirostat outputs": "미로스탯 출력의 변동성 매개변수", - "Mirostat Eta": "미로스탯 에타", - "Learning rate of Mirostat": "미로스탯의 학습률", + "Mirostat_desc": "Mirostat은 언어 모델의 출력 텍스트의 복잡도(perplexity)를 직접 제어하여 더 자연스러운 텍스트를 생성하도록 하는 적응형 샘플링 알고리즘입니다", + "Mirostat Mode": "Mirostat 모드", + "Variability parameter for Mirostat outputs": "Mirostat 출력의 변동성 매개변수", + "Mirostat Eta": "Mirostat Eta", + "Learning rate of Mirostat": "Mirostat 학습률", "Beam search": "빔 검색", "Helpful tip coming soon.": "유용한 팁을 곧 알려드리겠습니다.", "Number of Beams": "빔의 수", - "Length Penalty": "길이 패널티", + "Length Penalty": "길이 페널티", "Early Stopping": "조기 중지", "Contrastive search": "대조적 검색", - "Penalty Alpha": "패널티 알파", + "Penalty Alpha": "페널티 알파", "Strength of the Contrastive Search regularization term. Set to 0 to disable CS": "대조적 검색 정규화 항의 강도입니다. CS를 비활성화하려면 0으로 설정하세요.", "Do Sample": "샘플", "Add BOS Token": "BOS 토큰 추가", - "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "프롬프트의 시작 부분에 bos_token을 추가하십시오. 이를 비활성화하면 응답이 더 창의적으로 될 수 있습니다.", - "Ban the eos_token. This forces the model to never end the generation prematurely": "eos_token을 금지하십시오. 이는 모델이 생성을 이르게 종료하지 않도록 합니다", + "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "프롬프트의 시작 부분에 bos_token을 추가하세요. 이를 비활성화하면 응답이 더 창의적으로 될 수 있습니다.", + "Ban the eos_token. This forces the model to never end the generation prematurely": "eos_token을 금지하세요. 이는 모델이 생성을 이르게 종료하지 않도록 합니다", "Ignore EOS Token": "EOS 토큰 무시", "Ignore the EOS Token even if it generates.": "EOS 토큰이 생성되더라도 무시하세요.", "Skip Special Tokens": "특수 토큰 건너뛰기", @@ -210,25 +210,27 @@ "llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.": "llama.cpp만 가능합니다. 샘플러의 순서를 결정합니다. Mirostat 모드가 0이 아닌 경우 샘플러 순서는 무시됩니다.", "Sampler Priority": "샘플러 우선 순위", "Ooba only. Determines the order of samplers.": "Ooba 전용. 샘플러의 순서를 결정합니다.", - "Character Names Behavior": "캐릭터 이름 행동", + "Character Names Behavior": "캐릭터 이름 동작", + "[title]character_names_none": "캐릭터 이름 접두사를 추가하지 않습니다. 그룹 채팅에서는 좋지 않을 수 있으므로, 이 설정을 선택할 때는 주의해야 합니다.", "Helps the model to associate messages with characters.": "모델이 메시지를 캐릭터와 연관시키는 데 도움이 됩니다.", "None": "없음", - "character_names_default": "그룹 및 과거 페르소나는 제외됩니다. 그렇지 않으면 프롬프트에 이름을 제공해야 합니다.", + "None (not injected)": "없음 (삽입되지 않음)", + "character_names_default": "그룹과 과거 페르소나에 대해 접두사를 추가합니다. 그 외의 경우에는 프롬프트에 이름을 직접 제공해야 합니다.", "Don't add character names.": "캐릭터 이름을 추가하지 마세요.", "Completion": "완료 객체", - "character_names_completion": "제한 사항이 적용됩니다. 라틴 영숫자 및 밑줄만 사용할 수 있습니다. 모든 소스, 특히 Claude, MistralAI, Google에서 작동하지 않습니다.", - "Add character names to completion objects.": "완성 개체에 캐릭터 이름을 추가합니다.", + "character_names_completion": "제한 사항이 적용됩니다. 라틴 알파벳, 숫자, 밑줄만 사용 가능합니다. 모든 소스, 특히 Claude, MistralAI, Google에서 작동하지 않습니다.", + "Add character names to completion objects.": "완성 객체에 캐릭터 이름을 추가합니다.", "Message Content": "메시지 내용", - "Prepend character names to message contents.": "메시지 내용 앞에 문자 이름을 추가합니다.", - "Continue Postfix": "접미사 계속하기", + "Prepend character names to message contents.": "메시지 내용 앞에 캐릭터의 이름을 추가합니다.", + "Continue Postfix": "계속하기 접미사", "The next chunk of the continued message will be appended using this as a separator.": "계속되는 메시지의 다음 청크는 이를 구분 기호로 사용하여 추가됩니다.", - "Space": "공간", - "Newline": "개행", - "Double Newline": "이중 개행", + "Space": "한 칸 띄우기", + "Newline": "새로운 줄", + "Double Newline": "이중 줄", "Wrap user messages in quotes before sending": "전송 전에 사용자 메시지를 따옴표로 둘러싸기", - "Wrap in Quotes": "따옴표 안에 넣기", - "Wrap entire user message in quotes before sending.": "전체 사용자 메시지를 보내기 전에 따옴표로 묶으십시오.", - "Leave off if you use quotes manually for speech.": "말하기 위해 수동으로 따옴표를 사용하는 경우 무시하십시오.", + "Wrap in Quotes": "따옴표로 메시지 감싸기", + "Wrap entire user message in quotes before sending.": "사용자 메시지 전체를 보내기 전에 따옴표로 감싸집니다.", + "Leave off if you use quotes manually for speech.": "말하기 위해 수동으로 따옴표를 사용하는 경우 체크하지 마세요.", "Continue prefill": "사전 작성 계속", "Continue sends the last message as assistant role instead of system message with instruction.": "계속하면 지시와 함께 시스템 메시지 대신 마지막 메시지를 어시스턴트 역할로 보냅니다.", "Squash system messages": "시스템 메시지 압축", @@ -239,7 +241,7 @@ "image_inlining_hint_2": "메시지에 대한 조치 또는", "image_inlining_hint_3": "채팅에 이미지 파일을 첨부하는 메뉴입니다.", "Inline Image Quality": "인라인 이미지 품질", - "openai_inline_image_quality_auto": "자동차", + "openai_inline_image_quality_auto": "자동", "openai_inline_image_quality_low": "낮은", "openai_inline_image_quality_high": "높은", "Use AI21 Tokenizer": "AI21 토크나이저 사용", @@ -250,35 +252,35 @@ "(Gemini 1.5 Pro/Flash only)": "(Gemini 1.5 Pro/Flash 전용)", "Merges_all_system_messages_desc_1": "비시스템 역할이 있는 첫 번째 메시지까지 모든 시스템 메시지를 병합하여", "Merges_all_system_messages_desc_2": "필드.", - "Assistant Prefill": "어시스턴트 사전 작성", + "Assistant Prefill": "어시스턴트 프리필", "Start Claude's answer with...": "클로드의 답변 시작하기...", - "Assistant Impersonation Prefill": "보조자 가장 미리 채우기", + "Assistant Impersonation Prefill": "어시스턴트 사칭 프리필", "Use system prompt (Claude 2.1+ only)": "시스템 프롬프트 사용 (클로드 2.1+ 전용)", "Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "지원되는 모델에 대한 시스템 프롬프트를 보냅니다. 비활성화된 경우 사용자 메시지가 프롬프트의 처음에 추가됩니다.", "User first message": "사용자 첫 번째 메시지", - "Restore User first message": "사용자 우선 메시지 복원", - "Human message": "인간의 메시지, 지시 등\n비어 있으면 아무것도 추가하지 않습니다. 즉, '사용자' 역할이 있는 새 프롬프트가 필요합니다.", + "Restore User first message": "사용자의 첫 번째 메시지 복원", + "Human message": "인간 메시지, 지시 등\n비어 있으면 아무것도 추가하지 않습니다. 즉, '사용자' 역할이 있는 새 프롬프트가 필요합니다.", "New preset": "새 프리셋", "Delete preset": "프리셋 삭제", "View / Edit bias preset": "바이어스 프리셋 보기/편집", "Add bias entry": "바이어스 항목 추가", "Most tokens have a leading space.": "대부분의 토큰에는 선행 공백이 있습니다.", "API Connections": "API 연결", - "Text Completion": "텍스트 완성", - "Chat Completion": "채팅 완료", + "Text Completion": "Text Completion", + "Chat Completion": "Chat Completion", "NovelAI": "NovelAI", - "KoboldAI Horde": "KoboldAI 호드", + "KoboldAI Horde": "KoboldAI Horde", "KoboldAI": "KoboldAI", - "Avoid sending sensitive information to the Horde.": "민감한 정보를 호드에 보내지 마십시오.", + "Avoid sending sensitive information to the Horde.": "민감한 정보를 Horde에 보내지 않도록 합니다.", "Review the Privacy statement": "개인 정보 보호 정책 검토", - "Register a Horde account for faster queue times": "더 빠른 대기 시간을 위해 호드 계정을 등록하십시오.", - "Learn how to contribute your idle GPU cycles to the Horde": "여유로운 GPU 주기를 호드에 기여하는 방법 배우기", - "Adjust context size to worker capabilities": "컨텍스트 크기를 작업자 기능에 맞게 조정하십시오.", - "Adjust response length to worker capabilities": "응답 길이를 작업자 기능에 맞게 조정하십시오.", + "Register a Horde account for faster queue times": "대기 시간 감축을 원한다면 Horde 계정을 등록하세요.", + "Learn how to contribute your idle GPU cycles to the Horde": "여유로운 GPU 주기를 Horde에 기여하는 방법 배우기", + "Adjust context size to worker capabilities": "컨텍스트 크기를 작업자 기능에 맞게 조정합니다.", + "Adjust response length to worker capabilities": "응답 길이를 작업자 기능에 맞게 조정합니다.", "Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "승인된 작업자만을 대기열에 넣어 나쁜 응답을 처리할 수 있습니다. 응답 시간이 느려질 수 있습니다.", - "Trusted workers only": "신뢰할 수 있는 작업자만", + "Trusted workers only": "신뢰할 수 있는 작업자만 허용", "API key": "API 키", - "Get it here:": "여기서 얻으세요:", + "Get it here:": "여기에서 얻으세요:", "Register": "등록", "View my Kudos": "내 Kudos 보기", "Enter": "입력", @@ -287,7 +289,7 @@ "For privacy reasons, your API key will be hidden after you reload the page.": "개인 정보 보호를 위해 페이지를 다시로드한 후에는 API 키가 숨겨집니다.", "Models": "모델", "Refresh models": "모델 새로 고침", - "-- Horde models not loaded --": "-- 호드 모델 로드되지 않음 --", + "-- Horde models not loaded --": "-- Horde 모델 로드되지 않음 --", "Not connected...": "연결되지 않음...", "API url": "API URL", "Example: http://127.0.0.1:5000/api ": "예시: http://127.0.0.1:5000/api", @@ -295,9 +297,9 @@ "Cancel": "취소", "Novel API key": "NovelAPI 키", "Get your NovelAI API Key": "NovelAI API 키 가져오기", - "Enter it in the box below": "아래 상자에 입력하세요", + "Enter it in the box below": "아래 칸에 복사한 API 키를 입력하세요.", "Novel AI Model": "Novel AI 모델", - "No connection...": "연결 없음...", + "No connection...": "연결 되지 않음...", "API Type": "API 유형", "Default (completions compatible)": "기본값 [OpenAI /완성 호환: oobabooga, LM Studio 등]", "TogetherAI API Key": "TogetherAI API 키", @@ -310,10 +312,10 @@ "Model Providers": "모델 제공자", "InfermaticAI API Key": "InfermaticAI API 키", "InfermaticAI Model": "InfermaticAI 모델", - "DreamGen API key": "드림젠 API 키", - "DreamGen Model": "드림젠 모델", + "DreamGen API key": "DreamGen API 키", + "DreamGen Model": "DreamGen 모델", "Mancer API key": "Mancer API 키", - "Mancer Model": "맨서 모델", + "Mancer Model": "Mancer 모델", "Make sure you run it with": "실행하는지 확인하세요", "flag": "깃발", "API key (optional)": "API 키 (선택 사항)", @@ -325,8 +327,8 @@ "Example: 127.0.0.1:8000": "예: http://127.0.0.1:8000", "vLLM Model": "vLLM 모델", "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (OpenAI API의 래퍼 모드)", - "Aphrodite API key": "아프로디테 API 키", - "Aphrodite Model": "아프로디테 모델", + "Aphrodite API key": "Aphrodite API 키", + "Aphrodite Model": "Aphrodite 모델", "ggerganov/llama.cpp": "ggerganov/llama.cpp (출력 서버)", "Example: 127.0.0.1:8080": "예: 127.0.0.1:8080", "Example: 127.0.0.1:11434": "예: 127.0.0.1:11434", @@ -335,21 +337,23 @@ "Tabby API key": "Tabby API 키", "koboldcpp API key (optional)": "koboldcpp API 키(선택사항)", "Example: 127.0.0.1:5001": "예: 127.0.0.1:5001", - "Authorize": "승인하다", + "Authorize": "승인하기", "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.", + "Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)", "Bypass status check": "상태 확인 우회", - "Chat Completion Source": "채팅 완성 소스", + "Chat Completion Source": "채팅 완성 근원", "Reverse Proxy": "역방향 프록시", "Proxy Presets": "프록시 사전 설정", "Saved addresses and passwords.": "저장된 주소와 비밀번호.", "Save Proxy": "프록시 저장", "Delete Proxy": "프록시 삭제", "Proxy Name": "프록시 이름", + "Allow reverse proxy": "역방향 프록시 허용", "This will show up as your saved preset.": "이는 저장된 사전 설정으로 표시됩니다.", "Proxy Server URL": "프록시 서버 URL", "Alternative server URL (leave empty to use the default value).": "대체 서버 URL (기본값 사용을 원할 경우 비워 둡니다).", - "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "이 상자에 어떤 것이든 입력하기 전에 실제 OAI API 키를 API 패널에서 제거하세요.", - "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "비공식 OpenAI 프록시를 사용하는 동안 발생하는 문제에 대한 지원을 제공할 수 없습니다.", + "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "이 입력란에 어떤 것이든 입력하기 전에 반드시 실제 OAI API 키를 API 패널에서 제거하세요.", + "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "개발진은 비공식 OpenAI 프록시를 사용하는 동안 발생하는 문제에 대한 지원을 제공할 수 없습니다.", "Doesn't work? Try adding": "작동하지 않나요? 추가해 보세요", "at the end!": "마지막에!", "Proxy Password": "프록시 비밀번호", @@ -357,25 +361,30 @@ "Peek a password": "비밀번호를 엿보세요", "OpenAI API key": "OpenAI API 키", "View API Usage Metrics": "API 사용 지표 보기", - "Follow": "따르다", + "Follow": "OpenAI API 키를 얻으려면", "these directions": "이 지시 사항", - "to get your OpenAI API key.": "OpenAI API 키를 얻으려면.", + "to get your OpenAI API key.": "을 따르세요.", "Use Proxy password field instead. This input will be ignored.": "대신 \"프록시 비밀번호\" 필드를 사용하세요. 이 입력은 무시됩니다.", "OpenAI Model": "OpenAI 모델", "Bypass API status check": "API 상태 확인 우회", "Show External models (provided by API)": "외부 모델 표시 (API 제공)", "Get your key from": "다음에서 키를 받으세요", "Anthropic's developer console": "Anthropic의 개발자 콘솔", + "Slack and Poe cookies will not work here, do not bother trying.": "Slack과 Poe 쿠키는 여기서 작동하지 않습니다. 시도하지 마세요.", "Claude Model": "Claude 모델", - "Window AI Model": "창 AI 모델", + "Window AI Model": "Window AI 모델", "Model Order": "OpenRouter 모델 정렬", "Alphabetically": "알파벳순", "Price": "가격(가장 저렴)", "Context Size": "컨텍스트 크기", "Group by vendors": "공급업체별 그룹화", "Group by vendors Description": "OpenAI 모델을 한 그룹에 넣고, Anthropic 모델을 다른 그룹에 두는 등 정렬을 통해 결합할 수 있습니다.", - "Allow fallback routes": "대체 경로 허용", + "Allow fallback routes": "fallback 허용", "Allow fallback routes Description": "선택한 모델이 요청을 처리할 수 없는 경우 대체 모델이 자동으로 선택됩니다.", + "openrouter_force_instruct": "이 옵션은 오래되었으며 향후 제거될 예정입니다. 지시 형식을 사용하려면 대신 Text Completion API에서 OpenRouter로 전환하세요.", + "LEGACY": "유산", + "Force Instruct Mode formatting": "강제 지시 모드 형식", + "Force_Instruct_Mode_formatting_Description": "Instruct Mode와 이 모드가 모두 활성화된 경우 프롬프트는 SillyTavern에 의해 현재 형식을 사용하여 형식화됩니다.\n 고급 형식 설정(시스템 프롬프트 지시 제외) 비활성화된 경우 프롬프트는 OpenRouter에 의해 형식화됩니다.", "Scale API Key": "Scale API 키", "Clear your cookie": "쿠키 지우기", "Alt Method": "대체 방법", @@ -385,29 +394,30 @@ "Google Model": "구글 모델", "MistralAI API Key": "MistralAI API 키", "MistralAI Model": "MistralAI 모델", - "Groq API Key": "그로크 API 키", - "Groq Model": "그로크 모델", + "Groq API Key": "Groq API 키", + "Groq Model": "Groq 모델", "Perplexity API Key": "Perplexity API 키", - "Perplexity Model": "혼란 모델", + "Perplexity Model": "Perplexity 모델", "Cohere API Key": "Cohere API 키", "Cohere Model": "Cohere 모델", "Custom Endpoint (Base URL)": "사용자 정의 엔드포인트(기본 URL)", "Custom API Key": "커스텀 API 키", "Available Models": "사용 가능한 모델", "Prompt Post-Processing": "신속한 후처리", + "[title]API Connections;[no_connection_text]api_no_connection": "연결이 되지 않았습니다...", "Applies additional processing to the prompt before sending it to the API.": "API로 보내기 전에 프롬프트에 추가 처리를 적용합니다.", - "Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!": "짧은 테스트 메시지를 보내어 API 연결을 확인합니다. 이에 대해 크레딧이 지급될 것임을 인식하십시오!", + "Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!": "짧은 테스트 메시지를 보내어 API 연결을 확인합니다. 이에 대해 유료 크레딧이 지불될 수 있음을 인식하세요!", "Test Message": "테스트 메시지", "Auto-connect to Last Server": "마지막 서버에 자동으로 연결", - "Missing key": "❌ 키 누락", - "Key saved": "✔️ 키 저장됨", + "Missing key": "❌ 현재 저장된 키가 존재하지 않습니다.", + "Key saved": "✔️ 키 저장됨.", "View hidden API keys": "숨겨진 API 키 보기", "AI Response Formatting": "AI 응답 형식 지정", "Advanced Formatting": "고급 서식", "Context Template": "컨텍스트 템플릿", "Auto-select this preset for Instruct Mode": "지시 모드에 대해 이 프리셋 자동 선택", "Story String": "이야기 문자열", - "Example Separator": "예제 구분자", + "Example Separator": "예시 대화 구분자", "Chat Start": "채팅 시작", "Add Chat Start and Example Separator to a list of stopping strings.": "중지 문자열 목록에 채팅 시작 및 예제 구분 기호를 추가합니다.", "Use as Stop Strings": "중지 문자열로 사용", @@ -415,10 +425,10 @@ "Allow Jailbreak": "탈옥 허용", "Context Order": "컨텍스트 순서", "Summary": "요약", - "Author's Note": "작성자 메모", + "Author's Note": "작가 노트", "Example Dialogues": "예시 대화", "Hint": "힌트:", - "In-Chat Position not affected": "요약 및 작성자 메모 주문은 In-Chat 위치가 설정되지 않은 경우에만 영향을 받습니다.", + "In-Chat Position not affected": "요약 및 작가 노트 삽입 순서는 In-Chat 위치가 설정되지 않은 경우에만 영향을 받습니다.", "Instruct Mode": "지시 모드", "Enabled": "활성화됨", "instruct_bind_to_context": "활성화되면 선택한 지시 템플릿 이름이나 기본 설정에 따라 컨텍스트 템플릿이 자동으로 선택됩니다.", @@ -426,7 +436,7 @@ "Presets": "프리셋", "Auto-select this preset on API connection": "API 연결 시 이 프리셋 자동 선택", "Activation Regex": "활성화 정규식", - "Wrap Sequences with Newline": "새 줄로 시퀀스 래핑", + "Wrap Sequences with Newline": "새 줄로 시퀀스 감싸기", "Replace Macro in Sequences": "시퀀스에서 매크로 대체", "Skip Example Dialogues Formatting": "예제 대화 형식 건너뛰기", "Include Names": "이름 포함", @@ -454,9 +464,9 @@ "If enabled, System Sequences will be the same as User Sequences.": "이 기능을 활성화하면, 시스템 시퀀스가 ​​사용자 시퀀스와 동일해집니다.", "System same as User": "사용자와 동일한 시스템", "Misc. Sequences": "기타 시퀀스", - "Inserted before the first Assistant's message.": "첫 번째 보조자의 메시지 앞에 삽입됩니다.", + "Inserted before the first Assistant's message.": "어시스턴트의 첫 번째 메시지 앞에 삽입됩니다.", "First Assistant Prefix": "첫 번째 어시스턴트 접두어", - "instruct_last_output_sequence": "마지막 보조자의 메시지 앞에 삽입되거나 AI 응답을 생성할 때 마지막 프롬프트 줄로 삽입됩니다(중립/시스템 역할 제외).", + "instruct_last_output_sequence": "마지막 어시스턴트 메시지 앞에 삽입되거나 AI 응답을 생성할 때 마지막 프롬프트 줄로 삽입됩니다(중립/시스템 역할 제외).", "Last Assistant Prefix": "마지막 어시스턴트 접두사", "Will be inserted as a last prompt line when using system/neutral generation.": "시스템/중립 생성을 사용할 때 마지막 프롬프트 라인으로 삽입됩니다.", "System Instruction Prefix": "시스템 명령어 접두사", @@ -483,15 +493,15 @@ "Custom Stopping Strings": "사용자 정의 중지 문자열", "JSON serialized array of strings": "문자열의 JSON 직렬화된 배열", "Replace Macro in Custom Stopping Strings": "사용자 정의 중단 문자열에서 매크로 교체", - "Auto-Continue": "자동 계속", + "Auto-Continue": "자동 계속하기", "Allow for Chat Completion APIs": "채팅 완성 API 허용", "Target length (tokens)": "대상 길이 (토큰)", - "World Info": "세계 정보", + "World Info": "월드 인포", "Locked = World Editor will stay open": "잠금 = 월드 편집기가 열린 상태로 유지됩니다", - "Worlds/Lorebooks": "세계/로어북", - "Active World(s) for all chats": "모든 채팅에 대한 활성 세계(들)", - "-- World Info not found --": "-- 세계 정보를 찾을 수 없음 --", - "Global World Info/Lorebook activation settings": "글로벌 세계 정보/전설집 활성화 설정", + "Worlds/Lorebooks": "월드 인포/로어북", + "Active World(s) for all chats": "모든 채팅에 대한 활성화된 월드 인포(들)", + "-- World Info not found --": "-- 월드 인포를 찾을 수 없음 --", + "Global World Info/Lorebook activation settings": "글로벌 월드 인포/로어북 활성화 설정", "Click to expand": "펼치려면 클릭하세요.", "Scan Depth": "스캔 깊이", "Context %": "컨텍스트 %", @@ -513,22 +523,22 @@ "Match Whole Words": "전체 단어 일치", "Only the entries with the most number of key matches will be selected for Inclusion Group filtering": "포함 그룹 필터링을 위해 키 일치 수가 가장 많은 항목만 선택됩니다.", "Use Group Scoring": "그룹 점수 사용", - "Alert if your world info is greater than the allocated budget.": "귀하의 세계 정보가 할당된 예산보다 큰 경우 경고합니다.", + "Alert if your world info is greater than the allocated budget.": "귀하의 월드 인포가 할당된 예산보다 큰 경우 경고합니다.", "Alert On Overflow": "오버플로우 알림", - "New": "새로운", + "New": "새 월드인포", "or": "또는", "--- Pick to Edit ---": "--- 편집할 항목 선택 ---", - "Rename World Info": "월드 정보 이름 바꾸기", + "Rename World Info": "월드 인포 이름 바꾸기", "Open all Entries": "모든 항목 열기", "Close all Entries": "모든 항목 닫기", "New Entry": "새 항목", "Fill empty Memo/Titles with Keywords": "비어 있는 메모/제목을 키워드로 채우기", - "Import World Info": "월드 정보 가져오기", - "Export World Info": "월드 정보 내보내기", - "Duplicate World Info": "월드 정보 복제", - "Delete World Info": "월드 정보 삭제", + "Import World Info": "월드 인포 가져오기", + "Export World Info": "월드 인포 내보내기", + "Duplicate World Info": "월드 인포 복제", + "Delete World Info": "월드 인포 삭제", "Search...": "검색...", - "Search": "찾다", + "Search": "찾기", "Priority": "우선 순위", "Custom": "사용자 정의", "Title A-Z": "제목 A-Z", @@ -537,12 +547,12 @@ "Tokens ↘": "토큰 ↘", "Depth ↗": "깊이 ↗", "Depth ↘": "깊이 ↘", - "Order ↗": "주문 ↗", - "Order ↘": "주문 ↘", + "Order ↗": "순서 ↗", + "Order ↘": "순서 ↘", "UID ↗": "UID ↗", "UID ↘": "UID ↘", - "Trigger% ↗": "트리거% ↗", - "Trigger% ↘": "트리거% ↘", + "Trigger% ↗": "발동 확률% ↗", + "Trigger% ↘": "발동 확률% ↘", "Refresh": "새로 고침", "User Settings": "사용자 설정", "Simple": "간단한", @@ -558,7 +568,7 @@ "Delete a theme": "테마 삭제", "Update a theme file": "테마 파일 업데이트", "Save as a new theme": "새 테마로 저장", - "Avatar Style": "아바타 스타일", + "Avatar Style": "캐릭터 프로필 스타일", "Circle": "원", "Square": "정사각형", "Rectangle": "사각형", @@ -578,8 +588,8 @@ "UI Border": "UI 테두리", "User Message Blur Tint": "사용자 메시지 흐림 틴트", "AI Message Blur Tint": "AI 메시지 흐림 틴트", - "Chat Width": "채팅 폭", - "Width of the main chat window in % of screen width": "화면 너비의 %로 표시되는 기본 채팅 창 너비", + "Chat Width": "채팅창 폭", + "Width of the main chat window in % of screen width": "화면 너비의 %로 표시되는 기본 채팅창 너비", "Font Scale": "글꼴 크기", "Font size": "글꼴 크기", "Blur Strength": "흐림 강도", @@ -594,50 +604,53 @@ "No Text Shadows": "텍스트 그림자 없음", "Reduce chat height, and put a static sprite behind the chat window": "채팅 높이를 줄이고, 채팅 창 뒤에 정적 스프라이트를 넣습니다", "Waifu Mode": "와이프 모드", - "Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'": "채팅 메시지의 메시지 액션 컨텍스트 항목의 전체 목록을 항상 표시하십시오. 대신 '...' 뒤에 숨기지 않습니다.", + "Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'": "채팅 메시지의 메시지 액션 컨텍스트 항목의 전체 목록을 항상 표시하세요. 대신 '...' 뒤에 숨기지 않습니다.", "Auto-Expand Message Actions": "메시지 액션 자동 확장", "Alternative UI for numeric sampling parameters with fewer steps": "단계가 적은 숫자 샘플링 매개변수에 대한 대체 UI", "Zen Sliders": "젠 슬라이더", "Entirely unrestrict all numeric sampling parameters": "모든 숫자 샘플링 매개변수를 완전히 제한하지 않음", - "Mad Lab Mode": "미치광이 랩 모드", + "Mad Lab Mode": "미치광이 연구실 모드", "Time the AI's message generation, and show the duration in the chat log": "AI의 메시지 생성 시간을 측정하고, 채팅 로그에 지속 시간을 표시합니다", - "Message Timer": "메시지 타이머", + "Message Timer": "메시지 도착 시간 측정", "Show a timestamp for each message in the chat log": "채팅 로그의 각 메시지에 타임스탬프 표시", "Chat Timestamps": "채팅 타임스탬프", "Show an icon for the API that generated the message": "메시지를 생성한 API에 대한 아이콘 표시", - "Model Icon": "모델 아이콘", + "Model Icon": "모델 아이콘 표시", "Show sequential message numbers in the chat log": "채팅 로그에 순차적인 메시지 번호 표시", "Message IDs": "메시지 ID", "Hide avatars in chat messages.": "채팅 메시지에서 아바타 숨김.", - "Hide Chat Avatars": "채팅 아바타 숨기기", + "Hide Chat Avatars": "캐릭터 프로필 숨기기", "Show the number of tokens in each message in the chat log": "채팅 로그의 각 메시지에 토큰 수 표시", "Show Message Token Count": "메시지 토큰 개수 표시", "Single-row message input area. Mobile only, no effect on PC": "한 줄짜리 메시지 입력 영역. 모바일 전용, PC에는 영향 없음", - "Compact Input Area (Mobile)": "컴팩트한 입력 영역 (모바일)", + "Compact Input Area (Mobile)": "조그마한 입력 영역 (모바일)", + "Swipe # for All Messages": "모든 스와이프 메시지에 대해 번호 매기기", + "[title]Display swipe numbers for all messages, not just the last.": "마지막 메시지만이 아니라 모든 메시지에 대한 스와이프 번호를 표시합니다.", "In the Character Management panel, show quick selection buttons for favorited characters": "캐릭터 관리 패널에서 즐겨찾는 캐릭터에 대한 빠른 선택 버튼을 표시합니다", "Characters Hotswap": "캐릭터 핫스왑", - "Enable magnification for zoomed avatar display.": "마우스 오버 시 아바타가 커지도록 설정하세요.", - "Avatar Hover Magnification": "아바타 마우스오버 시 확대", + "Enable magnification for zoomed avatar display.": "마우스 포인터를 아바타 위에 올려두면 아바타가 확대 됩니다.", + "Avatar Hover Magnification": "마우스를 올리면 아바타 확대", "Enables a magnification effect on hover when you display the zoomed avatar after clicking an avatar's image in chat.": "채팅에서 아바타 이미지를 클릭한 후 확대된 아바타를 표시할 때 마우스 오버 시 확대 효과를 활성화합니다.", "Show tagged character folders in the character list": "캐릭터 목록에서 태그가 지정된 캐릭터 폴더 표시", - "Tags as Folders": "태그를 폴더로", + "Tags as Folders": "태그를 폴더로 설정", "Tags_as_Folders_desc": "최근 변경 사항: 태그는 태그 관리 메뉴에서 폴더로 표시되어야 폴더로 표시됩니다. 여기를 클릭해 불러오세요.", + "Background Image": "채팅 배경 이미지", "Character Handling": "캐릭터 처리", "If set in the advanced character definitions, this field will be displayed in the characters list.": "고급 캐릭터 정의에서 설정된 경우 이 필드가 캐릭터 목록에 표시됩니다.", - "Char List Subheader": "문자 목록 하위 제목", + "Char List Subheader": "캐릭터 목록 하위 제목", "Character Version": "캐릭터 버전", - "Created by": "작성자", + "Created by": "제작자", "Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring": "퍼지 매칭을 사용하고 이름 하위 문자열뿐만 아니라 모든 데이터 필드로 목록에서 캐릭터를 검색합니다", "Advanced Character Search": "고급 캐릭터 검색", - "If checked and the character card contains a prompt override (System Prompt), use that instead": "선택되어 있고 캐릭터 카드에 프롬프트 재정의 (시스템 프롬프트)가 포함 된 경우, 대신 사용하십시오", + "If checked and the character card contains a prompt override (System Prompt), use that instead": "선택되어 있고 캐릭터 카드에 프롬프트(시스템 프롬프트) 재정의가 포함 된 경우, 그것을 대신 사용합니다", "Prefer Character Card Prompt": "캐릭터 카드 프롬프트 선호", - "If checked and the character card contains a jailbreak override (Post History Instruction), use that instead": "선택되어 있고 캐릭터 카드에 탈옥 재정의 (게시 내역 지침)가 포함 된 경우, 대신 사용하십시오", + "If checked and the character card contains a jailbreak override (Post History Instruction), use that instead": "선택되어 있고 캐릭터 카드에 (Post-History 지시)탈옥 재정의가 포함 된 경우, 그것을 대신 사용합니다.", "Prefer Character Card Jailbreak": "캐릭터 카드 탈옥 선호", "Avoid cropping and resizing imported character images. When off, crop/resize to 512x768": "가져온 캐릭터 이미지를 자르거나 크기를 조정하지 마세요. 꺼져 있으면 512x768로 자르거나 크기를 조정합니다.", "Never resize avatars": "아바타 크기 변경하지 않음", "Show actual file names on the disk, in the characters list display only": "실제 파일 이름을 디스크에 표시하며 캐릭터 목록 디스플레이에만", "Show avatar filenames": "아바타 파일 이름 표시", - "Prompt to import embedded card tags on character import. Otherwise embedded tags are ignored": "캐릭터 가져오기시 내장된 카드 태그를 가져 오도록 요청하십시오. 그렇지 않으면 내장된 태그가 무시됩니다", + "Prompt to import embedded card tags on character import. Otherwise embedded tags are ignored": "캐릭터 가져오기시 내장된 카드 태그를 가져 오도록 요청하세요. 그렇지 않으면 내장된 태그가 무시됩니다", "Import Card Tags": "카드 태그 가져오기", "Hide character definitions from the editor panel behind a spoiler button": "스포일러 버튼 뒤에 편집기 패널에서 캐릭터 정의를 숨깁니다", "Spoiler Free Mode": "스포일러 무료 모드", @@ -655,7 +668,7 @@ "Background Sound Only": "배경 소리만", "Reduce the formatting requirements on API URLs": "API URL의 서식 요구 사항 감소", "Relaxed API URLS": "완화된 API URLS", - "Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead": "내장된 로어북이있는 모든 새 캐릭터에 대해 세계 정보/로어북을 가져 오도록 요청하십시오. 선택 해제하면 대신 간단한 메시지가 표시됩니다", + "Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead": "내장된 로어북이있는 모든 새 캐릭터에 대해 월드 인포/로어북을 가져 오도록 요청하세요. 선택 해제하면 대신 간단한 메시지가 표시됩니다", "Lorebook Import Dialog": "로어북 가져오기 대화 상자", "Restore unsaved user input on page refresh": "페이지 새로 고침시 저장되지 않은 사용자 입력 복원", "Restore User Input": "사용자 입력 복원", @@ -675,8 +688,8 @@ "Streaming FPS": "스트리밍 FPS", "Update speed of streamed text.": "스트리밍된 텍스트의 속도를 업데이트합니다.", "Example Messages Behavior": "예제 메시지 동작", - "Gradual push-out": "점진적 밀어내기", - "Always include examples": "항상 예제 포함", + "Gradual push-out": "토큰 초과 시 점진적 밀어내기", + "Always include examples": "항상 컨텍스트에 예제 포함", "Never include examples": "절대로 예제 포함 안 함", "Send on Enter": "Enter로 전송", "Disabled": "비활성화됨", @@ -693,7 +706,9 @@ "Save edits to messages without confirmation as you type": "입력하는 동안 확인없이 메시지에 대한 편집 사항 저장", "Auto-save Message Edits": "메시지 편집 자동 저장", "Confirm message deletion": "메시지 삭제 확인", - "Auto-fix Markdown": "Markdown 자동 수정", + "Auto-fix Markdown": "마크다운 자동 수정", + "Render LaTeX and AsciiMath equation notation in chat messages. Powered by KaTeX": "채팅 메시지에서 LaTeX 및 AsciiMath 방정식 표기법을 렌더링합니다. KaTeX 제공", + "Render Formulas": "수식 렌더링", "Disallow embedded media from other domains in chat messages": "채팅 메시지에 다른 도메인의 삽입된 미디어를 허용하지 않습니다.", "Forbid External Media": "외부 미디어 금지", "Allow {{char}}: in bot messages": "봇 메시지에서 {{char}}: 허용", @@ -732,8 +747,8 @@ "entire chat width": "전체 채팅 폭", "full window width": "전체 창 너비", "STscript Settings": "STscript 설정", - "Sets default flags for the STscript parser.": "STscript 파서 기본 플래그 설정", - "Parser Flags": "파서 플래그 설정", + "Sets default flags for the STscript parser.": "STscript Parser 기본 플래그 설정", + "Parser Flags": "Parser 플래그 설정", "Switch to stricter escaping, allowing all delimiting characters to be escaped with a backslash, and backslashes to be escaped as well.": "모든 구분자를 백슬래시로 이스케이핑하고, 백슬래시 자체도 이스케이프할 수 있도록 엄격한 방식으로 전환합니다.", "STRICT_ESCAPING": "STRICT_ESCAPING", "Replace all {{getvar::}} and {{getglobalvar::}} macros with scoped variables to avoid double macro substitution.": "이중 매크로 대체를 방지하려면 모든 {{getvar::}} 및 {{getglobalvar::}} 매크로를 범위 변수로 바꾸세요.", @@ -751,7 +766,7 @@ "Manage extensions": "확장 프로그램 관리", "Import Extension From Git Repo": "Git 리포지토리에서 확장 프로그램 가져오기", "Install extension": "확장 프로그램 설치", - "Extras API:": "추가 API:", + "Extras API:": "외부 API:", "Auto-connect": "자동 연결", "Extras API URL": "엑스트라 API URL", "Extras API key (optional)": "Extras API 키 (선택 사항)", @@ -769,20 +784,21 @@ "No persona description": "[설명 없음]", "Name": "이름", "Enter your name": "이름을 입력하세요", - "Click to set a new User Name": "새 사용자 이름 설정을 클릭하세요", + "Click to set a new User Name": "새 사용자 이름 설정을 저장합니다.", "Click to lock your selected persona to the current chat. Click again to remove the lock.": "선택한 페르소나를 현재 채팅에 잠그려면 클릭하세요. 잠금을 제거하려면 다시 클릭하세요.", - "Click to set user name for all messages": "모든 메시지에 사용자 이름을 설정하려면 클릭하세요", + "Click to set user name for all messages": "모든 메시지를 현재 선택된 사용자 이름으로 설정하려면 클릭하세요", "Persona Description": "페르소나 설명", "Example: [{{user}} is a 28-year-old Romanian cat girl.]": "예: [{{user}}는 28세의 루마니아 고양이 소녀입니다.]", - "Tokens persona description": "토큰 페르소나 설명", + "Tokens persona description": "페르소나 설명 토큰", "Position:": "위치:", + "None (disabled)": "없음 (비활성화됨)", "In Story String / Prompt Manager": "이야기 문자열 / 프롬프트 관리자", - "Top of Author's Note": "작성자의 주석 상단", - "Bottom of Author's Note": "작성자의 주석 하단", + "Top of Author's Note": "작가 노트 상단", + "Bottom of Author's Note": "작가 노트 하단", "In-chat @ Depth": "채팅 내 @ Depth", "Depth:": "깊이:", "Role:": "역할:", - "System": "체계", + "System": "시스템", "User": "사용자", "Assistant": "어시스턴트", "Show notifications on switching personas": "페르소나 전환시 알림 표시", @@ -803,15 +819,15 @@ "Click to select a new avatar for this character": "이 캐릭터의 새 아바타를 선택하려면 클릭하세요", "Add to Favorites": "즐겨찾기에 추가", "Advanced Definition": "고급 정의", - "Character Lore": "캐릭터 이야기", - "Chat Lore": "채팅 이야기", + "Character Lore": "캐릭터 로어북", + "Chat Lore": "채팅 로어북", "Export and Download": "내보내기 및 다운로드", "Duplicate Character": "캐릭터 복제", "Create Character": "캐릭터 생성", "Delete Character": "캐릭터 삭제", - "More...": "더...", - "Link to World Info": "월드 정보에 연결", - "Import Card Lore": "카드 로어 가져오기", + "More...": "추가 설정들...", + "Link to World Info": "월드 인포에 연결", + "Import Card Lore": "카드 로어북 가져오기", "Scenario Override": "시나리오 재정의", "Convert to Persona": "페르소나로 변환", "Rename": "이름 변경", @@ -820,26 +836,26 @@ "Import Tags": "태그 가져오기", "Search / Create Tags": "검색 / 태그 생성", "View all tags": "모든 태그 보기", - "Creator's Notes": "제작자의 노트", + "Creator's Notes": "제작자의 메모", "Show / Hide Description and First Message": "설명 및 첫 번째 메시지 표시/숨기기", "Character Description": "캐릭터 설명", "Click to allow/forbid the use of external media for this character.": "이 캐릭터에 대한 외부 미디어 사용을 허용/금지하려면 클릭하세요.", - "Ext. Media": "내선 미디어", + "Ext. Media": "외부 미디어", "Describe your character's physical and mental traits here.": "여기에 캐릭터의 신체적, 정신적 특성을 설명하세요.", "First message": "첫 번째 메시지", - "Click to set additional greeting messages": "추가 인사말 메시지를 설정하려면 클릭하세요", - "Alt. Greetings": "대체. 인사말", - "This will be the first message from the character that starts every chat.": "이것은 모든 채팅을 시작하는 캐릭터의 첫 번째 메시지가 됩니다.", + "Click to set additional greeting messages": "첫 번째 메시지를 추가로 설정하려면 클릭하세요.", + "Alt. Greetings": "대체. 첫 메시지", + "This will be the first message from the character that starts every chat.": "이것은 모든 채팅을 시작할 때 캐릭터의 첫 번째 메시지가 됩니다.", "Group Controls": "그룹 제어", "Chat Name (Optional)": "채팅 이름 (선택 사항)", "Click to select a new avatar for this group": "이 그룹의 새 아바타를 선택하려면 클릭하세요", "Group reply strategy": "그룹 응답 전략", - "Natural order": "자연 순서", - "List order": "목록 순서", + "Natural order": "자연스러운 순서", + "List order": "목록에 배정된 순서", "Group generation handling mode": "그룹 생성 처리 모드", "Swap character cards": "캐릭터 카드 바꾸기", "Join character cards (exclude muted)": "캐릭터 카드 가입 (뮤트 제외)", - "Join character cards (include muted)": "캐릭터 카드 가입(뮤트 포함)", + "Join character cards (include muted)": "캐릭터 카드 가입 (뮤트 포함)", "Inserted before each part of the joined fields.": "결합된 필드의 각 부분 앞에 삽입됩니다.", "Join Prefix": "접두사 가입", "When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and with the name of the part (e.g.: description, personality, scenario, etc.)": "'캐릭터 카드 합치기'를 선택하면 캐릭터의 모든 해당 필드가 합쳐집니다. 즉, 스토리 문자열에서 예를 들어 모든 캐릭터 설명이 하나의 큰 텍스트로 합쳐집니다. 이러한 필드를 분리하려면 여기에서 접두사나 접미사를 정의할 수 있습니다. 이 값은 일반 매크로를 지원하고 {{char}}를 해당 캐릭터의 이름으로, 을 해당 부분의 이름(예: 설명, 성격, 시나리오 등)으로 대체합니다.", @@ -861,8 +877,8 @@ "Characters sorting order": "캐릭터 정렬 순서", "A-Z": "A-Z", "Z-A": "Z-A", - "Newest": "최신", - "Oldest": "가장 오래된", + "Newest": "최신순", + "Oldest": "가장 오래된 순", "Favorites": "즐겨찾기", "Recent": "최근", "Most chats": "대화가 가장 많은", @@ -874,19 +890,19 @@ "Bulk_edit_characters": "대량 캐릭터 편집", "Bulk select all characters": "모든 문자 일괄 선택", "Bulk delete characters": "대량 캐릭터 삭제", - "popup-button-save": "구하다", - "popup-button-yes": "예", + "popup-button-save": "저장하기", + "popup-button-yes": "네", "popup-button-no": "아니요", "popup-button-cancel": "취소", - "popup-button-import": "수입", + "popup-button-import": "불러오기", "Advanced Defininitions": "고급 정의", "Prompt Overrides": "프롬프트 무시", "(For Chat Completion and Instruct Mode)": "(채팅 완료 및 지시 모드의 경우)", "Insert {{original}} into either box to include the respective default prompt from system settings.": "{{original}}를 해당 상자에 넣어 시스템 설정의 기본 프롬프트를 포함합니다.", - "Main Prompt": "주 프롬프트", - "Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)": "여기에 있는 모든 내용은 이 캐릭터에 사용된 기본 주 프롬프트를 대체합니다. (v2 사양: system_prompt)", + "Main Prompt": "주요 프롬프트", + "Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)": "여기에 있는 모든 내용은 이 캐릭터에 사용된 기본 메인 프롬프트를 대체합니다. (v2 사양: system_prompt)", "Any contents here will replace the default Jailbreak Prompt used for this character. (v2 spec: post_history_instructions)": "여기에 있는 모든 내용은 이 캐릭터에 사용된 기본 탈옥 프롬프트를 대체합니다. (v2 사양: post_history_instructions)", - "Creator's Metadata (Not sent with the AI prompt)": "만든이 메타데이터 (AI 프롬프트와 함께 전송되지 않음)", + "Creator's Metadata (Not sent with the AI prompt)": "제작자의 메타데이터 (AI 프롬프트와 함께 전송되지 않음)", "Creator's Metadata": "제작자의 메타데이터", "(Not sent with the AI Prompt)": "(AI 프롬프트와 함께 전송되지 않음)", "Everything here is optional": "여기 있는 모든 것은 선택 사항입니다", @@ -904,11 +920,11 @@ "@ Depth": "@ 깊이", "Role": "역할", "Talkativeness": "수다스러움", - "How often the character speaks in group chats!": "캐릭터가 그룹 채팅에서 얼마나 자주 말하는지!", + "How often the character speaks in group chats!": "캐릭터가 그룹 채팅에서 얼마나 자주 말할지 설정해보세요!", "How often the character speaks in": "캐릭터가 말하는 빈도", "group chats!": "그룹 채팅!", "Shy": "수줍음", - "Normal": "보통", + "Normal": "평범함", "Chatty": "수다쟁이", "Examples of dialogue": "대화 예시", "Important to set the character's writing style.": "캐릭터의 글쓰기 스타일을 설정하는 것이 중요합니다.", @@ -918,16 +934,16 @@ "Import Chat": "채팅 가져오기", "Copy to system backgrounds": "시스템 배경에 복사", "Rename background": "배경 이름 바꾸기", - "Lock": "잠그다", - "Unlock": "터놓다", + "Lock": "잠금", + "Unlock": "잠금 해제", "Delete background": "배경 삭제", "Chat Scenario Override": "채팅 시나리오 재정의", "Remove": "제거", "Type here...": "여기에 입력하세요...", - "Chat Lorebook": "채팅 설화집", - "Chat Lorebook for": "채팅 설화집", - "chat_world_template_txt": "선택한 세계 정보가 이 채팅에 연결됩니다. AI 답글을 생성할 때,\n 글로벌 및 캐릭터 지식북의 항목과 결합됩니다.", - "Select a World Info file for": "다음을 위해 세계 정보 파일 선택:", + "Chat Lorebook": "채팅 로어북", + "Chat Lorebook for": "채팅 로어북", + "chat_world_template_txt": "선택한 월드 인포가 이 채팅에 연결됩니다. AI 응답을 생성할 때,\n 글로벌 및 캐릭터 로어북의 항목과 결합됩니다.", + "Select a World Info file for": "다음을 위해 월드 인포 파일 선택:", "Primary Lorebook": "기본 로어북", "A selected World Info will be bound to this character as its own Lorebook.": "선택한 월드 정보가 이 캐릭터에게 자체 로어북으로 바인딩됩니다.", "When generating an AI reply, it will be combined with the entries from a global World Info selector.": "AI 응답을 생성할 때 전역 월드 정보 선택기의 항목과 결합됩니다.", @@ -942,34 +958,34 @@ "Use tag as folder": "폴더로 태그 지정", "Delete tag": "태그 삭제", "Entry Title/Memo": "항목 제목/메모", - "WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "WI 입국 상태:\r🔵 상수\r🟢 보통\r🔗 벡터화됨\r❌ 장애인", - "WI_Entry_Status_Constant": "끊임없는", + "WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "WI 입국 상태:\r🔵 상시\r🟢 조건 만족시\r🔗 벡터화됨\r❌ 비활성화", + "WI_Entry_Status_Constant": "상시 활성화", "WI_Entry_Status_Normal": "정상", "WI_Entry_Status_Vectorized": "벡터화됨", - "WI_Entry_Status_Disabled": "장애가 있는", - "T_Position": "↑Char: 캐릭터 정의 전\n↓Char: 캐릭터 정의 후\n↑AN: 저자 주석 전\n↓AN: 저자 주석 후\n@D: 깊이에", + "WI_Entry_Status_Disabled": "비활성화됨", + "T_Position": "↑Char: 캐릭터 정의 전\n↓Char: 캐릭터 정의 후\n↑AN: 작가 노트 전\n↓AN: 작가노트 후\n@D: 깊이", "Before Char Defs": "캐릭터 정의 전", "After Char Defs": "캐릭터 정의 후", "Before EM": "↑EM", "After EM": "↓EM", - "Before AN": "저자 주석 전", - "After AN": "저자 주석 후", + "Before AN": "작가 노트 전", + "After AN": "작가 노트 후", "at Depth System": "@D ⚙️", "at Depth User": "@D 👤", - "at Depth AI": "@디 🤖", + "at Depth AI": "@D 🤖", "Depth": "깊이", - "Order:": "주문:", - "Order": "주문:", - "Trigger %:": "방아쇠 %:", + "Order:": "순서:", + "Order": "순서:", + "Trigger %:": "발동 확률 %:", "Probability": "개연성", - "Duplicate world info entry": "중복된 세계 정보 항목", - "Delete world info entry": "세계 정보 항목 삭제", + "Duplicate world info entry": "중복된 월드 인포 항목", + "Delete world info entry": "월드 인포 항목 삭제", "Comma separated (required)": "쉼표로 구분 (필수)", "Primary Keywords": "기본 키워드", "Keywords or Regexes": "키워드 또는 정규식", "Comma separated list": "쉼표로 구분된 목록", "Switch to plaintext mode": "일반 텍스트 모드로 전환", - "Logic": "로직", + "Logic": "논리 구조", "AND ANY": "AND ANY", "AND ALL": "AND ALL", "NOT ALL": "NOT ALL", @@ -982,6 +998,7 @@ "Case-Sensitive": "대소문자 구분", "Yes": "예", "No": "아니오", + "Quick Reply": "빠른 답장", "Can be used to automatically activate Quick Replies": "빠른 답장을 자동으로 활성화하는 데 사용할 수 있습니다.", "Automation ID": "자동화 ID", "( None )": "( 없음 )", @@ -994,7 +1011,7 @@ "Character Exclusion": "캐릭터 제외", "-- Characters not found --": "-- 캐릭터를 찾을 수 없음 --", "Inclusion Group": "포함 그룹", - "Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.Documentation: World Info - Inclusion Group": "포함 그룹은 여러 항목이 트리거되는 경우 그룹에서 한 번에 하나의 항목만 활성화되도록 합니다.\r쉼표로 구분된 여러 그룹을 지원합니다.\r\r문서: 세계 정보 - 포함 그룹", + "Inclusion Groups ensure only one entry from a group is activated at a time, if multiple are triggered.Documentation: World Info - Inclusion Group": "포함 그룹은 여러 항목이 트리거되는 경우 그룹에서 한 번에 하나의 항목만 활성화되도록 합니다.\r쉼표로 구분된 여러 그룹을 지원합니다.\r\r문서: 월드 인포 - 포함 그룹", "Prioritize this entry: When checked, this entry is prioritized out of all selections.If multiple are prioritized, the one with the highest 'Order' is chosen.": "이 항목 우선순위 지정: 선택하면 모든 선택 항목 중에서 이 항목의 우선순위가 지정됩니다.\r여러 항목의 우선순위가 높은 경우 '순서'가 가장 높은 항목이 선택됩니다.", "Only one entry with the same label will be activated": "동일한 라벨을 가진 항목은 하나만 활성화됩니다", "A relative likelihood of entry activation within the group": "그룹 내 항목 활성화의 상대적 가능성", @@ -1004,27 +1021,28 @@ "Add Memo": "메모 추가", "Text or token ids": "텍스트 또는 [토큰 ID]", "close": "닫다", - "prompt_manager_edit": "편집하다", + "prompt_manager_edit": "프롬프트 편집", "prompt_manager_name": "이름", "A name for this prompt.": "이 프롬프트의 이름입니다.", - "To whom this message will be attributed.": "이 메시지는 누구에게 귀속됩니까?", + "To whom this message will be attributed.": "해당 프롬프트에 부여할 역할은 무엇인가요?", "AI Assistant": "AI 어시스턴트", "prompt_manager_position": "위치", "Injection position. Next to other prompts (relative) or in-chat (absolute).": "주입 위치. 다른 프롬프트 옆(상대적) 또는 채팅 내(절대적).", "prompt_manager_relative": "상대적인", + "prompt_manager_in_chat": "깊이에 따라", "prompt_manager_depth": "깊이", "Injection depth. 0 = after the last message, 1 = before the last message, etc.": "주입 깊이. 0 = 마지막 메시지 뒤, 1 = 마지막 메시지 앞 등", "Prompt": "프롬프트", - "The prompt to be sent.": "보낼 프롬프트입니다.", - "This prompt cannot be overridden by character cards, even if overrides are preferred.": "이 프롬프트는 재정의가 선호되는 경우에도 캐릭터 카드로 재정의될 수 없습니다.", + "The prompt to be sent.": "보내질 프롬프트 내용을 작성하는 부분입니다.", + "This prompt cannot be overridden by character cards, even if overrides are preferred.": "이 프롬프트는 고급 정의에서 재정의가 선호되는 경우에도 재정의될 수 없습니다.", "prompt_manager_forbid_overrides": "재정의 금지", "reset": "초기화", - "save": "구하다", + "save": "저장", "This message is invisible for the AI": "이 메시지는 AI에게 보이지 않습니다", "Message Actions": "메시지 작업", "Translate message": "메시지 번역", "Generate Image": "이미지 생성", - "Narrate": "이야기하기", + "Narrate": "나레이션 하기", "Exclude message from prompts": "프롬프트에서 메시지 제외", "Include message in prompts": "프롬프트에 메시지 포함", "Embed file or image": "파일 또는 이미지 삽입", @@ -1040,26 +1058,26 @@ "Move message down": "메시지를 아래로 이동", "Enlarge": "확대", "Welcome to SillyTavern!": "SillyTavern에 오신 것을 환영합니다!", - "welcome_message_part_1": "읽기", + "welcome_message_part_1": "자세한 설명 읽기:", "welcome_message_part_2": "공식 문서", "welcome_message_part_3": null, "welcome_message_part_4": "유형", "welcome_message_part_5": "명령과 매크로에 대한 채팅.", - "welcome_message_part_6": "참여하세요", + "welcome_message_part_6": "공식", "Discord server": "디스코드 서버", - "welcome_message_part_7": "정보 및 공지사항을 확인하세요.", + "welcome_message_part_7": "에서 정보 및 공지사항을 확인하세요.", "SillyTavern is aimed at advanced users.": "SillyTavern은 고급 사용자를 대상으로 합니다.", "If you're new to this, enable the simplified UI mode below.": "처음 사용하는 경우 아래의 단순화된 UI 모드를 활성화하세요.", "Change it later in the 'User Settings' panel.": "나중에 '사용자 설정' 패널에서 변경하세요.", "Enable simple UI mode": "단순 UI 모드 활성화", "Looking for AI characters?": "AI 캐릭터를 찾고 계십니까?", - "onboarding_import": "수입", + "onboarding_import": "가져오기", "from supported sources or view": "지원되는 소스 또는 보기에서", "Sample characters": "샘플 캐릭터", "Your Persona": "당신의 페르소나", "Before you get started, you must select a persona name.": "시작하기 전에 페르소나 이름을 선택해야 합니다.", - "welcome_message_part_8": "이는 언제든지 다음을 통해 변경될 수 있습니다.", - "welcome_message_part_9": "상.", + "welcome_message_part_8": "이는 언제든지 변경될 수 있습니다. 변경을 원한다면", + "welcome_message_part_9": "아이콘을 누르세요.", "Persona Name:": "페르소나 이름:", "Temporarily disable automatic replies from this character": "이 캐릭터의 자동 응답 일시적으로 비활성화", "Enable automatic replies from this character": "이 캐릭터의 자동 응답 활성화", @@ -1081,7 +1099,7 @@ "Remove the file": "파일을 제거하세요", "Unique to this chat": "이 채팅에만 고유함", "Checkpoints inherit the Note from their parent, and can be changed individually after that.": "체크포인트는 상위 항목으로부터 메모를 상속받으며 이후 개별적으로 변경될 수 있습니다.", - "Include in World Info Scanning": "세계 정보 스캔에 포함", + "Include in World Info Scanning": "월드인포를 스캔 대상에 포함", "Before Main Prompt / Story String": "메인 프롬프트 전/스토리 문자열", "After Main Prompt / Story String": "메인 프롬프트 이후 / 스토리 문자열", "as": "~처럼", @@ -1090,11 +1108,11 @@ "User inputs until next insertion:": "다음 삽입까지 사용자 입력:", "Character Author's Note (Private)": "캐릭터 작가의 메모 (비공개)", "Won't be shared with the character card on export.": "내보내기 시 캐릭터 카드와 공유되지 않습니다.", - "Will be automatically added as the author's note for this character. Will be used in groups, but can't be modified when a group chat is open.": "해당 캐릭터에 대한 작가의 메모로 자동 추가됩니다. 그룹으로 사용되지만\n 그룹 채팅이 열려 있으면 수정할 수 없습니다.", - "Use character author's note": "캐릭터 작성자의 메모 사용", - "Replace Author's Note": "작성자의 메모 바꾸기", - "Default Author's Note": "기본 작성자의 메모", - "Will be automatically added as the Author's Note for all new chats.": "모든 새 채팅에 대한 작성자 메모로 자동으로 추가됩니다.", + "Will be automatically added as the author's note for this character. Will be used in groups, but can't be modified when a group chat is open.": "해당 캐릭터에 대한 작가 노트로 자동 추가됩니다. 그룹으로 사용되지만\n 그룹 채팅이 열려 있으면 수정할 수 없습니다.", + "Use character author's note": "캐릭터 작가 노트 사용", + "Replace Author's Note": "작가 노트 자리를 대체하기", + "Default Author's Note": "기본 작가 노트", + "Will be automatically added as the Author's Note for all new chats.": "모든 새 채팅에 대한 작가 노트로 자동으로 추가됩니다.", "Chat CFG": "채팅CFG", "1 = disabled": "1 = 비활성화됨", "write short replies, write replies using past tense": "짧은 답장 쓰기, 과거 시제를 사용하여 답장 쓰기", @@ -1104,7 +1122,7 @@ "Will be automatically added as the CFG for this character.": "해당 캐릭터의 CFG로 자동 추가됩니다.", "Global CFG": "글로벌 CFG", "Will be used as the default CFG options for every chat unless overridden.": "재정의되지 않는 한 모든 채팅에 대해 기본 CFG 옵션으로 사용됩니다.", - "CFG Prompt Cascading": "CFG 프롬프트 카스케이딩", + "CFG Prompt Cascading": "CFG 프롬프트 세분화", "Combine positive/negative prompts from other boxes.": "다른 상자의 긍정적/부정적 프롬프트를 결합합니다.", "For example, ticking the chat, global, and character boxes combine all negative prompts into a comma-separated string.": "예를 들어, 채팅, 글로벌, 문자 상자를 체크하면 모든 부정 프롬프트가 쉼표로 구분된 문자열로 결합됩니다.", "Always Include": "항상 포함", @@ -1127,14 +1145,14 @@ "Toggle Panels": "토글 패널", "Back to parent chat": "부모 채팅으로 돌아가기", "Save checkpoint": "체크포인트 저장", - "Convert to group": "그룹으로 변환", + "Convert to group": "그룹 채팅으로 변환", "Start new chat": "새로운 채팅 시작", "Manage chat files": "채팅 파일 관리", "Delete messages": "메시지 삭제", "Regenerate": "재생성", "Ask AI to write your message for you": "AI에게 메시지를 대신 작성하도록 요청", - "Impersonate": "대신 말하기", - "Continue": "계속", + "Impersonate": "사칭", + "Continue": "계속 생성하기", "Bind user name to that avatar": "그 아바타에 사용자 이름 바인딩", "Change persona image": "페르소나 이미지 변경", "Select this as default persona for the new chats.": "새 채팅의 기본 페르소나로 선택합니다.", @@ -1142,8 +1160,8 @@ "These characters are the winners of character design contests and have outstandable quality.": "캐릭터 디자인 공모전에서 당선된 캐릭터로, 뛰어난 퀄리티를 자랑하는 캐릭터입니다.", "Contest Winners": "콘테스트 우승자", "These characters are the finalists of character design contests and have remarkable quality.": "이 캐릭터들은 캐릭터 디자인 공모전의 최종 후보로, 뛰어난 퀄리티를 자랑합니다.", - "Featured Characters": "주요 캐릭터", - "Attach a File": "파일을 첨부", + "Featured Characters": "독립된 캐릭터", + "Attach a File": "파일 첨부하기", "Open Data Bank": "오픈데이터뱅크", "Enter a URL or the ID of a Fandom wiki page to scrape:": "스크랩할 Fandom 위키 페이지의 URL이나 ID를 입력하세요:", "Examples:": "예:", @@ -1176,16 +1194,14 @@ "Don't include the page name!": "페이지 이름을 포함하지 마세요!", "Enter web URLs to scrape (one per line):": "스크랩할 웹 URL을 입력하세요(한 줄에 하나씩):", "Enter a video URL to download its transcript.": "스크립트를 다운로드하려면 동영상 URL 또는 ID를 입력하세요.", - "Expression API": "현지의\n엑스트라\n법학대학원", - "ext_sum_with": "요약:", - "ext_sum_main_api": "메인 API", + "Expression API": "표현\n엑스트라\nAPI", "ext_sum_current_summary": "현재 요약:", "ext_sum_restore_previous": "이전 복원", "ext_sum_memory_placeholder": "여기에 요약이 생성됩니다...", "Trigger a summary update right now.": "지금 요약하세요", "ext_sum_force_text": "지금 요약하세요", "Disable automatic summary updates. While paused, the summary remains as-is. You can still force an update by pressing the Summarize now button (which is only available with the Main API).": "자동 요약 업데이트를 비활성화합니다. 일시 중지된 동안 요약은 그대로 유지됩니다. 지금 요약 버튼(기본 API에서만 사용 가능)을 눌러 강제로 업데이트할 수 있습니다.", - "ext_sum_pause": "정지시키다", + "ext_sum_pause": "요약 정지시키기", "Omit World Info and Author's Note from text to be summarized. Only has an effect when using the Main API. The Extras API always omits WI/AN.": "요약할 텍스트에서 World Info 및 Author's Note를 생략합니다. Main API를 사용할 때만 효과가 있습니다. Extras API는 항상 WI/AN을 생략합니다.", "ext_sum_no_wi_an": "WI/AN 없음", "ext_sum_settings_tip": "요약 프롬프트, 삽입 위치 등을 편집합니다.", @@ -1193,7 +1209,7 @@ "ext_sum_prompt_builder": "프롬프트 빌더", "ext_sum_prompt_builder_1_desc": "확장 프로그램은 아직 요약되지 않은 메시지를 사용하여 자체 프롬프트를 작성합니다. 요약이 생성될 때까지 채팅을 차단합니다.", "ext_sum_prompt_builder_1": "원시, 차단", - "ext_sum_prompt_builder_2_desc": "확장 프로그램은 아직 요약되지 않은 메시지를 사용하여 자체 프롬프트를 작성합니다. 요약이 생성되는 동안 채팅을 차단하지 않습니다. 모든 백엔드가 이 모드를 지원하는 것은 아닙니다.", + "ext_sum_prompt_builder_2_desc": "확장 프로그램은 아직 요약되지 않은 메시지를 사용하여 자체 프롬프트를 작성합니다. 요약이 생성되는 동안 채팅을 차단하지 않습니다. 하지만 모든 백엔드가 이 모드를 지원하는 것은 아닙니다.", "ext_sum_prompt_builder_2": "원시, 비차단", "ext_sum_prompt_builder_3_desc": "확장은 일반 기본 프롬프트 빌더를 사용하고 요약 요청을 마지막 시스템 메시지로 추가합니다.", "ext_sum_prompt_builder_3": "클래식, 차단", @@ -1224,13 +1240,13 @@ "ext_regex_title": "정규식", "ext_regex_new_global_script": "+ 글로벌", "ext_regex_new_scoped_script": "+ 범위 지정", - "ext_regex_import_script": "수입", + "ext_regex_import_script": "불러오기", "ext_regex_global_scripts": "글로벌 스크립트", "ext_regex_global_scripts_desc": "모든 캐릭터에 사용 가능합니다. 로컬 설정에 저장되었습니다.", "ext_regex_scoped_scripts": "범위가 지정된 스크립트", "ext_regex_scoped_scripts_desc": "해당 캐릭터에만 사용 가능합니다. 카드 데이터에 저장됩니다.", "Regex Editor": "정규식 편집기", - "Test Mode": "시험 모드", + "Test Mode": "테스트 모드", "ext_regex_desc": "Regex는 정규식을 사용하여 문자열을 찾거나 바꾸는 도구입니다. 자세한 내용을 보려면 ?를 클릭하세요. 제목 옆에.", "Input": "입력", "ext_regex_test_input_placeholder": "여기에 입력하세요...", @@ -1277,20 +1293,21 @@ "sd_refine_mode": "프롬프트를 생성 API로 보내기 전에 수동으로 편집할 수 있도록 허용", "sd_refine_mode_txt": "생성 전에 프롬프트 편집", "sd_interactive_mode": "'고양이 사진 보내주세요'와 같은 메시지를 보낼 때 자동으로 이미지를 생성합니다.", - "sd_interactive_mode_txt": "대화형 모드", + "sd_interactive_mode_txt": "대화에 따른 자동 이미지 생성 모드", "sd_multimodal_captioning": "다중 모달 캡션을 사용하여 아바타를 기반으로 사용자 및 캐릭터 초상화에 대한 프롬프트를 생성합니다.", "sd_multimodal_captioning_txt": "인물 사진에 다중 모드 캡션 사용", "sd_expand": "텍스트 생성 모델을 사용하여 프롬프트 자동 확장", "sd_expand_txt": "자동 강화 프롬프트", "sd_snap": "강제 종횡비(인물 사진, 배경)를 사용하여 가장 가까운 알려진 해상도로 스냅 생성을 요청하는 동시에 절대 픽셀 수를 유지하려고 합니다(SDXL에 권장).", "sd_snap_txt": "스냅 자동 조정 해상도", - "Source": "원천", + "Source": "근원", + "Horde": "Horde", "sd_auto_url": "예: {{auto_url}}", "Authentication (optional)": "인증(선택사항)", "Example: username:password": "예: 사용자 이름:비밀번호", "Important:": "중요한:", "sd_auto_auth_warning_1": "SD 웹 UI를 실행하세요", - "sd_auto_auth_warning_2": "깃발! SillyTavern 호스트 시스템에서 서버에 액세스할 수 있어야 합니다.", + "sd_auto_auth_warning_2": "Flag! SillyTavern 호스트 시스템에서 서버에 액세스할 수 있어야 합니다.", "sd_drawthings_url": "예: {{drawthings_url}}", "sd_drawthings_auth_txt": "UI에서 HTTP API 스위치가 활성화된 상태에서 DrawThings 앱을 실행하세요! SillyTavern 호스트 시스템에서 서버에 액세스할 수 있어야 합니다.", "sd_vlad_url": "예: {{vlad_url}}", @@ -1308,26 +1325,28 @@ "Standard": "기준", "HD": "HD(고화질)", "sd_comfy_url": "예: {{comfy_url}}", - "Open workflow editor": "워크플로 편집기 열기", - "Create new workflow": "새 워크플로 만들기", - "Delete workflow": "워크플로 삭제", + "Open workflow editor": "워크플로우로 편집기 열기", + "Create new workflow": "새 워크플로우 만들기", + "Delete workflow": "워크플로우 삭제", "Enhance": "향상시키다", "Refine": "구체화", "Decrisper": "더 명확하게", "Sampling steps": "샘플링 단계 ()", "Width": "너비 ()", - "Height": "키 ()", - "Resolution": "해결", + "Height": "높이 ()", + "Resolution": "해상도", "Model": "모델", + "Ask every time": "매번 물어보기", "Sampling method": "샘플링 방법", + "Message Template": "메시지 템플릿", "Karras (not all samplers supported)": "Karras(일부 샘플러는 지원되지 않음)", "SMEA versions of samplers are modified to perform better at high resolution.": "샘플러의 SMEA 버전은 고해상도에서 더 나은 성능을 발휘하도록 수정되었습니다.", "SMEA": "SMEA", "DYN variants of SMEA samplers often lead to more varied output, but may fail at very high resolutions.": "SMEA 샘플러의 DYN 변형은 종종 더 다양한 출력으로 이어지지만 매우 높은 해상도에서는 실패할 수 있습니다.", "DYN": "DYN", "Scheduler": "스케줄러", - "Restore Faces": "얼굴 복원", - "Hires. Fix": "고용합니다. 고치다", + "Restore Faces": "얼굴 디테일 복원", + "Hires. Fix": "고해상도 업스케일", "Upscaler": "업스케일러", "Upscale by": "고급화", "Denoising strength": "노이즈 제거 강도", @@ -1371,7 +1390,7 @@ "Import Characters": "캐릭터 가져오기", "Enter the URL of the content to import": "가져올 콘텐츠의 URL을 입력하세요.", "Supported sources:": "지원되는 소스:", - "char_import_1": "처브 캐릭터 (다이렉트 링크 또는 ID)", + "char_import_1": "Chub 캐릭터 (다이렉트 링크 또는 ID)", "char_import_example": "예:", "char_import_2": "Chub Lorebook(직접 링크 또는 ID)", "char_import_3": "JanitorAI 캐릭터(직접 링크 또는 UUID)", @@ -1402,7 +1421,7 @@ "Make a Snapshot": "스냅샷 만들기", "Restore this snapshot": "이 스냅샷 복원", "Hi,": "안녕,", - "To enable multi-account features, restart the SillyTavern server with": "다중 계정 기능을 활성화하려면 SillyTavern 서버를 다시 시작하십시오.", + "To enable multi-account features, restart the SillyTavern server with": "다중 계정 기능을 활성화하려면 SillyTavern 서버를 다시 시작하세요.", "set to true in the config.yaml file.": "config.yaml 파일에서 true로 설정됩니다.", "Account Info": "계정 정보", "To change your user avatar, use the buttons below or select a default persona in the Persona Management menu.": "사용자 아바타를 변경하려면 아래 버튼을 사용하거나 페르소나 관리 메뉴에서 기본 페르소나를 선택하세요.", @@ -1418,26 +1437,190 @@ "Download Backup": "백업 다운로드", "Danger Zone": "위험지대", "Reset your settings to factory defaults.": "설정을 공장 기본값으로 재설정하세요.", - "Reset Settings": "설정 재설정", + "Reset Settings": "설정 초기화", "Wipe all user data and reset your account to factory settings.": "모든 사용자 데이터를 지우고 계정을 공장 설정으로 재설정하세요.", "Reset Everything": "모든 것을 재설정", "Reset Code:": "재설정 코드:", "Want to update?": "업데이트 하시겠습니까?", - "How to start chatting?": "채팅을 시작하는 방법은?", - "Click _space": "딸깍 하는 소리", - "and select a": "그리고 선택하십시오", + "How to start chatting?": "어떻게 채팅을 시작할 수 있나요?", + "Click _space": "해당 아이콘을 클릭하세요.", + "and connect to an": "그리고 API를 해당 탭에서 연결하세요.", + "and select a": "그리고 선택하세요.", "Chat API": "채팅 API", - "and pick a character.": "그리고 캐릭터를 선택하세요.", + "and pick a character.": "그리고 원하는 캐릭터를 선택하세요.", "You can browse a list of bundled characters in the": "번들 캐릭터 목록을 검색할 수 있습니다.", - "Download Extensions & Assets": "확장 프로그램 및 자산 다운로드", + "Download Extensions & Assets": "확장 프로그램 및 에셋 다운로드", + "Character Expressions": "캐릭터 감정 표현들", + "ext_translate_title": "채팅 번역", + "ext_translate_auto_mode": "자동 번역 모드", + "ext_translate_mode_none": "없음", + "ext_translate_mode_responses": "응답 자동 번역", + "ext_translate_mode_inputs": "입력 자동 번역", + "ext_translate_mode_both": "응답과 입력 모두 번역", + "ext_translate_mode_provider": "번역 공급자", + "ext_translate_target_lang": "번역 도착 언어", + "ext_translate_clear": "번역 지우기", + "ext_sum_title": "채팅 요약", + "ext_sum_with": "요약에 사용될 API:", + "ext_sum_main_api": "메인 API", + "Vector Storage": "벡터 저장소", "menu within": "내의 메뉴", + "Translate text to English before classification": "분류 전에 텍스트를 영어로 번역합니다.", + "Show default images (emojis) if sprite missing": "해당하는 스프라이트가 없으면 기본 이미지 (이모지들)을 표시합니다.", + "Image Type - talkinghead (extras)": "이미지 유형 - 토킹 헤드 (부가 사항)", + "Classifier API": "분류를 위한 API", + "Select the API for classifying expressions.": "감정 이미지들을 분류할 API를 선택하세요.", + "Local": "로컬", + "Extras": "외부", + "LLM": "대형 언어 모델(LLM)", + "LLM Prompt": "LLM 프롬프트", + "Will be used if the API doesn't support JSON schemas or function calling.": "API가 JSON 스키마나 함수 호출을 지원하지 않는 경우 사용됩니다.", + "Default / Fallback Expression": "기본 / 대체 감정들", + "Set the default and fallback expression being used when no matching expression is found.": "일치하는 표현이 없을 때 사용되는 기본 및 대체 표현을 설정합니다.", + "Custom Expressions": "커스텀 감정들", + "Can be set manually or with an _space": "수동으로 설정하거나 또는", + "space_ slash command.": "슬래시 명령어로 설정할 수 있습니다.", + "Open a chat to see the character expressions.": "캐릭터 감정을 보려면 채팅창을 열어주세요.", + "Sprite Folder Override": "스프라이트 폴더 덮어쓰기", + "Upload sprite pack (ZIP)": "스프라이트 압축팩 (ZIP) 업로드하기", + "Remove all image overrides": "모든 이미지 재정의 제거하기", + "Hint:": "힌트:", + "Create new folder in the _space": "사용자 데이터 경로에 있는", + "folder of your user data directory and name it as the name of the character.": "폴더에 새 폴더를 만들고 해당 폴더의 이름을 캐릭터의 이름으로 지정하세요.", + "Put images with expressions there. File names should follow the pattern:": "그리고 그곳에 표정이 담긴 이미지를 넣으세요. 파일 이름은 다음 패턴을 따라야 합니다:", + "Sprite set:": "스프라이트 세트:", + "sd_free_extend_txt": "무료 모드 프롬프트 확장", "Confused or lost?": "혼란스러우시거나 길을 잃으셨나요?", "click these icons!": "이 아이콘을 클릭하세요!", "in the chat bar": "채팅 바에서", - "SillyTavern Documentation Site": "SillyTavern 문서 사이트", + "SillyTavern Documentation Site": "SillyTavern 공식 문서 사이트", "Extras Installation Guide": "Extras 설치 안내서", "Still have questions?": "아직 질문이 있으신가요?", - "Join the SillyTavern Discord": "SillyTavern Discord에 참여하세요", + "Join the SillyTavern Discord": "SillyTavern 디스코드에 참여하세요", "Post a GitHub issue": "GitHub 이슈 게시", - "Contact the developers": "개발자에게 연락하기" -} + "Contact the developers": "개발자에게 연락하기", + "enable_functions_desc_1": "다양한 확장 프로그램에서 추가 기능을 제공하기 위한", + "enable_functions_desc_2": "기능 도구", + "enable_functions_desc_3": "를 사용할 수 있게 합니다.", + "Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.": "삽입 깊이. 상대적인 (프롬프트 관리 목록에 있는 다른 프롬프트들에 비해) 또는 @Depth 깊이에 따라.", + "Instruct Template": "지시 템플릿", + "System Message Sequences": "시스템 메시지 시퀀스", + "System Prompt Sequences": "시스템 프롬프트 시퀀스", + "First User Prefix": "첫 번째 유저 접두사", + "Last User Prefix": "마지막 유저 접두사", + "System Prefix": "시스템 메시지 접두사", + "System Suffix": "시스템 메시지 접미사", + "Assistant Message Sequences": "어시스턴트 메시지 시퀀스", + "Assistant Prefix": "어시스턴트 메시지 접두사", + "Assistant Suffix": "어시스턴트 메시지 접미사", + "User Message Sequences": "유저 메시지 시퀀스", + "User Prefix": "유저 메시지 접미사", + "User Suffix": "유저 메시지 접두사", + "Groups and Past Personas": "그룹과 과거 페르소나들", + "Never": "절대 추가하지 않음", + "Always": "항상 추가함", + "Separators as Stop Strings": "구분 기호를 정지 문자열로 사용하기", + "Names as Stop Strings": "캐릭터의 이름들을 정지 문자열로 사용하기", + "Allow Post-History Instructions": "Post-History 지침 허용", + "Image Captioning": "이미지 캡셔닝", + "Automatically caption images": "자동으로 이미지에 대한 설명 문장으로 나타내기", + "Edit captions before saving": "저장하기 전에 이미지에 대한 설명 문장 편집하기", + "Enable Quick Replies": "빠른 답장 활성화", + "Combine Quick Replies": "빠른 답장 결합하기", + "Show Popout Button": "팝아웃 버튼 표시 (데스크톱에서)", + "Global Quick Reply Sets": "글로벌 빠른 답장 세트들", + "Edit Quick Replies": "빠른 답변 편집하기", + "Disable send (insert into input field)": "보내기 비활성화 (입력 필드에 삽입)", + "Place quick reply before input": "인풋 전에 빠른 답변 위치하게 하기", + "Inject user input automatically": "사용자 인풋 자동으로 주입하기", + "(if disabled, use ": "비활성화된 경우,", + "macro for manual injection)": "매크로를 사용하여 수동으로 주입하세요.", + "Only apply color as accent": "색상은 오직 강조로써만 적용됩니다", + "qr--colorClear": "색상 지우기", + "Color": "색상", + "[title]world_button_title": "캐릭터 로어. 클릭하여 로드하세요. Shift를 클릭하면 '월드 인포 링크' 팝업이 열립니다.", + "Select TTS Provider": "TTS 공급자 선택", + "tts_enabled": "활성화", + "Narrate user messages": "사용자 메시지 나레이션", + "Auto Generation": "자동 생성", + "Requires auto generation to be enabled.": "자동 생성이 활성화 된 상태여야 합니다.", + "Narrate by paragraphs (when streaming)": "(스트리밍이 진행 중일 때) 단락 별로 설명하기", + "Only narrate quotes": "대사만 나레이션 하기", + "Ignore text, even quotes, inside asterisk": "대사나 별표에 관계없이 모든 텍스트를 무시하기", + "Narrate only the translated text": "오직 번역된 텍스트만 나레이션", + "Skip codeblocks": "코드 블럭 안의 내용 읽지 않기", + "Skip tagged blocks": "태그 안의 내용 읽지 않기", + "Pass Asterisks to TTS Engine": "TTS 엔진에 별표 전달하기", + "Audio Playback Speed": "음성 재생 속도", + "Vectorization Model": "벡터화 모델", + "Keep model in memory": "모델을 메모리에 유지하기", + "Hint: Set the URL in the API connection settings.": "힌트: API 연결 설정에서 URL을 설정하세요.", + "The server MUST be started with the --embedding flag to use this feature!": "이 기능을 사용하려면 서버를 --embedding 플래그와 함께 시작해야 합니다!", + "Click to set": "설정하려면 클릭하세요", + "Chunk boundary": "청크 바운더리", + "World Info settings": "월드인포 설정", + "Enable for World Info": "월드인포에 활성화", + "Vectorization Source": "벡터화 근원", + "File vectorization settings": "파일 벡터화 설정", + "Enable for files": "파일에 활성화", + "Chat vectorization settings": "채팅 벡터화 설정", + "Enabled for chat messages": "채팅 메시지에 활성화", + "Injection Position": "삽입 깊이", + "Chunk size (chars)": "청크 사이즈 (단위: 문자당)", + "Vector Summarization": "벡터 요약", + "Summarize chat messages for vector generation": "벡터 생성을 위한 채팅 메시지 요약하기", + "Warning: This will slow down vector generation drastically, as all messages have to be summarized first.": "경고: 모든 메시지를 먼저 요약해야 하므로 벡터 생성 속도가 크게 느려질 것입니다.", + "Summarize chat messages when sending": "채팅 메시지를 전송할 때 요약하기", + "Warning: This might cause your sent messages to take a bit to process and slow down response time.": "경고: 이로 인해 전송한 메시지가 처리되는 데 시간이 걸리고 응답 속도가 느려질 수 있습니다.", + "Summarize with:": "요약을 위해 사용:", + "Summary Prompt:": "요약 프롬프트", + "Only used when Main API or WebLLM Extension is selected.": "메인 API 또는 WebLLM 확장이 선택될 때만 사용됩니다.", + "Old messages are vectorized gradually as you chat. To process all previous messages, click the button below.": "이전 메시지는 채팅하는 동안 점진적으로 벡터화됩니다. 모든 이전 메시지를 처리하려면 아래 버튼을 클릭하세요.", + "Vectorize All": "전부 벡터화", + "Purge Vectors": "벡터 정리", + "View Stats": "상태 확인", + "Connection Profile": "연결 프로필", + "Prompt Content": "프롬프트 내용", + "Instruct Sequences": "지시 시퀀스", + "Prefer Character Card Instructions": "캐릭터 카드의 지시사항을 선호", + "[title]If checked and the character card contains a Post-History Instructions override, use that instead": "활성화 된 경우, 캐릭터 카드에 Post-History 지시 무시 항목이 포함되어 있으면, 카드 지시사항의 내용으로 대신 사용합니다.", + "Auto-select Input Text": "입력 텍스트 자동 선택", + "[title]Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields.": "일부 텍스트 필드를 클릭하거나 선택할 때 자동으로 입력된 텍스트가 선택되도록 설정합니다. 팝업 입력창과 기타 커스텀 입력 필드에 적용됩니다.", + "Markdown Hotkeys": "마크다운 입력 단축키", + "[title]markdown_hotkeys_desc": "특정 텍스트 입력창에서 마크다운 형식 문자를 입력하기 위한 단축키를 활성화합니다. '/help hotkeys'를 참고하세요.", + "Show group chat queue": "그룹 채팅 대기열 표시", + "[title]In group chat, highlight the character(s) that are currently queued to generate responses and the order in which they will respond.": "그룹 채팅에서 응답을 생성하기 위해 현재 대기 중인 캐릭터와 응답할 순서를 강조 표시합니다.", + "Quick 'Impersonate' button": "빠른 '사칭' 버튼", + "[title]Show a button in the input area to ask the AI to impersonate your character for a single message": "입력 영역에 AI에게 한 메시지 동안 당신의 캐릭터 연기를 사칭하도록 요청하는 버튼을 표시합니다.", + "Injection Template": "삽입 템플릿", + "Query messages": "쿼리 메시지 수", + "Score threshold": "점수 임계값", + "ext_sum_include_wi_scan": "월드 인포를 요약 범위에 포함", + "(use _space": "이", + "macro)": "매크로를 사용하세요", + "Disable Send (Insert Into Input Field)": "전송 비활성화 (입력 필드에 삽입)", + "Place Quick Reply Before Input": "빠른 답변을 입력란 앞에 배치", + "Chat Message Visibility (by source)": "채팅 메시지 가시성 (근원별)", + "Uncheck to hide the extension's messages in chat prompts.": "체크를 해제하여 채팅 프롬프트에서 확장 프로그램의 메시지를 숨기세요.", + "Extensions Menu": "확장 메뉴", + "Slash Command": "슬래시 명령어", + "Interactive Mode": "인터랙티브 모드", + "Load a custom asset list or select": "커스텀 에셋 목록을 불러오거나", + "to install 3rd party extensions.": "를 선택하여 3rd 파티 확장 프로그램을 설치하세요.", + "Assets URL": "에셋 URL", + "Load an asset list": "에셋 목록을 불러옵니다.", + "ext_translate_btn_chat": "채팅 번역하기", + "ext_translate_btn_input": "입력 번역하기", + "Ask": "묻기", + "tag_import_none": "불러오지 않음", + "tag_import_all": "전부", + "Existing": "기존 태그 참조", + "You can add more": "원한다면", + "or_welcome": "또는", + "from other websites": "를 통해 다른 웹사이트들로부터 불러올 수 있습니다.", + "Go to the": "추가 기능 설치를 하려면", + "to install additional features.": "으로 가세요.", + "Master Import": "마스터 불러오기", + "Master Export": "마스터 내보내기", + "Chat Quick Reply Sets": "채팅 빠른 답장 세트들" +} \ No newline at end of file diff --git a/public/scripts/authors-note.js b/public/scripts/authors-note.js index d8ef622e3..cce7f0f43 100644 --- a/public/scripts/authors-note.js +++ b/public/scripts/authors-note.js @@ -37,53 +37,85 @@ const chara_note_position = { }; function setNoteTextCommand(_, text) { - $('#extension_floating_prompt').val(text).trigger('input'); - toastr.success(t`Author's Note text updated`); - return ''; + if (text) { + $('#extension_floating_prompt').val(text).trigger('input'); + toastr.success(t`Author's Note text updated`); + } + return chat_metadata[metadata_keys.prompt]; } function setNoteDepthCommand(_, text) { - const value = Number(text); + if (text) { + const value = Number(text); - if (Number.isNaN(value)) { - toastr.error(t`Not a valid number`); - return; + if (Number.isNaN(value)) { + toastr.error(t`Not a valid number`); + return; + } + + $('#extension_floating_depth').val(Math.abs(value)).trigger('input'); + toastr.success(t`Author's Note depth updated`); } - - $('#extension_floating_depth').val(Math.abs(value)).trigger('input'); - toastr.success(t`Author's Note depth updated`); - return ''; + return chat_metadata[metadata_keys.depth]; } function setNoteIntervalCommand(_, text) { - const value = Number(text); + if (text) { + const value = Number(text); - if (Number.isNaN(value)) { - toastr.error(t`Not a valid number`); - return; + if (Number.isNaN(value)) { + toastr.error(t`Not a valid number`); + return; + } + + $('#extension_floating_interval').val(Math.abs(value)).trigger('input'); + toastr.success(t`Author's Note frequency updated`); } - - $('#extension_floating_interval').val(Math.abs(value)).trigger('input'); - toastr.success(t`Author's Note frequency updated`); - return ''; + return chat_metadata[metadata_keys.interval]; } function setNotePositionCommand(_, text) { const validPositions = { + 'after': 0, 'scenario': 0, 'chat': 1, + 'before_scenario': 2, + 'before': 2, }; - const position = validPositions[text?.trim()]; + if (text) { + const position = validPositions[text?.trim()?.toLowerCase()]; - if (Number.isNaN(position)) { - toastr.error(t`Not a valid position`); - return; + if (typeof position === 'undefined') { + toastr.error(t`Not a valid position`); + return; + } + + $(`input[name="extension_floating_position"][value="${position}"]`).prop('checked', true).trigger('input'); + toastr.info(t`Author's Note position updated`); } + return Object.keys(validPositions).find(key => validPositions[key] == chat_metadata[metadata_keys.position]); +} - $(`input[name="extension_floating_position"][value="${position}"]`).prop('checked', true).trigger('input'); - toastr.info(t`Author's Note position updated`); - return ''; +function setNoteRoleCommand(_, text) { + const validRoles = { + 'system': 0, + 'user': 1, + 'assistant': 2, + }; + + if (text) { + const role = validRoles[text?.trim()?.toLowerCase()]; + + if (typeof role === 'undefined') { + toastr.error(t`Not a valid role`); + return; + } + + $('#extension_floating_role').val(Math.abs(role)).trigger('input'); + toastr.info(t`Author's Note role updated`); + } + return Object.keys(validRoles).find(key => validRoles[key] == chat_metadata[metadata_keys.role]); } function updateSettings() { @@ -462,57 +494,84 @@ export function initAuthorsNote() { }); $('#option_toggle_AN').on('click', onANMenuItemClick); - SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'note', + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ + name: 'note', callback: setNoteTextCommand, + returns: 'current author\'s note', unnamedArgumentList: [ new SlashCommandArgument( - 'text', [ARGUMENT_TYPE.STRING], true, + 'text', [ARGUMENT_TYPE.STRING], false, ), ], helpString: `
- Sets an author's note for the currently selected chat. + Sets an author's note for the currently selected chat if specified and returns the current note.
`, })); - SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'depth', + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ + name: 'note-depth', + aliases: ['depth'], callback: setNoteDepthCommand, + returns: 'current author\'s note depth', unnamedArgumentList: [ new SlashCommandArgument( - 'number', [ARGUMENT_TYPE.NUMBER], true, + 'number', [ARGUMENT_TYPE.NUMBER], false, ), ], helpString: `
- Sets an author's note depth for in-chat positioning. + Sets an author's note depth for in-chat positioning if specified and returns the current depth.
`, })); - SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'freq', + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ + name: 'note-frequency', + aliases: ['freq', 'note-freq'], callback: setNoteIntervalCommand, + returns: 'current author\'s note insertion frequency', namedArgumentList: [], unnamedArgumentList: [ new SlashCommandArgument( - 'number', [ARGUMENT_TYPE.NUMBER], true, + 'number', [ARGUMENT_TYPE.NUMBER], false, ), ], helpString: `
- Sets an author's note insertion frequency. + Sets an author's note insertion frequency if specified and returns the current frequency.
`, })); - SlashCommandParser.addCommandObject(SlashCommand.fromProps({ name: 'pos', + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ + name: 'note-position', callback: setNotePositionCommand, + aliases: ['pos', 'note-pos'], + returns: 'current author\'s note insertion position', namedArgumentList: [], unnamedArgumentList: [ new SlashCommandArgument( - 'position', [ARGUMENT_TYPE.STRING], true, false, null, ['chat', 'scenario'], + 'position', [ARGUMENT_TYPE.STRING], false, false, null, ['before', 'after', 'chat'], ), ], helpString: `
- Sets an author's note position. + Sets an author's note position if specified and returns the current position. +
+ `, + })); + SlashCommandParser.addCommandObject(SlashCommand.fromProps({ + name: 'note-role', + callback: setNoteRoleCommand, + returns: 'current author\'s note chat insertion role', + namedArgumentList: [], + unnamedArgumentList: [ + new SlashCommandArgument( + 'position', [ARGUMENT_TYPE.STRING], false, false, null, ['system', 'user', 'assistant'], + ), + ], + helpString: ` +
+ Sets an author's note chat insertion role if specified and returns the current role.
`, })); diff --git a/public/scripts/extensions/caption/settings.html b/public/scripts/extensions/caption/settings.html index 64ef9aee9..eee8894d4 100644 --- a/public/scripts/extensions/caption/settings.html +++ b/public/scripts/extensions/caption/settings.html @@ -61,6 +61,7 @@ + diff --git a/public/scripts/extensions/tts/settings.html b/public/scripts/extensions/tts/settings.html index de917d127..ecbdd65c6 100644 --- a/public/scripts/extensions/tts/settings.html +++ b/public/scripts/extensions/tts/settings.html @@ -7,7 +7,7 @@
- Select TTS Provider
+ Select TTS Provider
@@ -16,49 +16,49 @@
-

- Audio Playback Speed + Audio Playback Speed
@@ -80,4 +80,4 @@
-
+
\ No newline at end of file diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js index d98b86448..a74ef0d72 100644 --- a/public/scripts/group-chats.js +++ b/public/scripts/group-chats.js @@ -110,6 +110,7 @@ let newGroupMembers = []; export const group_activation_strategy = { NATURAL: 0, LIST: 1, + MANUAL: 2, }; export const group_generation_mode = { @@ -852,6 +853,9 @@ async function generateGroupWrapper(by_auto_mode, type = null, params = {}) { else if (activationStrategy === group_activation_strategy.LIST) { activatedMembers = activateListOrder(enabledMembers); } + else if (activationStrategy === group_activation_strategy.MANUAL && !isUserInput) { + activatedMembers = shuffle(enabledMembers).slice(0, 1).map(x => characters.findIndex(y => y.avatar === x)).filter(x => x !== -1); + } if (activatedMembers.length === 0) { //toastr.warning('All group members are disabled. Enable at least one to get a reply.'); diff --git a/public/scripts/logprobs.js b/public/scripts/logprobs.js index fa7ff0d15..17c0584a3 100644 --- a/public/scripts/logprobs.js +++ b/public/scripts/logprobs.js @@ -519,14 +519,14 @@ function convertTokenIdLogprobsToText(input) { const tokenizerId = getTokenizerBestMatch(api); - // Flatten unique token IDs across all logprobs + /** @type {any[]} Flatten unique token IDs across all logprobs */ const tokenIds = Array.from(new Set(input.flatMap(logprobs => logprobs.topLogprobs.map(([token]) => token).concat(logprobs.token), ))); // Submit token IDs to tokenizer to get token text, then build ID->text map // noinspection JSCheckFunctionSignatures - mutates input in-place - const { chunks } = decodeTextTokens(tokenizerId, tokenIds.map(parseInt)); + const { chunks } = decodeTextTokens(tokenizerId, tokenIds); const tokenIdText = new Map(tokenIds.map((id, i) => [id, chunks[i]])); // Fixup logprobs data with token text diff --git a/public/scripts/openai.js b/public/scripts/openai.js index 2f1392414..dbbd33386 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -4056,7 +4056,7 @@ async function onModelChange() { if (oai_settings.chat_completion_source == chat_completion_sources.MAKERSUITE) { if (oai_settings.max_context_unlocked) { $('#openai_max_context').attr('max', max_2mil); - } else if (value.includes('gemini-exp-1114')){ + } else if (value.includes('gemini-exp-1114') || value.includes('gemini-exp-1121')) { $('#openai_max_context').attr('max', max_32k); } else if (value.includes('gemini-1.5-pro')) { $('#openai_max_context').attr('max', max_2mil); @@ -4196,10 +4196,10 @@ async function onModelChange() { else if (['command-light-nightly', 'command-nightly'].includes(oai_settings.cohere_model)) { $('#openai_max_context').attr('max', max_8k); } - else if (oai_settings.cohere_model.includes('command-r')) { + else if (oai_settings.cohere_model.includes('command-r') || ['c4ai-aya-expanse-32b'].includes(oai_settings.cohere_model)) { $('#openai_max_context').attr('max', max_128k); } - else if (['c4ai-aya-23'].includes(oai_settings.cohere_model)) { + else if (['c4ai-aya-23', 'c4ai-aya-expanse-8b'].includes(oai_settings.cohere_model)) { $('#openai_max_context').attr('max', max_8k); } else { @@ -4745,6 +4745,7 @@ export function isImageInliningSupported() { 'gemini-1.5-flash-8b-exp-0827', 'gemini-1.5-flash-8b-exp-0924', 'gemini-exp-1114', + 'gemini-exp-1121', 'gemini-1.0-pro-vision-latest', 'gemini-1.5-pro', 'gemini-1.5-pro-latest', diff --git a/src/endpoints/backends/chat-completions.js b/src/endpoints/backends/chat-completions.js index c47f64bd4..502f3c266 100644 --- a/src/endpoints/backends/chat-completions.js +++ b/src/endpoints/backends/chat-completions.js @@ -130,10 +130,6 @@ async function sendClaudeRequest(request, response) { delete requestBody.system; } if (useTools) { - // Claude doesn't do prefills on function calls, and doesn't allow empty messages - if (convertedPrompt.messages.length && convertedPrompt.messages[convertedPrompt.messages.length - 1].role === 'assistant') { - convertedPrompt.messages.push({ role: 'user', content: '.' }); - } additionalHeaders['anthropic-beta'] = 'tools-2024-05-16'; requestBody.tool_choice = { type: request.body.tool_choice }; requestBody.tools = request.body.tools @@ -141,6 +137,10 @@ async function sendClaudeRequest(request, response) { .map(tool => tool.function) .map(fn => ({ name: fn.name, description: fn.description, input_schema: fn.parameters })); + // Claude doesn't do prefills on function calls, and doesn't allow empty messages + if (requestBody.tools.length && convertedPrompt.messages.length && convertedPrompt.messages[convertedPrompt.messages.length - 1].role === 'assistant') { + convertedPrompt.messages.push({ role: 'user', content: [{ type: 'text', text: '\u200b' }] }); + } if (enableSystemPromptCache && requestBody.tools.length) { requestBody.tools[requestBody.tools.length - 1]['cache_control'] = { type: 'ephemeral' }; } @@ -280,7 +280,7 @@ async function sendMakerSuiteRequest(request, response) { delete generationConfig.stopSequences; } - const should_use_system_prompt = (model.includes('gemini-1.5-flash') || model.includes('gemini-1.5-pro') || model.includes('gemini-exp-1114')) && request.body.use_makersuite_sysprompt; + const should_use_system_prompt = (model.includes('gemini-1.5-flash') || model.includes('gemini-1.5-pro') || model.includes('gemini-exp-1114') || model.includes('gemini-exp-1121')) && request.body.use_makersuite_sysprompt; const prompt = convertGooglePrompt(request.body.messages, model, should_use_system_prompt, request.body.char_name, request.body.user_name); let body = { contents: prompt.contents, diff --git a/src/prompt-converters.js b/src/prompt-converters.js index ccea89139..b5d624a1c 100644 --- a/src/prompt-converters.js +++ b/src/prompt-converters.js @@ -347,6 +347,7 @@ export function convertGooglePrompt(messages, model, useSysPrompt = false, charN 'gemini-1.5-flash-8b-exp-0827', 'gemini-1.5-flash-8b-exp-0924', 'gemini-exp-1114', + 'gemini-exp-1121', 'gemini-1.5-pro', 'gemini-1.5-pro-latest', 'gemini-1.5-pro-001', @@ -628,11 +629,30 @@ export function convertMistralMessages(messages, charName = '', userName = '') { export function mergeMessages(messages, charName, userName, strict) { let mergedMessages = []; + /** @type {Map} */ + const contentTokens = new Map(); + // Remove names from the messages messages.forEach((message) => { if (!message.content) { message.content = ''; } + // Flatten contents and replace image URLs with random tokens + if (Array.isArray(message.content)) { + const text = message.content.map((content) => { + if (content.type === 'text') { + return content.text; + } + // Could be extended with other non-text types + if (content.type === 'image_url') { + const token = crypto.randomBytes(32).toString('base64'); + contentTokens.set(token, content); + return token; + } + return ''; + }).join('\n\n'); + message.content = text; + } if (message.role === 'system' && message.name === 'example_assistant') { if (charName && !message.content.startsWith(`${charName}: `)) { message.content = `${charName}: ${message.content}`; @@ -673,6 +693,32 @@ export function mergeMessages(messages, charName, userName, strict) { }); } + // Check for content tokens and replace them with the actual content objects + if (contentTokens.size > 0) { + mergedMessages.forEach((message) => { + const hasValidToken = Array.from(contentTokens.keys()).some(token => message.content.includes(token)); + + if (hasValidToken) { + const splitContent = message.content.split('\n\n'); + const mergedContent = []; + + splitContent.forEach((content) => { + if (contentTokens.has(content)) { + mergedContent.push(contentTokens.get(content)); + } else { + if (mergedContent.length > 0 && mergedContent[mergedContent.length - 1].type === 'text') { + mergedContent[mergedContent.length - 1].text += `\n\n${content}`; + } else { + mergedContent.push({ type: 'text', text: content }); + } + } + }); + + message.content = mergedContent; + } + }); + } + if (strict) { for (let i = 0; i < mergedMessages.length; i++) { // Force mid-prompt system messages to be user messages