amu-bigos-audio-recorder / generate_asr_prompts.py
mj-new
Added generation of prompts alpha
c378394
import openai
import os
openai.api_key = os.getenv("OPENAI_API_KEY")
def prompt_gpt_completion(input):
print("TODO")
# temperature = 0-1 -> controls randomness. 0 -> repetitive, deterministic 1-> random
# max_tokens = up to 2048 (or 4k shared between prompt and completion). One token is around 4 characters in English.
# top_p = controls diversity by nucleus sampling. If set to 0.5 only half of all likelihood-weighted options are considered
# frequency_penalty = penalize using frequently used words in the text generated so far
# presence_penalty = penalize using words already used in generated text
def prompt_gpt_asr_prompts(lang_code, domain, nr_of_prompts):
print(f"Generating {nr_of_prompts} prompts for lang_code: {lang_code} and domain: {domain}")
if(lang_code == "pl"):
prompt = f"""Jesteś lingwistą tworzącym zdania do korpusu nagrań mowy. Zdania, które tworzysz są poprawne językowo, zróżnicowane semantycznie oraz zbilansowane fonetycznie.\n
Twoim zadaniem jest napisanie okreśłonej liczby zdań przez użytkownika.
Zdania dot. określonej domeny/zagadnienia przez użytkownika.
Zdania mają postać pytań i odpowiedzi o wzrastającym poziomie trudności.
Pierwsze zdania dotyczą ogólnych zagadnień, kolejne stopniowo coraz trudniejszych.
Przykład:
Input: Wygeneruj 7 zdań dla domeny "brydż sportowy".
Output:
Q1: Co to jest brydż sportowy?
A1: To logiczna gra karciana, w której bierze udział czterech graczy tworzących dwie rywalizujące ze sobą pary.
Q2: Czy brydż to sport?
A2: Tak, brydż został oficjalnie przyjęty do Międzynarodowego Komitetu Olimpijskiego jako pełnoprawna dyscyplina sportowa.
Q3: Czy warto grać w brydża?
A3: Tak, 20 lat temu prof. Marian Cleeves Diamond wykazała, że gra w brydża zmniejsza ryzyko zachorowania na chorobę Alzheimera aż o 75 proc. Inne badania naukowe wykazały, że gra w brydża przynosi wymierne korzyści dla sprawności umysłowej i zdrowia mózgu u seniorów.
Q4: Co decyduje o sukcesie w brydżu?
A4: Umiejętności oraz sprawność umysłowa, a nie przypadek czy psychologiczne rozegranie przeciwnika jak w pokerze.
Q5: Jakie znane osoby grają w brydża?
A5: Bill Gates, Warren Buffett, Witold Bielecki, Renata Dancewicz, Zbigniew Boniek, Katarzyna Grochola
Q6: Jaki jest cel gry?
A6: Wygranie jak największej liczby lew.
Q7: Co to jest lewa?
A7: To cztery karty, umieszczone na stoliku zgodnie z ruchem wskazówek zegara. Lewę wygrywa gracz, którego karta miała najwyższą wartość. Gracz, który zdobył lewę zaczyna następna turę, czyli rzuca kartę jako pierwszy.
Wygeneruj {nr_of_prompts} zdań dla \"{domain}\" wedle wskazanego wzorca"""
elif(lang_code == "en"):
prompt = ""
else:
print("unknown language!")
return
response = openai.Completion.create(
model="text-davinci-003",
prompt=prompt,
temperature=0.3,
max_tokens=2048,
top_p=1,
frequency_penalty=0.5,
presence_penalty=0,
stop=["You:"]
)
return(response)
def save_data_to_txt(data, file_path):
with open(file_path, 'w') as file:
file.write(data)
print(f"The data has been saved to {file_path} successfully.")
lang_code = "pl"
domain = "nauka gry w brydża sportowego dla początkujących"
nr_of_prompts = 5
response=prompt_gpt_asr_prompts(lang_code, domain, nr_of_prompts)
prompts = response.choices[0].text
# Example usage
save_data_to_txt(prompts, 'prompts.txt')