所以我想将一个特定的提示从英语翻译成荷兰语,并为此提供 3 个不同的选项,有时它似乎有效,有时 ChatGPT 在他应该翻译的文本后面给出文本。因为他一直不明白提示,我该如何解决这个问题,有什么办法可以让它更好、更一致,始终提供 3 个翻译,只提供翻译文本?
下面的代码给出了他应该翻译成哪种语言的基本提示
public async Task<List<string>> TranslateVariant(TranslateModel model)
{
_model = new TranslateModel()
{
Default = model.Default,
Variant = model.Variant,
Property = model.Property,
Id = model.Id
};
_textModel = new GenerateTextModel()
{
Prompt = $"Translate the following text from {_model.Default} to the language of the language code {_model.Variant} Only answer with the translation for that specific text nothing else. This is the text you should translate: {_model.Property} "
};
var choices = await _chatGPTService.CreateMultipleOptionsForTranslation(_textModel);
return choices;
}
此代码将提供 3 个选项,并添加一条提示,其中前一条消息作为已给出的选项,但有时响应会在翻译后给我翻译“使其与先前的翻译不同”。
{
var api = new OpenAIAPI(_settings.ApiKey);
var choices = new List<string>();
for (int i = 0; i < 3; i++)
{
var result = await api.Chat.CreateChatCompletionAsync(new ChatRequest()
{
Model = _model,
NumChoicesPerMessage = 1,
Temperature = 0.7,
MaxTokens = 2000,
PresencePenalty = 0.7,
Messages = new ChatMessage[]
{
new ChatMessage(ChatMessageRole.User, model.Prompt)
}
});
var choice = result.Choices[0].Message.Content.Trim();
bool isDuplicate = choices.Contains(choice);
if (!isDuplicate)
{
choices.Add(choice);
var optionNumber = choices.Count;
model.Prompt += $"{(optionNumber > 1 ? "and " : "")}Make it different than the previous translation {optionNumber}: {choice}";
}
}
return choices;
}
我怎样才能做得更好,有人有什么想法吗?或者 OpenAI API 是否有更好的方法来提供 3 个不同的翻译选项?
您可以尝试仅发出一个请求,而不是三个单独的请求,并在单个请求的提示中要求 Chart GPT 返回三种不同的翻译。
发送此提示时:
将“我饿了”从英语翻译成荷兰语。返回三个不同的 如果可能的话,使用同义词进行翻译。只返回三个 翻译由管道字符分隔。
结果是:
Ik heb honger |伊克·本·洪格里格 | Ik voel me hongerig
不确定是否正确,我不会说荷兰语。