antedotee's picture
Upload 7 files
4bd79e1 verified
Raw
History Blame Contribute Delete
2.25 kB
import json
from enums import Model
from prompts import PROMPT
def create_openai_chat_completion(openai_client, messages, model=Model.GPT_4.value, temperature=0, stream=False, **kwargs):
additional_request_params = {}
response_format = kwargs.get('response_format')
if response_format:
additional_request_params['response_format'] = response_format
response = openai_client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
stream=stream,
**additional_request_params
)
if stream:
streamed_response = ""
for chunk in response:
try:
message = chunk.choices[0].delta.content or ""
streamed_response += message
except:
continue
yield streamed_response
return
data = response.choices[0].message.content
yield {
'success': True,
'data': data,
'response': response.model_dump()
}
def get_user_message_category(openai_client, messages):
user_message = messages[-1]['content']
message_history = messages[:-1]
prompt = PROMPT['MESSAGE_CATEGORY_DETECTION'].format(user_message=user_message)
response = create_openai_chat_completion(
openai_client,
message_history + [{'role': 'system', 'content': prompt}],
model=Model.GPT_4_PREVIEW.value,
temperature=0,
stream=False,
response_format={'type': 'json_object'}
)
response = next(response)
return json.loads(response['data'])['category']
def get_answer_bucket(openai_client, messages):
user_message = messages[-1]['content']
message_history = messages[:-1]
prompt = PROMPT['ANSWER_BUCKET'].format(user_message=user_message)
response = create_openai_chat_completion(
openai_client,
message_history + [{'role': 'system', 'content': prompt}],
model=Model.GPT_4_PREVIEW.value,
temperature=0,
stream=False,
response_format={'type': 'json_object'}
)
response = next(response)
return json.loads(response['data'])['bucket']