File size: 3,642 Bytes
939326f
cfd6a01
5e41822
b0129d8
5e41822
 
939326f
5e41822
f40d377
825da3a
fb35c25
 
 
 
 
 
 
 
 
 
 
 
 
 
c29b80f
fb35c25
d7e5216
16cf8d1
5710b40
 
 
 
 
d7e5216
 
91698af
 
 
 
 
 
efdb6c2
 
615d2d6
efdb6c2
ae45b37
efdb6c2
 
 
 
 
 
 
91698af
efdb6c2
 
 
 
 
 
 
 
f40d377
c6afcba
ce7ed46
f40d377
 
91eaca5
f40d377
825da3a
 
 
acab611
 
5e9b63d
c037b23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import os
import gradio as gr
from openai import OpenAI

# key from project Sagenschatz Luxemburg
client = OpenAI(
  api_key=os.getenv("OPENAI_API_KEY")
)

myTitle = "✏️ Schreif mer e Gedicht ! 🇱🇺"
myDescription = """Beschreif an e puer Wierder wéi ee Gedicht den OpenAI-Modell GPT-4o-2024-08-06 (Kënschtlech Intelligenz) Dir schreiwe soll. Probéier richteg Lëtzebuergesch ze schreiwe fir d'Text-Generatioun ze optiméieren. Du kanns Dir vum [Spellchecker](https://spellchecker.lu) oder [LOD](https://lod.lu) dobäi hëllefe loossen. Respektéier d'Reegele vun OpenAI a vermeit Theme wéi Haass, Gewalt, Mobbing asw, fir dass meng Demo-App net vun OpenAI blockéiert gëtt.     

Verrechnung vun der Benotzung vum Modell GPT-4o baséiert op Tokens. En Token ass en Deel vun engem Wuert. 1000 Token entsprieche beim Gedicht ongeféier 315 Wierder. Beim Modell GPT-4o-2024-08-06 kascht eng Millioun Token 2.50 Dollar als Input an 15 Dollar als Output. Am Duerchschnëtt huet e Gedicht 330 Token an de Präis ass 6 Cents.    

Ech bezuelen d'Käschte vun OpenAI aus menger eegener Täsch. Fir net ze ruinéieren hunn ech e Plaffong fir d'Rechnung gesat.
Ass de Plaffong iwwerschratt erfollegt eng Feelermeldung beim Benotze vun der App. Ech appelléieren un d'Fairness vun all Benotzer beim Dichten net ze iwwerdreiwe fir dass jidder Interessent un der Lëtzebuerger Sprooch et kann ausprobéieren.   

Ech si mer bewosst dass lëtzebuergesch Schreifweis vum ChatGPT-4o nach vill ze wënsche léisst. Ech probéieren ob een duerch Training mat Lëtzebuerger Poesie d'Performancë vun dëser App ka verbesseren.    

Kommentaren a Likes um HuggingFace si wëllkomm.    

Vill Spaass beim Dichten. 
"""

myArticle = "E klenge [Réckbléck](https://www.rtl.lu/kultur/news/a/1982114.html) op den Ufank vun der App  am November 2022."

myExamples = [
    "Eng Blumm där hire gréisste Wonsch ass ze fléien, lëschteg, optimistesch",
    "Zwee kleng Huesen déi Angscht vun der Däischtert hunn, spannend, realistesch",
    "Renert oder de Fuuss am Frack an a Maansgréisst",
    "Nondikass ! D'Welt ass op der Kopp",    
    "Melusina am Pafendall",
    "E Fluessfénkelchen am Gaart"
]

INSTRUCTIONS = """You are a writer creating poems in Luxembourgish. 
In the prompt the user defines a story, ideas and emotions. 
Your role is to embed these elements into a sonnet, a fixed verse poetic form, consisting of fourteen lines adhering to a set rhyming scheme.
Even when a users submit prompts in another language, you provide your sonnet in Luxembourgish.
"""

# Function to get a response from GPT-4
def schreiw_gedicht(prompt):
    GPT_MODEL = "gpt-4o-2024-08-06"
    MESSAGES =[
       {"role": "system", "content": INSTRUCTIONS},
       {"role": "user", "content": prompt},
    ]    
    try:
        # Call OpenAI API
        response = client.chat.completions.create(
            model = GPT_MODEL,
            messages = MESSAGES,
            max_tokens = 500,  # Adjust max tokens as needed
            temperature = 0.7,  # Adjust temperature for creativity
        )
        # Extract the assistant's response
        gedicht = response.choices[0].message.content
        return gedicht
    
    except Exception as e:
        return f"Error: {str(e)}"

myInput = gr.Textbox(label='Geschicht, Idee, Gefill', value='En Hond deen sech an en Toaster verléift huet')
myOutput = gr.Textbox(lines=16, label='Gedicht')

demo = gr.Interface(
    fn=schreiw_gedicht,
    inputs=myInput,
    outputs=myOutput,
    title=myTitle,
    description=myDescription,
    article=myArticle,
    examples=myExamples
)
demo.launch()