Skip to content

TRANSLATE 提示

Prompt Engineering - 语言翻译的 Prompt 设计

Section titled “Prompt Engineering - 语言翻译的 Prompt 设计”

Prompt engineering 使我们能够利用大型语言模型(Large Language Models, LLMs),例如 ChatGPT,的多样化能力,其中包括强大的语言翻译功能。在本章中,我们将探讨如何精心设计有效的 prompt 来指导 LLMs 准确地将文本从一种语言翻译成另一种语言。

通过在你的 prompt 中清晰地指定源文本和期望的目标语言,你可以利用 LLMs 进行多语言沟通、内容本地化以及各种语言翻译任务。

要执行翻译,你的 prompt 需要清晰地说明要翻译的文本和目标语言。LLMs 通常很擅长自动检测源语言,但指定源语言有时可以提高准确性,特别是对于不太常见的语言或有歧义的文本。

一个基本的翻译 prompt 结构很简单:

User: Translate the following English text to French: "Hello, how are you?"
LLM: Bonjour, comment ça va ?

另一个例子:

User: Please translate this sentence into Spanish: "The weather is beautiful today."
LLM: El tiempo está hermoso hoy.

在这些示例中,用户清晰地提供了源文本并指定了目标语言。然后 LLM 提供了翻译结果。

要使用 LLMs 获得最佳翻译结果:

  • 清晰指定目标语言:务必说明期望的目标语言(例如,“翻译成德语”,“…翻译成日语”)。
  • 提供完整的源文本:确保要翻译的完整文本包含在 prompt 中,通常用引号括起来或用分隔符隔开以增加清晰度,特别是对于较长的文本。
  • 指定源语言(可选但有帮助):虽然 LLMs 通常会自动检测源语言,但指定它可以防止歧义(例如,“将以下英文文本翻译成普通话中文:…”)。
  • 考虑上下文以解决歧义:如果一个单词或短语有多种含义,在源文本中提供一点上下文可以帮助 LLM 选择正确的翻译。
  • 请求正式程度或语气(进阶):对于某些语言,你可能可以指定期望的正式程度(例如,“翻译成正式的法语”)。这更具实验性,但也可能有效。
  • 迭代和改进以获得细微差别:即使是高级 LLMs,机器翻译也并非总能完美捕捉到所有细微之处。对于关键翻译,请检查并可能改进 prompt 或输出。如果第一次翻译不太准确,你可以要求提供替代翻译。

让我们看一个使用 Python 脚本结合 OpenAI API 请求 LLM 翻译的实际示例。

import openai
import os
# 推荐:通过环境变量设置你的 API 密钥。
# openai.api_key = os.getenv("OPENAI_API_KEY")
# 在本教程中,使用占位符。请替换为你实际的密钥。
openai.api_key = 'YOUR_API_KEY'
def translate_text(source_text, target_language, source_language="auto"):
if source_language.lower() == "auto":
prompt_content = f"Translate the following text to {target_language}:\n\n\"{source_text}\""
else:
prompt_content = f"Translate the following {source_language} text to {target_language}:\n\n\"{source_text}\""
messages = [
{"role": "system", "content": "You are a highly skilled language translator."},
{"role": "user", "content": prompt_content}
]
try:
response = openai.chat.completions.create(
model="gpt-3.5-turbo", # 或使用更新的模型,例如 gpt-4o-mini
messages=messages,
max_tokens=len(source_text) * 2 + 50, # 根据源文本长度估算
temperature=0.3, # 较低的 temperature 值可获得更准确的翻译
n=1,
stop=None
)
return response.choices[0].message.content.strip()
except Exception as e:
return f"An error occurred: {e}"
# 示例用法:
text_to_translate = "Hello, how are you? I hope your day is going well!"
target_lang = "French"
translated_text = translate_text(text_to_translate, target_lang, source_language="English")
print(f"Original ({'English'}): {text_to_translate}")
print(f"Translated ({target_lang}): {translated_text}")
text_to_translate_2 = "Wie geht es Ihnen heute?"
target_lang_2 = "English"
translated_text_2 = translate_text(text_to_translate_2, target_lang_2, source_language="German")
print(f"Original ({'German'}): {text_to_translate_2}")
print(f"Translated ({target_lang_2}): {translated_text_2}")

在此 Python 脚本中,translate_text 函数构建了一个清晰说明源文本和目标语言(以及可选的源语言)的 prompt。然后它使用 OpenAI API 来获取翻译结果。

运行脚本时,你将收到 LLM 返回的翻译文本。第一个示例的输出如下:

Original (English): Hello, how are you? I hope your day is going well!
Translated (French): Bonjour, comment ça va ? J'espère que votre journée se passe bien !

第二个示例的输出如下:

Original (German): Wie geht es Ihnen heute?
Translated (English): How are you today?

在本章中,我们探讨了如何有效地为 LLMs 设计 prompt 来执行语言翻译任务。通过提供清晰的指令,包括源文本和目标语言,你可以利用现代 LLMs 强大的翻译能力。

我们讨论了最佳实践,例如指定语言、提供上下文以及迭代以获得细微差别的翻译。Python 示例展示了一种将基于 LLM 的翻译集成到应用程序中的实用方法。这项技能对于处理多语言内容或受众的任何人来说都是基础的。