import json import http.client from openai import AzureOpenAI class ContentFormatter: @staticmethod def chat_completions(text, settings_params): message = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": text} ] data = {"messages": message, **settings_params} return json.dumps(data) class AzureAgent: def __init__(self, api_key, azure_uri, deployment_name): self.azure_uri = azure_uri self.headers = { 'Authorization': f"Bearer {api_key}", 'Content-Type': 'application/json' } self.deployment_name = deployment_name self.chat_formatter = ContentFormatter def invoke(self, text, **kwargs): body = self.chat_formatter.chat_completions(text, {**kwargs}) conn = http.client.HTTPSConnection(self.azure_uri) conn.request("POST", f'/v1/chat/completions', body=body, headers=self.headers) response = conn.getresponse() data = response.read() conn.close() decoded_data = data.decode("utf-8") parsed_data = json.loads(decoded_data) content = parsed_data["choices"][0]["message"]["content"] return content class GPTAgent: def __init__(self, api_key, azure_endpoint, deployment_name, api_version): self.client = AzureOpenAI( api_key=api_key, api_version=api_version, azure_endpoint=azure_endpoint ) self.deployment_name = deployment_name def invoke(self, text, **kwargs): response = self.client.chat.completions.create( model=self.deployment_name, messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": text} ], **kwargs ) return response.choices[0].message.content