example-projects/examples/everything_function/scripts/translate.py

64 lines
2.0 KiB
Python
Raw Normal View History

"""Translate arbitrary text into an arbitrary target language.
A few years ago, building this would have meant either licensing Google
Translate, or training your own sequence-to-sequence model per language
pair. Here `target_language` is just a string the model reads.
"""
from __future__ import annotations
from ai_function import ask
def ai_translate(text: str, target_language: str) -> str:
return ask(
"Translate the sentence into the target language. Output only the "
"translation, with no quotes and no explanation.\n"
"Target language: French\n"
'Sentence: "Where is the train station?"\n'
"Translation: Où est la gare ?\n"
"Target language: Japanese\n"
'Sentence: "I would like a cup of coffee."\n'
"Translation: コーヒーを一杯ください。\n"
f"Target language: {target_language}\n"
f'Sentence: "{text}"\n'
"Translation: "
)
def _canned_examples() -> None:
sentence = "The library closes at six o'clock on Sundays."
print(f"original: {sentence}\n")
for lang in ["Spanish", "German", "Mandarin Chinese", "Brazilian Portuguese"]:
print(f"{lang:>22}: {ai_translate(sentence, lang)}")
def _interactive() -> None:
print("\n--- interactive ---")
print("Translate your own text. 'q' as the text to quit.\n")
while True:
try:
text = input("text > ").strip()
except (EOFError, KeyboardInterrupt):
print()
return
if text.lower() in {"q", "quit", "exit"}:
return
if not text:
continue
try:
lang = input("target language > ").strip()
except (EOFError, KeyboardInterrupt):
print()
return
if not lang:
print(" no target language, skipping")
continue
print(f"original: {text}")
print(f"translation: {ai_translate(text, lang)}\n")
if __name__ == "__main__":
_canned_examples()
_interactive()