commit bb3b92972d47c9b88d11d0db935a54ac600faaef Author: pstruebi Date: Sat Dec 14 11:57:28 2024 +0100 Add a minimal example for an api based llm translator diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e99e36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc \ No newline at end of file diff --git a/llm_translator.py b/llm_translator.py new file mode 100644 index 0000000..48ad039 --- /dev/null +++ b/llm_translator.py @@ -0,0 +1,44 @@ +import requests +import json + +from translator import test_content +from translator import credentials +from translator import syspromts + +def translate(model, query): + url = f'{credentials.BASE_URL}/api/chat/completions' + headers = { + 'Authorization': f'Bearer {credentials.TOKEN}', + } + payload = { + 'model': model, + 'messages': [{'role': 'user', 'content': query}], + } + response = requests.post(url, headers=headers, json=payload) + return response.json() + + +def translator_de_en(query): + MODEL = 'llama3.2:3b-instruct-q4_0' + #MODEL = 'llama3.1:8b-instruct-q4_0' + + return translate(MODEL, syspromts.TRANSLATOR_DE_EN + query) + +def translator_de_fr(query): + MODEL = 'llama3.1:8b-instruct-q4_0' + return translate(MODEL, syspromts.TRANSLATOR_DE_FR + query) + + + + + +if __name__ == "__main__": + response = translator_de_en(test_content.TESTSENTENCE_DE_BROKER) + print(json.dumps(response, indent=2)) + message = response['choices'][0]['message']['content'] + print(message) + + response = translator_de_fr(test_content.TESTSENTENCE_DE_BROKER) + message = response['choices'][0]['message']['content'] + print(message) + diff --git a/translator/credentials.py b/translator/credentials.py new file mode 100644 index 0000000..4dbb3b7 --- /dev/null +++ b/translator/credentials.py @@ -0,0 +1,2 @@ +BASE_URL='https://ollama.hinterwaldner.duckdns.org' +TOKEN = 'sk-17124cb84df14cc6ab2d9e17d0724d13' \ No newline at end of file diff --git a/translator/syspromts.py b/translator/syspromts.py new file mode 100644 index 0000000..f266745 --- /dev/null +++ b/translator/syspromts.py @@ -0,0 +1,2 @@ +TRANSLATOR_DE_EN = 'You are a translator. Translate the following sentence from German to English. Only respond with the translated sentence:\n' +TRANSLATOR_DE_FR = 'Vous êtes un traducteur. Traduisez la phrase suivante de l\'allemand vers le français. Répondez uniquement par la traduction :\n' diff --git a/translator/test_content.py b/translator/test_content.py new file mode 100644 index 0000000..d9ae92f --- /dev/null +++ b/translator/test_content.py @@ -0,0 +1 @@ +TESTSENTENCE_DE_BROKER = 'Ein Broker (oder Makler) ist eine Person oder ein Unternehmen, das sich zwischen dem Kauf- und Verkaufsberechtigten einer Wirtschaftsgüter (z.B. Aktien, Optionen, Derivate, Währungen, Rohstoffe usw.) stellt und als Vermittler fungiert. Sein Hauptziel ist es, Transaktionen zu erleichtern und Geld für sich selbst zu verdienen.' \ No newline at end of file