From 00eba1b1509a821d266c8fc7742739bc1a9ab97d Mon Sep 17 00:00:00 2001 From: Russell Ballestrini Date: Sun, 23 Feb 2025 17:11:00 -0500 Subject: [PATCH] gemini is actually tested and working modified: app.py new file: models.py --- app.py | 145 +++++++----------------------------------------------- models.py | 115 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 127 deletions(-) create mode 100644 models.py diff --git a/app.py b/app.py index 6ccb49e..0e10f18 100644 --- a/app.py +++ b/app.py @@ -14,7 +14,6 @@ import os import random import boto3 -import tiktoken import together from flask import ( Flask, @@ -33,13 +32,19 @@ from sqlalchemy.exc import InvalidRequestError from groq import Groq from mistralai import Mistral +from models import db, Room, UserSession, Message, ActivityState + app = Flask(__name__) app.config["SECRET_KEY"] = "your_secret_key" app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///chat.db" app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False -db = SQLAlchemy(app) +db.init_app(app) + +from flask_migrate import Migrate + +migrate = Migrate(app, db) # socketio = SocketIO(app, async_mode="eventlet") socketio = SocketIO(app, async_mode="gevent") @@ -54,18 +59,18 @@ ENDPOINTS = [ # vLLM clusters { "name": "vllm1", - "base_url": os.environ.get("VLLM_ENDPOINT_1"), - "api_key": os.environ.get("VLLM_ENDPOINT_API_KEY_1", "not-needed"), + "base_url": os.environ.get("MODEL_ENDPOINT_1"), + "api_key": os.environ.get("MODEL_API_KEY_1", "not-needed"), }, { "name": "vllm2", - "base_url": os.environ.get("VLLM_ENDPOINT_2"), - "api_key": os.environ.get("VLLM_ENDPOINT_API_KEY_2", "not-needed"), + "base_url": os.environ.get("MODEL_ENDPOINT_2"), + "api_key": os.environ.get("MODEL_API_KEY_1", "not-needed"), }, { "name": "vllm3", - "base_url": os.environ.get("VLLM_ENDPOINT_3"), - "api_key": os.environ.get("VLLM_ENDPOINT_API_KEY_3", "not-needed"), + "base_url": os.environ.get("MODEL_ENDPOINT_3"), + "api_key": os.environ.get("MODEL_API_KEY_1", "not-needed"), }, # Ollama { @@ -192,6 +197,8 @@ system_users = [ "open-mistral-nemo", "llama2-70b-4096", "llama3-70b-8192", + "models/gemini-1.5-pro-latest", + "models/gemini-2.0-flash", "gemma-7b-it", "grok-beta", "openchat/openchat-3.5-1210", @@ -298,117 +305,6 @@ Feel free to explore and experiment with different commands and models. Enjoy yo """ -class Room(db.Model): - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(128), nullable=False, unique=True) - title = db.Column(db.String(128), nullable=True) - active_users = db.Column(db.Text, default="") # Store as a comma-separated string - inactive_users = db.Column(db.Text, default="") # Store as a comma-separated string - - def add_user(self, username): - active_users = set(self.active_users.split(",")) if self.active_users else set() - inactive_users = ( - set(self.inactive_users.split(",")) if self.inactive_users else set() - ) - - # Move from inactive to active if necessary - if username in inactive_users: - inactive_users.discard(username) - - active_users.add(username) - self.active_users = ",".join(sorted(active_users)) - self.inactive_users = ",".join(sorted(inactive_users)) - - def remove_user(self, username): - active_users = set(self.active_users.split(",")) if self.active_users else set() - inactive_users = ( - set(self.inactive_users.split(",")) if self.inactive_users else set() - ) - - if username in active_users: - active_users.discard(username) - inactive_users.add(username) # Move to inactive users - - self.active_users = ",".join(sorted(active_users)) - self.inactive_users = ",".join(sorted(inactive_users)) - - def get_active_users(self): - return self.active_users.split(",") if self.active_users else [] - - def get_inactive_users(self): - return self.inactive_users.split(",") if self.inactive_users else [] - - -class UserSession(db.Model): - id = db.Column(db.Integer, primary_key=True) - session_id = db.Column(db.String(128), unique=True, nullable=False) - username = db.Column(db.String(128)) - room_name = db.Column(db.String(128)) - room_id = db.Column(db.Integer) - - -class Message(db.Model): - id = db.Column(db.Integer, primary_key=True) - username = db.Column(db.String(128), nullable=False) - content = db.Column(db.String(1024), nullable=False) - token_count = db.Column(db.Integer) - room_id = db.Column(db.Integer, db.ForeignKey("room.id"), nullable=False) - - def __init__(self, username, content, room_id): - self.username = username - self.content = content - self.room_id = room_id - self.count_tokens() - - def count_tokens(self): - if self.token_count is None: - if self.is_base64_image(): - self.token_count = 0 - else: - encoding = tiktoken.encoding_for_model("gpt-4") - self.token_count = len(encoding.encode(self.content)) - return self.token_count - - def is_base64_image(self): - return ( - '