| from openai import OpenAI | |
| from openai import APIConnectionError, APITimeoutError, AuthenticationError, RateLimitError | |
| from ontochat.config import DEFAULT_MODEL, DEFAULT_SEED, DEFAULT_TEMPERATURE | |
| def chat_completion(api_key, messages): | |
| client = OpenAI(api_key=api_key) | |
| try: | |
| response = client.chat.completions.create( | |
| model=DEFAULT_MODEL, | |
| messages=messages, | |
| seed=DEFAULT_SEED, | |
| temperature=DEFAULT_TEMPERATURE, | |
| ) | |
| except APITimeoutError as e: | |
| return f"Request timed out. Retry your request after a brief wait. Error information: {e}" | |
| except APIConnectionError as e: | |
| return f"Issue connecting to our services. Check your network settings, proxy configuration, " \ | |
| f"SSL certificates, or firewall rules. Error information: {e}" | |
| except AuthenticationError as e: | |
| return f"Your API key or token was invalid, expired, or revoked. Error information: {e}" | |
| except RateLimitError as e: | |
| return f"You have hit your assigned rate limit. Error information: {e}" | |
| return response.choices[0].message.content | |
| def build_messages(history): | |
| """ | |
| convert gardio.Chatbot history to OpenAI client messages | |
| :param history: | |
| :return: | |
| """ | |
| messages = list() | |
| for item in history: | |
| messages.append({"role": "user", "content": item[0]}) | |
| messages.append({"role": "system", "content": item[1]}) | |
| return messages[1:] | |