diff --git a/backend/open_webui/migrations/versions/e0cd6c95cb25_add_time_saved_in_seconds_column_to_.py b/backend/open_webui/migrations/versions/e0cd6c95cb25_add_time_saved_in_seconds_column_to_.py new file mode 100644 index 000000000..a8c3e8171 --- /dev/null +++ b/backend/open_webui/migrations/versions/e0cd6c95cb25_add_time_saved_in_seconds_column_to_.py @@ -0,0 +1,38 @@ +"""Add time_saved_in_seconds column to completion table + +Revision ID: e0cd6c95cb25 +Revises: 8b04db1441b0 +Create Date: 2025-02-25 08:51:45.692183 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import open_webui.internal.db +from sqlalchemy.engine.reflection import Inspector + + +# revision identifiers, used by Alembic. +revision: str = 'e0cd6c95cb25' +down_revision: Union[str, None] = '8b04db1441b0' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + +def column_exists(table, column): + conn = op.get_bind() + inspector = Inspector.from_engine(conn) + columns = inspector.get_columns(table) + return any(c["name"] == column for c in columns) + +def upgrade() -> None: + # Add time_saved_in_seconds column if it doesn't exist + if not column_exists("completion", "time_saved_in_seconds"): + op.add_column('completion', sa.Column('time_saved_in_seconds', sa.Float (), nullable=True)) + + +def downgrade() -> None: + with op.batch_alter_table('completion', schema=None) as batch_op: + if column_exists("completion", "time_saved_in_seconds"): + batch_op.drop_column('time_saved_in_seconds') + diff --git a/litellm-config.yaml b/litellm-config.yaml index 81330f5ab..c0ba33e3e 100644 --- a/litellm-config.yaml +++ b/litellm-config.yaml @@ -15,7 +15,6 @@ model_list: arena_elo: 1287 knowledge_cutoff: "October 2023" context_window: 128000 - - model_name: "GPT 3.5 Turbo" litellm_params: model: "azure/gpt-35-turbo" @@ -27,5 +26,69 @@ model_list: arena_elo: 1116 knowledge_cutoff: "September 2021" context_window: 16000 + - model_name: 'Claude 3 Haiku' + litellm_params: + model: 'vertex_ai/claude-3-haiku@20240307' + vertex_project: 'testllm-94944' + vertex_location: 'europe-west4' + model_info: + description: 'Lightning-fast responses for simple queries.' + arena_elo: 1178 + knowledge_cutoff: 'August 2023' + context_window: 200_000 + - model_name: 'Claude 3.5 Sonnet' + litellm_params: + model: 'vertex_ai/claude-3-5-sonnet@20240620' + vertex_project: 'testllm-94944' + vertex_location: 'europe-west1' + model_info: + description: "Anthropic's latest model." + arena_elo: 1271 + knowledge_cutoff: 'August 2023' + context_window: 200_000 + - model_name: 'Gemini 1.5 Pro' + litellm_params: + model: 'gemini-1.5-pro' + vertex_project: 'testllm-94944' + vertex_location: 'europe-west3' + model_info: + description: "Google's leading model with a very large context window." + arena_elo: 1265 + knowledge_cutoff: 'November 2023' + context_window: 2_000_000 + - model_name: 'Gemini 1.5 Flash' + litellm_params: + model: 'gemini-1.5-flash-001' + vertex_project: 'testllm-94944' + vertex_location: 'europe-west3' + model_info: + description: 'Optimized for speed and efficiency.' + arena_elo: 1231 + knowledge_cutoff: 'November 2023' + context_window: 1_000_000 + - model_name: 'Mistral Medium' + litellm_params: + model: mistral/mistral-medium + model_info: + description: 'Good balance between performance and capacity.' + arena_elo: 1148 + knowledge_cutoff: 'Unknown' + context_window: 32_000 + - model_name: 'Mistral Large' + litellm_params: + model: mistral/mistral-large-latest + model_info: + description: 'Ideal for specialized and complex text and code generation.' + arena_elo: 1156 + knowledge_cutoff: 'Unknown' + context_window: 32_000 + - model_name: 'Perplexity' + litellm_params: + model: 'perplexity/llama-3-sonar-large-32k-online' + model_info: + max_input_tokens: '32000' + input_cost_per_token: 0.000001 + output_cost_per_token: 0.000001 + description: 'Optimal for search queries and research.' general_settings: {}