petrsovadina commited on
Commit
29b5df0
1 Parent(s): 9224c4e

Update openai_fake_data_generator.py

Browse files
Files changed (1) hide show
  1. openai_fake_data_generator.py +31 -29
openai_fake_data_generator.py CHANGED
@@ -12,7 +12,6 @@ OpenAIParams = namedtuple(
12
  ["openai_key", "model", "api_base", "deployment_id", "api_version", "api_type"],
13
  )
14
 
15
-
16
  def call_completion_model(
17
  prompt: str,
18
  openai_params: OpenAIParams,
@@ -34,42 +33,45 @@ def call_completion_model(
34
  else:
35
  client = OpenAI(api_key=openai_params.openai_key)
36
 
37
- response = client.completions.create(
38
- model=openai_params.model,
39
- prompt=prompt,
40
- max_tokens=max_tokens,
41
- )
42
-
43
- return response.choices[0].text.strip()
44
-
 
 
45
 
46
  def create_prompt(anonymized_text: str) -> str:
47
  """
48
- Create the prompt with instructions to GPT-3.
49
 
50
- :param anonymized_text: Text with placeholders instead of PII values, e.g. My name is <PERSON>.
51
  """
52
 
53
  prompt = f"""
54
- Your role is to create synthetic text based on de-identified text with placeholders instead of Personally Identifiable Information (PII).
55
- Replace the placeholders (e.g. ,<PERSON>, {{DATE}}, {{ip_address}}) with fake values.
56
 
57
- Instructions:
58
 
59
- a. Use completely random numbers, so every digit is drawn between 0 and 9.
60
- b. Use realistic names that come from diverse genders, ethnicities and countries.
61
- c. If there are no placeholders, return the text as is.
62
- d. Keep the formatting as close to the original as possible.
63
- e. If PII exists in the input, replace it with fake values in the output.
64
- f. Remove whitespace before and after the generated text
 
65
 
66
- input: [[TEXT STARTS]] How do I change the limit on my credit card {{credit_card_number}}?[[TEXT ENDS]]
67
- output: How do I change the limit on my credit card 2539 3519 2345 1555?
68
- input: [[TEXT STARTS]]<PERSON> was the chief science officer at <ORGANIZATION>.[[TEXT ENDS]]
69
- output: Katherine Buckjov was the chief science officer at NASA.
70
- input: [[TEXT STARTS]]Cameroon lives in <LOCATION>.[[TEXT ENDS]]
71
- output: Vladimir lives in Moscow.
72
 
73
- input: [[TEXT STARTS]]{anonymized_text}[[TEXT ENDS]]
74
- output:"""
75
- return prompt
 
12
  ["openai_key", "model", "api_base", "deployment_id", "api_version", "api_type"],
13
  )
14
 
 
15
  def call_completion_model(
16
  prompt: str,
17
  openai_params: OpenAIParams,
 
33
  else:
34
  client = OpenAI(api_key=openai_params.openai_key)
35
 
36
+ try:
37
+ response = client.completions.create(
38
+ model=openai_params.model,
39
+ prompt=prompt,
40
+ max_tokens=max_tokens,
41
+ )
42
+ return response.choices[0].text.strip()
43
+ except Exception as e:
44
+ logger.error(f"Chyba při volání OpenAI API: {str(e)}")
45
+ return "Došlo k chybě při generování syntetických dat."
46
 
47
  def create_prompt(anonymized_text: str) -> str:
48
  """
49
+ Create the prompt with instructions to GPT-3 for generating Czech synthetic text.
50
 
51
+ :param anonymized_text: Text with placeholders instead of PII values, e.g. My name is <OSOBA>.
52
  """
53
 
54
  prompt = f"""
55
+ Vaším úkolem je vytvořit syntetický text na základě de-identifikovaného textu s zástupnými symboly místo osobních údajů (PII).
56
+ Nahraďte zástupné symboly (např. <OSOBA>, {{DATUM}}, {{IP_ADRESA}}) falešnými hodnotami v českém kontextu.
57
 
58
+ Pokyny:
59
 
60
+ a. Používejte zcela náhodná čísla, každá číslice je náhodně vybrána mezi 0 a 9.
61
+ b. Používejte realistická česká jména, která představují různá pohlaví a etnické skupiny.
62
+ c. Pokud v textu nejsou žádné zástupné symboly, vraťte text beze změny.
63
+ d. Zachovejte formátování co nejblíže původnímu textu.
64
+ e. Pokud se v textu vyskytují osobní údaje, nahraďte je falešnými hodnotami.
65
+ f. Odstraňte mezery před a za vygenerovaným textem.
66
+ g. Používejte české formáty pro data, adresy, telefonní čísla atd.
67
 
68
+ vstup: [[TEXT ZAČÍNÁ]] Jak mohu změnit limit na své kreditní kartě {{ČÍSLO_KARTY}}?[[TEXT KONČÍ]]
69
+ výstup: Jak mohu změnit limit na své kreditní kartě 2539 3519 2345 1555?
70
+ vstup: [[TEXT ZAČÍNÁ]]<OSOBA> byl hlavním vědeckým pracovníkem v <ORGANIZACE>.[[TEXT KONČÍ]]
71
+ výstup: Ing. Jana Nováková, CSc. byla hlavním vědeckým pracovníkem v Akademii věd ČR.
72
+ vstup: [[TEXT ZAČÍNÁ]]<OSOBA> žije na adrese <ADRESA>.[[TEXT KONČÍ]]
73
+ výstup: Petr Svoboda žije na adrese Dlouhá 254/14, 110 00 Praha 1.
74
 
75
+ vstup: [[TEXT ZAČÍNÁ]]{anonymized_text}[[TEXT KONČÍ]]
76
+ výstup:"""
77
+ return prompt