翻译三语锁定: 提示词显式声明只在中/日/英间翻译(非三语输入输出空串),targetLangOk对西里尔/阿拉伯/希伯来/泰/韩等三语外文字零容忍(任何目标语直接拒收→MISS langdrift→重试)
This commit is contained in:
parent
635a06e1c5
commit
c25f40927e
|
|
@ -2113,7 +2113,8 @@ class MainActivity : AppCompatActivity() {
|
||||||
engine.generate(
|
engine.generate(
|
||||||
systemPrompt = "你是专业翻译。把给出的句子翻译成" + targetName +
|
systemPrompt = "你是专业翻译。把给出的句子翻译成" + targetName +
|
||||||
"。只输出译文本身,不要解释、不要引号、不要抄写原文。" +
|
"。只输出译文本身,不要解释、不要引号、不要抄写原文。" +
|
||||||
langHint + "。",
|
"你只在中文、日本語、English 三种语言之间翻译;" +
|
||||||
|
"输入不属于这三种语言时输出空字符串。" + langHint + "。",
|
||||||
userPrompt = segKeys[0].second,
|
userPrompt = segKeys[0].second,
|
||||||
maxNewTokens = budget, temperature = temp,
|
maxNewTokens = budget, temperature = temp,
|
||||||
)
|
)
|
||||||
|
|
@ -2134,6 +2135,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
"只输出JSON对象,键是编号字符串,值是译文," +
|
"只输出JSON对象,键是编号字符串,值是译文," +
|
||||||
"例如 {\"1\":\"…\",\"2\":\"…\"}。不得增删编号。" +
|
"例如 {\"1\":\"…\",\"2\":\"…\"}。不得增删编号。" +
|
||||||
"严禁把原文照抄为译文;无法翻译的段值输出空字符串。" +
|
"严禁把原文照抄为译文;无法翻译的段值输出空字符串。" +
|
||||||
|
"你只在中文、日本語、English 三种语言之间翻译。" +
|
||||||
langHint + "。",
|
langHint + "。",
|
||||||
userPrompt = "【文本】\n" + numbered,
|
userPrompt = "【文本】\n" + numbered,
|
||||||
maxNewTokens = budget, temperature = temp,
|
maxNewTokens = budget, temperature = temp,
|
||||||
|
|
@ -2160,6 +2162,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
e2.generate(
|
e2.generate(
|
||||||
systemPrompt = "你是专业翻译。把给出的文本翻译成" +
|
systemPrompt = "你是专业翻译。把给出的文本翻译成" +
|
||||||
targetName + "。只输出译文本身,不要解释。" +
|
targetName + "。只输出译文本身,不要解释。" +
|
||||||
|
"你只在中文、日本語、English 三种语言之间翻译。" +
|
||||||
langHint + "。",
|
langHint + "。",
|
||||||
userPrompt = st.second,
|
userPrompt = st.second,
|
||||||
maxNewTokens = (st.second.length * 2 + 96)
|
maxNewTokens = (st.second.length * 2 + 96)
|
||||||
|
|
@ -2242,6 +2245,14 @@ class MainActivity : AppCompatActivity() {
|
||||||
// ja 必须含足量假名;zh 不得有假名且繁体专用字 ≤1;en 不得含 CJK。
|
// ja 必须含足量假名;zh 不得有假名且繁体专用字 ≤1;en 不得含 CJK。
|
||||||
private val tradOnlyChars = "們這來說對學體豐華讓裡國變顯點單據觀"
|
private val tradOnlyChars = "們這來說對學體豐華讓裡國變顯點單據觀"
|
||||||
private fun targetLangOk(tr: String): Boolean {
|
private fun targetLangOk(tr: String): Boolean {
|
||||||
|
// 三语以外文字零容忍(漂移成俄语/韩语/阿语/泰语等时任何目标语都不该放行)
|
||||||
|
tr.forEach { c ->
|
||||||
|
val cp = c.code
|
||||||
|
if (cp in 0x400..0x4FF || cp in 0x600..0x6FF || cp in 0x590..0x5FF ||
|
||||||
|
cp in 0xE00..0xE7F || cp in 0x3130..0x318F ||
|
||||||
|
cp in 0xAC00..0xD7AF || cp in 0x1100..0x11FF
|
||||||
|
) return false
|
||||||
|
}
|
||||||
if (tr.length < 12) return true
|
if (tr.length < 12) return true
|
||||||
return when (uiLanguage()) {
|
return when (uiLanguage()) {
|
||||||
"ja" -> {
|
"ja" -> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue