当错误的参数通过自定义引擎传递时,Microsoft Translator Text 不会引发错误
Microsoft Translator Text not raising error when wrong params passed with custom engine
我注意到 2 种情况,在这些情况下,Microsoft Translator Text 在使用自定义引擎时应该会引发错误,但却出现了意外行为。
正常情况
我使用 POST 方法发送请求。
URL = https://api.cognitive.microsofttranslator.com/translate
参数:
- api-version=3.0
- 文本类型=纯文本
- 类别=my_engine_id
- 来自=de
- to=en
Headers={"Ocp-Apim-Subscription-Key":my_key,'Content-type':'application/json'}
Body(JSON格式):
[{"Text": "Klicken Sie in jedem Bildschirm auf das Textbeispiel, das am besten lesbar ist."},
{"Text": "Verschiedene Themen aus den Bereichen Wortschatz, Satzbau, Kohärenz, Textwiedergabe,
Kommasetzung und Orthographie werden anhand von Textbeispielen und Übungen vorgestellt."},
{"Text": "„Auch wenn zwei Staaten in Deutschland existieren, sind sie doch füreinander nicht Ausland; ihre Beziehungen zueinander können nur von besonderer Art sein.“"},
{"Text": "Mit dieser Formel bricht der neue Kanzler ein jahrzehntelanges Tabu."},
{"Text": "Bislang wird der östliche Teil Deutschlands von den bundesdeutschen Politikern als SBZ, Zone oder „sogenannte DDR“ bezeichnet."}]
响应符合预期:
[{"translations":
[{"text": "On each screen, click on the text sample that is most readable.",
"to": "en"}]},
{"translations":
[{"text": "Various topics from the fields of vocabulary, typesetting, coherence, text reproduction, comma setting and orthography are presented using text examples and exercises.",
"to": "en"}]},
etc.
案例一
我将 中的参数 更改为 =fr (而不是 "en")。
响应显示文本已被翻译成 法语,尽管自定义引擎仅从 DE>EN 训练(因此我认为使用了通用引擎,但是HTTP 响应中没有信息)!
[{"translations":[{"text":"Sur chaque écran, cliquez sur l’échantillon de texte le plus lisible.","to":"fr"}]},{"translations":[{"text":"Divers sujets des domaines du vocabulaire, du typage, de la cohérence, de la reproduction du texte, du décor de virgule et de l’orthographe sont présentés à l’aide d’exemples de textes et d’exercices.","to":"fr"}]},{"translations":[{"text":"\"Même si deux États existent en Allemagne, ils ne sont pas étrangers l’un à l’autre; Leurs relations les uns avec les autres ne peuvent être que d’un genre particulier.","to":"fr"}]},{"translations":[{"text":"Avec cette formule, le nouveau chancelier brise un tabou de dix ans.","to":"fr"}]},{"translations":[{"text":"Jusqu’à présent, la partie orientale de l’Allemagne est appelée par les politiciens fédéraux allemands SBZ, zone ou « soi-disant DDR ».","to":"fr"}]}]
我本以为 HTTP 响应中会出现错误,而不是这种行为:
400075 The language pair and category combination is not valid.
案例二
我将参数从=da更改为URL(而不是"de")。
响应显示翻译只是源文本的副本,尽管它表明它被翻译成 "en" !
[{"translations":[{"text":"Klicken Sie in jedem Bildschirm auf das Textbeispiel, das am besten lesbar ist.","to":"en"}]},{"translations":[{"text":"Verschiedene Themen aus den Bereichen Wortschatz, Satzbau, Kohärenz, Textwiedergabe, Kommasetzung und Orthographie werden anhand von Textbeispielen und Übungen vorgestellt.","to":"en"}]},{"translations":[{"text":"\"Auch wenn zwei Staaten in Deutschland existieren, sind sie doch füreinander nicht Ausland; ihre Beziehungen zueinander können nur von besonderer Art sein.\"","to":"en"}]},{"translations":[{"text":"Mit dieser Formula bricht der neue Kanzler ein jahrzehntelanges Tabu.","to":"en"}]},{"translations":[{"text":"Bislang wird der östliche Teil Deutschlands von den bundesdeutschen Politikern als SBZ, Zone oder \"sogenannte DDR\" bezeichnet.","to":"en"}]}]
与案例 1 相同,而不是这种行为,我预计 HTTP 响应中会出现错误:
400075 The language pair and category combination is not valid.
这两种情况我没有收到错误是否正常?之前有没有其他人遇到过这种行为?
其实我想要么使用这些错误代码,要么在发送翻译请求之前检查语言对对应于自定义引擎,你知道有什么办法吗?
对于案例 1,翻译分两步完成 - de>en,en>fr。自定义引擎用于第一跳,我们的通用模型用于第二跳。如果您希望在这种情况下翻译失败,您可以将参数 allowFallback 设置为 false
allowFallback Optional parameter.
Specifies that the service is allowed to fallback to a general system when a custom system does not exist. Possible values are: true (default) or false.
docs
在第二种情况下,请求包含德语文本但被标记为丹麦语。除了 return 输入之外,我们在这里无能为力。如果您希望 api 检测源语言,请从参数中省略它,然后 api 将 运行 自动检测文本。
If the from parameter is not specified, automatic language detection is applied to determine the source language.
我注意到 2 种情况,在这些情况下,Microsoft Translator Text 在使用自定义引擎时应该会引发错误,但却出现了意外行为。
正常情况
我使用 POST 方法发送请求。
URL = https://api.cognitive.microsofttranslator.com/translate
参数:
- api-version=3.0
- 文本类型=纯文本
- 类别=my_engine_id
- 来自=de
- to=en
Headers={"Ocp-Apim-Subscription-Key":my_key,'Content-type':'application/json'}
Body(JSON格式):
[{"Text": "Klicken Sie in jedem Bildschirm auf das Textbeispiel, das am besten lesbar ist."},
{"Text": "Verschiedene Themen aus den Bereichen Wortschatz, Satzbau, Kohärenz, Textwiedergabe,
Kommasetzung und Orthographie werden anhand von Textbeispielen und Übungen vorgestellt."},
{"Text": "„Auch wenn zwei Staaten in Deutschland existieren, sind sie doch füreinander nicht Ausland; ihre Beziehungen zueinander können nur von besonderer Art sein.“"},
{"Text": "Mit dieser Formel bricht der neue Kanzler ein jahrzehntelanges Tabu."},
{"Text": "Bislang wird der östliche Teil Deutschlands von den bundesdeutschen Politikern als SBZ, Zone oder „sogenannte DDR“ bezeichnet."}]
响应符合预期:
[{"translations":
[{"text": "On each screen, click on the text sample that is most readable.",
"to": "en"}]},
{"translations":
[{"text": "Various topics from the fields of vocabulary, typesetting, coherence, text reproduction, comma setting and orthography are presented using text examples and exercises.",
"to": "en"}]},
etc.
案例一
我将 中的参数 更改为 =fr (而不是 "en")。
响应显示文本已被翻译成 法语,尽管自定义引擎仅从 DE>EN 训练(因此我认为使用了通用引擎,但是HTTP 响应中没有信息)!
[{"translations":[{"text":"Sur chaque écran, cliquez sur l’échantillon de texte le plus lisible.","to":"fr"}]},{"translations":[{"text":"Divers sujets des domaines du vocabulaire, du typage, de la cohérence, de la reproduction du texte, du décor de virgule et de l’orthographe sont présentés à l’aide d’exemples de textes et d’exercices.","to":"fr"}]},{"translations":[{"text":"\"Même si deux États existent en Allemagne, ils ne sont pas étrangers l’un à l’autre; Leurs relations les uns avec les autres ne peuvent être que d’un genre particulier.","to":"fr"}]},{"translations":[{"text":"Avec cette formule, le nouveau chancelier brise un tabou de dix ans.","to":"fr"}]},{"translations":[{"text":"Jusqu’à présent, la partie orientale de l’Allemagne est appelée par les politiciens fédéraux allemands SBZ, zone ou « soi-disant DDR ».","to":"fr"}]}]
我本以为 HTTP 响应中会出现错误,而不是这种行为:
400075 The language pair and category combination is not valid.
案例二
我将参数从=da更改为URL(而不是"de")。
响应显示翻译只是源文本的副本,尽管它表明它被翻译成 "en" !
[{"translations":[{"text":"Klicken Sie in jedem Bildschirm auf das Textbeispiel, das am besten lesbar ist.","to":"en"}]},{"translations":[{"text":"Verschiedene Themen aus den Bereichen Wortschatz, Satzbau, Kohärenz, Textwiedergabe, Kommasetzung und Orthographie werden anhand von Textbeispielen und Übungen vorgestellt.","to":"en"}]},{"translations":[{"text":"\"Auch wenn zwei Staaten in Deutschland existieren, sind sie doch füreinander nicht Ausland; ihre Beziehungen zueinander können nur von besonderer Art sein.\"","to":"en"}]},{"translations":[{"text":"Mit dieser Formula bricht der neue Kanzler ein jahrzehntelanges Tabu.","to":"en"}]},{"translations":[{"text":"Bislang wird der östliche Teil Deutschlands von den bundesdeutschen Politikern als SBZ, Zone oder \"sogenannte DDR\" bezeichnet.","to":"en"}]}]
与案例 1 相同,而不是这种行为,我预计 HTTP 响应中会出现错误:
400075 The language pair and category combination is not valid.
这两种情况我没有收到错误是否正常?之前有没有其他人遇到过这种行为?
其实我想要么使用这些错误代码,要么在发送翻译请求之前检查语言对对应于自定义引擎,你知道有什么办法吗?
对于案例 1,翻译分两步完成 - de>en,en>fr。自定义引擎用于第一跳,我们的通用模型用于第二跳。如果您希望在这种情况下翻译失败,您可以将参数 allowFallback 设置为 false
allowFallback Optional parameter. Specifies that the service is allowed to fallback to a general system when a custom system does not exist. Possible values are: true (default) or false. docs
在第二种情况下,请求包含德语文本但被标记为丹麦语。除了 return 输入之外,我们在这里无能为力。如果您希望 api 检测源语言,请从参数中省略它,然后 api 将 运行 自动检测文本。
If the from parameter is not specified, automatic language detection is applied to determine the source language.