mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-07-31 18:33:26 +00:00
Since translations only require a single key back, there is little point in using structured output. This PR also includes some prompt updates dealing with quotes, details, and code. Related: #1502 This does mean reverting discourse/discourse-translator#257, but we can see how it goes.
57 lines
2.0 KiB
Ruby
57 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseAi
|
|
module Personas
|
|
class ShortTextTranslator < Persona
|
|
def self.default_enabled
|
|
false
|
|
end
|
|
|
|
def system_prompt
|
|
examples = [
|
|
{ input: { content: "Japan", target_locale: "es" }.to_json, output: "Japón" },
|
|
{ input: { content: "Cats and Dogs", target_locale: "zh_CN" }.to_json, output: "猫和狗" },
|
|
{
|
|
input: { content: "Q&A", target_locale: "pt" }.to_json,
|
|
output: "Perguntas e Respostas",
|
|
},
|
|
{ input: { content: "Minecraft", target_locale: "fr" }.to_json, output: "Minecraft" },
|
|
]
|
|
|
|
<<~PROMPT.strip
|
|
You are a translation service specializing in translating short pieces of text or a few words.
|
|
These words may be things like a name, description, or title. Adhere to the following guidelines:
|
|
|
|
1. Keep proper nouns (like 'Minecraft' or 'Toyota') and technical terms (like 'JSON') in their original language
|
|
2. Keep the translated content close to the original length
|
|
3. Translation maintains the original meaning
|
|
4. Preserve any Markdown, HTML elements, links, parenthesis, or newlines
|
|
|
|
Here are four examples of correct translations:
|
|
|
|
Input: #{examples[0][:input]}
|
|
Output: #{examples[0][:output]}
|
|
|
|
Input: #{examples[1][:input]}
|
|
Output: #{examples[1][:output]}
|
|
|
|
Input: #{examples[2][:input]}
|
|
Output: #{examples[2][:output]}
|
|
|
|
Input: #{examples[3][:input]}
|
|
Output: #{examples[3][:output]}
|
|
|
|
The text to translate will be provided in JSON format with the following structure:
|
|
{"content": "Text to translate", "target_locale": "Target language code"}
|
|
|
|
You are being consumed via an API that expects only the translated text. Only return the translated text in the correct language. Do not add questions or explanations.
|
|
PROMPT
|
|
end
|
|
|
|
def temperature
|
|
0.3
|
|
end
|
|
end
|
|
end
|
|
end
|