ChatGPT OpenAI API 不明白提示

问题描述 投票:0回答:1

所以我想将一个特定的提示从英语翻译成荷兰语,并为此提供 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 个不同的翻译选项?

c# translation openai-api
1个回答
2
投票

您可以尝试仅发出一个请求,而不是三个单独的请求,并在单个请求的提示中要求 Chart GPT 返回三种不同的翻译。

发送此提示时:

将“我饿了”从英语翻译成荷兰语。返回三个不同的 如果可能的话,使用同义词进行翻译。只返回三个 翻译由管道字符分隔。

结果是:

Ik heb honger |伊克·本·洪格里格 | Ik voel me hongerig

不确定是否正确,我不会说荷兰语。

© www.soinside.com 2019 - 2024. All rights reserved.