|
import os,openai,json,time |
|
|
|
def check_api_key_validity(api_key): |
|
try: |
|
openai.api_key = api_key |
|
print("OpenAI API key is valid") |
|
except openai.OpenAIError as e: |
|
print("Invalid OpenAI API key") |
|
exit() |
|
|
|
|
|
|
|
def call_AI_chatGPT(prompt): |
|
model = "gpt-3.5-turbo" |
|
|
|
generated=False |
|
while(not generated): |
|
try: |
|
time.sleep(2) |
|
response = openai.ChatCompletion.create( |
|
model=model, |
|
messages =[ |
|
{'role':'system','content':'You are an Argentine assistant. When given an instruction, answer the instruction in spanish and write the response of the instruction and nothing else. Use Argentine slang like boludo, che, pelotudo, gil, laburo, forro, sacarla barata, mala leche, al pedo, gil de cuarta, quilombo, estas en pedo, ya fue, etc. Do not always start with che or boludo.'}, |
|
{'role':'user','content':prompt} |
|
], |
|
temperature=1.0, |
|
max_tokens=1024,request_timeout=40) |
|
generated=True |
|
except Exception as e: |
|
print("%s: Trying again..." % str(e)) |
|
pass |
|
return response.choices[0]['message']['content'] |
|
|
|
|
|
api_key = os.environ.get("OPENAI_API_KEY") |
|
if (api_key is None) or (len(api_key)==0): |
|
try: |
|
api_key=open('api-key.txt','rb').read().strip().decode() |
|
except: |
|
print("Couldn't load OpenAI Api key, please load it in OPENAI_API_KEY env variable, or alternatively in 'api-key.txt' file.") |
|
exit(0) |
|
else: print('Loaded api key from environment variable.') |
|
|
|
check_api_key_validity(api_key) |
|
|
|
|
|
PROMPT_DICT = { |
|
"prompt_input": ( |
|
"You are an Argentine assistant. When given an instruction, answer the instruction in spanish and write the response of the instruction and nothing else. Use Argentine slang like boludo, che, pelotudo, gil, laburo, forro, mala leche, al pedo, gil de cuarta, quilombo, estas en pedo, ya fue. Do not always start with Che or boludo. Answer in a colloquial manner. Below is an instruction that describes the task, paired with an input that provides further context, and the output response. " |
|
"Rewrite the response that appropriately completes the request, taking in acount that you are Argentine, and respond as such.\n\n" |
|
"### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response: \n{output}\n\n### Rewrite: \n" |
|
), |
|
"prompt_no_input": ( |
|
"You are an Argentine assistant. When given an instruction, answer the instruction in spanish and write te response to the instruction and nothing else. Use Argentine slang like boludo, che, pelotudo, gil, laburo, forro, mala leche, al pedo, gil de cuarta, quilombo, estas en pedo, ya fue, etc. Do not overuse slang. Below is an instruction that describes a task, and the output response. " |
|
"Rewrite the response that appropriately completes the request, taking in acount that you are Argentine, and respond as such, but do not always start with che or boludo.\n\n" |
|
"### Instruction:\n{instruction}\n\n### Input:\n{input}\n\n### Response: \n{output}\n\n### Rewrite: \n" |
|
), |
|
} |
|
|
|
originalDataFile="alpaca_data_cleaned_spanish.json" |
|
|
|
f=open(originalDataFile,"r") |
|
data=json.load(f) |
|
f.close() |
|
print("Loaded %s data file with %d entries." % (originalDataFile,len(data))) |
|
|
|
prompt_input, prompt_no_input = PROMPT_DICT["prompt_input"], PROMPT_DICT["prompt_no_input"] |
|
index=0 |
|
for i in data: |
|
if len(i['input'])==0: |
|
prompt=prompt_no_input.format_map(i) |
|
else: |
|
prompt=prompt_input.format_map(i) |
|
i["output"]=call_AI_chatGPT(prompt).strip() |
|
js = json.dumps(i) |
|
print("Index: %d/%d: %s" % (index,len(data),js)) |
|
index+=1 |
|
e=open("dataset-alpaca-Arg.json","a") |
|
e.write("%s,\n" % js) |
|
e.close() |
|
|
|
|