CoolFace
Apppublic

joaomorossini/AI_Patent_Classification

sourceHugging Faceupdated 1y agoView on Hugging Face
2likes
llm.py117 linesDownload Raw Back to root
1import openai2 3 4class MessageChatCompletion:5    def __init__(self,6                 model: str = 'gpt-5-mini',7                 message: str = '',8                 api_key: str = '',9                 temperature: float = 0.10,10                 top_p: float = 0.95,11                 n: int = 1,12                 stream: bool = False,13                 stop: str = "\n",14                 max_tokens: int = 4096,15                 presence_penalty: float = 0.0,16                 frequency_penalty: float = 0.0,17                 logit_bias: int = None,18                 user: str = ''):19 20        self.api_key = api_key21        openai.api_key = self.api_key22 23        if model in ["gpt-4o","gpt-4o-mini","gpt-5-mini","gpt-5"]:24            self.endpoint = "https://api.openai.com/v1/chat/completions"25        else:26            self.endpoint = "https://api.openai.com/v1/completions"27 28        self.headers = {29            "Content-Type": "application/json",30            "Authorization": f"Bearer {self.api_key}",31        }32 33        self.prompt = {34            "model": model,35            "messages": [],36            "temperature": temperature,37            "top_p": top_p,38            "n": n,39            "stream": stream,40            "stop": stop,41            "presence_penalty": presence_penalty,42            "frequency_penalty": frequency_penalty43        }44 45        if max_tokens is not None:46            self.prompt["max_tokens"] = max_tokens47 48        if logit_bias is not None:49            self.prompt["logit_bias"] = logit_bias50 51        if user != '':52            self.prompt["user"] = user53 54        if message != '':55            self.new_user_message(content=message)56 57        self.response = ''58 59        self.error = False60 61    def new_message(self, role: str = 'user', content: str = '', name: str = ''):62        new_message = {"role": role, "content": f"{content}"}63        if name != '':64            new_message['name'] = name65 66        self.prompt['messages'].append(new_message)67 68    def new_user_message(self, content: str = '', name: str = ''):69        self.new_message(role='user', content=content, name=name)70 71    def new_system_message(self, content: str = '', name: str = ''):72        self.new_message(role='system', content=content, name=name)73 74    def new_assistant_message(self, content: str = '', name: str = ''):75        self.new_message(role='assistant', content=content, name=name)76 77    def get_last_message(self):78        return self.prompt['messages'][-1]['content']79 80    def send_message(self):81 82        try:83            self.error = False84 85            response = openai.chat.completions.create(86                model=self.prompt['model'],87                messages=self.prompt['messages'],88                frequency_penalty=self.prompt['frequency_penalty'],89                temperature=self.prompt['temperature'],90                max_tokens=self.prompt['max_tokens'],91                top_p=self.prompt['top_p'],92                presence_penalty=self.prompt['presence_penalty'],93                stream=self.prompt['stream']94            )95 96            full_response = response.choices[0].message.content97 98            # if stream = True99            # full_response = ""100            # for chunk in response:101            #     chunk_message = chunk.choices[0].delta.content102            #     if chunk_message != '':103            #         full_response += chunk_message104 105            self.new_system_message(content=full_response)106 107            return self.response108 109        except Exception as e:110            self.error = True111 112            if self.api_key == '' or self.api_key is None:113                self.new_system_message(content="API key is missing")114            else:115                self.new_system_message(content=f"Unable to generate ChatCompletion response\nException: {e}")116            return e117