45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
import os
|
|
import logging
|
|
from openai import OpenAI
|
|
from openai_compatible_inference_bot import OpenAICompatibleInferenceBot
|
|
from telegram_helper import TelegramHelper
|
|
|
|
class ChatGPTTelegramInferenceBot(OpenAICompatibleInferenceBot):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
|
|
|
|
self._configure_model_and_tokens(
|
|
os.environ.get("OPENAI_SMALL_MODEL", "gpt-3.5-turbo"),
|
|
os.environ.get("OPENAI_SMALL_MODEL_MAX_TOKENS")
|
|
)
|
|
|
|
async def switch_model(self):
|
|
current_small_model = os.environ.get("OPENAI_SMALL_MODEL", "gpt-3.5-turbo")
|
|
current_large_model = os.environ.get("OPENAI_LARGE_MODEL", "gpt-4")
|
|
|
|
if self.model == current_large_model or self.model != current_small_model:
|
|
target_model = current_small_model
|
|
target_max_tokens = os.environ.get("OPENAI_SMALL_MODEL_MAX_TOKENS")
|
|
else:
|
|
target_model = current_large_model
|
|
target_max_tokens = os.environ.get("OPENAI_LARGE_MODEL_MAX_TOKENS")
|
|
|
|
self._configure_model_and_tokens(target_model, target_max_tokens)
|
|
logging.info(f"Switched to model: {self.model}")
|
|
return f"Switched to model: {self.model}"
|
|
|
|
def main():
|
|
if not os.environ.get("OPENAI_API_KEY"):
|
|
logging.error("FATAL: OPENAI_API_KEY environment variable not set.")
|
|
return
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
|
|
bot = ChatGPTTelegramInferenceBot()
|
|
telegram_helper = TelegramHelper(bot)
|
|
telegram_helper.run()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|