Spaces:
Runtime error
Runtime error
import openai | |
import uuid | |
class Example: | |
def __init__(self, inp, out): | |
self.input = inp | |
self.output = out | |
self.id = uuid.uuid4().hex | |
def get_input(self): | |
return self.input | |
def get_output(self): | |
return self.output | |
def get_id(self): | |
return self.id | |
def as_dict(self): | |
return { | |
'input': self.get_input(), | |
'ouput': self.get_output(), | |
'id': self.get_id() | |
} | |
class GPT_Model: | |
def __init__(self, | |
engine = 'text-davinci-003', | |
temperature = 0.5, | |
max_tokens = 1024, | |
input_prefix = 'input: ', | |
input_suffix = '\n', | |
output_prefix = 'output: ', | |
output_suffix = '\n\n', | |
append_output_prefix_to_query=False): | |
self.examples = {} | |
self.engine = engine | |
self.temperature = temperature | |
self.max_tokens = max_tokens | |
self.input_prefix = input_prefix | |
self.input_suffix = input_suffix | |
self.output_prefix = output_prefix | |
self.output_suffix = output_suffix | |
self.append_output_prefix_to_query = append_output_prefix_to_query | |
def add_example(self,ex): | |
assert isinstance(ex,Example), "Please create an example object" | |
self.examples[ex.get_id()] = ex | |
def delete_example(self,id): | |
if id in self.examples: | |
del self.examples[id] | |
def get_exmaple(self,id): | |
return self.examples.get(id,'Input id unavailable') | |
def get_all_example(self): | |
return {k:v.as_dict() for k,v in self.examples.items()} | |
def get_prime_text(self): | |
return "".join([self.format_example(ex) for ex in self.examples.values()]) | |
def get_engine(self): | |
return self.engine | |
def get_temperature(self): | |
return self.temperature | |
def get_max_tokens(self): | |
return self.max_tokens | |
def craft_query(self, prompt): | |
q = self.get_prime_text() + self.input_prefix + prompt + self.input_suffix | |
if self.append_output_prefix_to_query: | |
q = q + self.output_prefix | |
return q | |
def submit_request(self, prompt): | |
completions = openai.Completion.create( | |
engine=self.get_engine(), | |
prompt=self.craft_query(prompt), | |
max_tokens=self.get_max_tokens(), | |
n=1, | |
temperature=self.get_temperature(), | |
) | |
message = completions.choices[0].text | |
return message.strip() | |
def format_example(self,ex): | |
return self.input_prefix+ex.get_input()+self.input_suffix+self.output_prefix+ex.get_output()+self.output_suffix | |