in src/jobs/util/language_model.py [0:0]
def generic_query(self, messages: List[MessageSequenceItem], retry_count=0, max_tokens=None, json_only=False) -> str:
"""
Do a basic openai query
:param text: Prompt
:return: Response, or empty string if there is a failure
"""
retry_allowance = retry_count
response_format = {"type": "json_object"} if json_only else None
while retry_allowance >= 0:
retry_allowance -= 1
try:
messages = [dict(m) for m in messages]
url_response = self.client.chat.completions.create(model=self._engine,
temperature=self._temperature,
messages=messages,
max_tokens=max_tokens,
response_format=response_format)
response = url_response.choices[0].message.content
stats_log(
{"message": messages[0]["content"][0:50], "response": response})
if self._logger is not None:
self._logger.debug(f"OpenAI Response {response}")
return response
except Exception as ex:
if self._logger is not None:
self._logger.error(f"Error calling openai {ex}")
if retry_count == 0:
raise(ex)
if self._retry_delay_sec > 0:
time.sleep(self._retry_delay_sec)
self._logger.error("Exceeded retry count. Returning empty string result")
return ""