diff --git a/pages/7_🤖_Models.py b/pages/7_🤖_Models.py index f04f3f8..5ec35a6 100644 --- a/pages/7_🤖_Models.py +++ b/pages/7_🤖_Models.py @@ -11,7 +11,12 @@ from api.models_service import models_service from pages.components.model_selector import model_selector from pages.stream_app.utils import setup_page -setup_page("🤖 Models", only_check_mandatory_models=False, stop_on_model_error=False, skip_model_check=True) +setup_page( + "🤖 Models", + only_check_mandatory_models=False, + stop_on_model_error=False, + skip_model_check=True, +) st.title("🤖 Models") @@ -32,20 +37,16 @@ def check_available_providers(): provider_status["openai"] = os.environ.get("OPENAI_API_KEY") is not None provider_status["groq"] = os.environ.get("GROQ_API_KEY") is not None provider_status["xai"] = os.environ.get("XAI_API_KEY") is not None - provider_status["vertexai"] = ( + provider_status["vertex"] = ( os.environ.get("VERTEX_PROJECT") is not None and os.environ.get("VERTEX_LOCATION") is not None and os.environ.get("GOOGLE_APPLICATION_CREDENTIALS") is not None ) - provider_status["gemini"] = ( + provider_status["google"] = ( os.environ.get("GOOGLE_API_KEY") is not None or os.environ.get("GEMINI_API_KEY") is not None ) - provider_status["openrouter"] = ( - os.environ.get("OPENROUTER_API_KEY") is not None - and os.environ.get("OPENAI_API_KEY") is not None - and os.environ.get("OPENROUTER_BASE_URL") is not None - ) + provider_status["openrouter"] = os.environ.get("OPENROUTER_API_KEY") is not None provider_status["anthropic"] = os.environ.get("ANTHROPIC_API_KEY") is not None provider_status["elevenlabs"] = os.environ.get("ELEVENLABS_API_KEY") is not None provider_status["voyage"] = os.environ.get("VOYAGE_API_KEY") is not None @@ -234,12 +235,19 @@ with st.container(border=True): "language", "Recommended: Gemini models", ) - + # Show warning if mandatory language models are missing - if not default_models.default_chat_model or not default_models.default_transformation_model: - st.warning("⚠️ Please select a Chat Model and Transformation Model - these are required for Open Notebook to function properly.") + if ( + not default_models.default_chat_model + or not default_models.default_transformation_model + ): + st.warning( + "⚠️ Please select a Chat Model and Transformation Model - these are required for Open Notebook to function properly." + ) elif not default_models.default_tools_model: - st.info("💡 Consider selecting a Tools Model for better tool calling capabilities (recommended: OpenAI or Anthropic models).") + st.info( + "💡 Consider selecting a Tools Model for better tool calling capabilities (recommended: OpenAI or Anthropic models)." + ) # Embedding Models Section st.subheader("🔍 Embedding Models") @@ -271,10 +279,12 @@ with st.container(border=True): "embedding", ) st.warning("⚠️ Changing embedding models requires regenerating all embeddings") - + # Show warning if no default embedding model is selected if not default_models.default_embedding_model: - st.warning("⚠️ Please select a default Embedding Model - this is required for search functionality.") + st.warning( + "⚠️ Please select a default Embedding Model - this is required for search functionality." + ) with col2: add_model_form("embedding", "main", available_providers) @@ -309,7 +319,7 @@ with st.container(border=True): "text_to_speech", "Can be overridden per podcast", ) - + # Show info if no default TTS model is selected if not default_models.default_text_to_speech_model: st.info("ℹ️ Select a default TTS model to enable podcast generation.") @@ -346,10 +356,12 @@ with st.container(border=True): "Used for audio transcriptions", "speech_to_text", ) - + # Show info if no default STT model is selected if not default_models.default_speech_to_text_model: - st.info("ℹ️ Select a default STT model to enable audio transcription features.") + st.info( + "ℹ️ Select a default STT model to enable audio transcription features." + ) with col2: add_model_form("speech_to_text", "main", available_providers) diff --git a/pyproject.toml b/pyproject.toml index ee2a769..8548a29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "open-notebook" -version = "0.3.1" +version = "0.3.2" description = "An open source implementation of a research assistant, inspired by Google Notebook LM" authors = [ {name = "Luis Novo", email = "lfnovo@gmail.com"} @@ -41,7 +41,7 @@ dependencies = [ "nest-asyncio>=1.6.0", "content-core>=1.0.2", "ai-prompter>=0.3", - "esperanto>=2.0.4", + "esperanto>=2.3.4", "langchain-google-vertexai>=2.0.10", "surrealdb>=1.0.4", "surreal-commands>=1.0.13", diff --git a/uv.lock b/uv.lock index 62ba974..dab11f0 100644 --- a/uv.lock +++ b/uv.lock @@ -538,15 +538,15 @@ wheels = [ [[package]] name = "esperanto" -version = "2.3.3" +version = "2.3.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/c3/6594c9e25af0c93a633b212392f979742491eca4782f071e82b33d8c1510/esperanto-2.3.3.tar.gz", hash = "sha256:3df64556be480a93c1327e4796d57042d0b519356128de374e0e00fa91f4b307", size = 455487 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/0d/549928070ab49078b7834a5a8b251a36a807d9791d0a8a43f57df8c8ea8c/esperanto-2.3.4.tar.gz", hash = "sha256:5072c3a6bdbbf0c53d6671f28991e9f205c93c49821058e2b62c3a17710bd235", size = 457606 } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/2c/5db4447f94f71a97e2d238fe8f1320ca9fb238ae7e34bc608868127ad0c6/esperanto-2.3.3-py3-none-any.whl", hash = "sha256:0fe3827d2f9aa8eb311948c7f609ab7f7d34f7fd7f6ec977e37fa0606fc5ac2b", size = 113492 }, + { url = "https://files.pythonhosted.org/packages/26/27/f98201713ec5339388e0a00bef25ccf598ba5048f3980f556d6a243c2b30/esperanto-2.3.4-py3-none-any.whl", hash = "sha256:9759ff22f3bfff6c9cc46acc6c69ded4f038baa6f5cda592b6ec83d5f11c5eff", size = 116946 }, ] [[package]] @@ -1970,7 +1970,7 @@ wheels = [ [[package]] name = "open-notebook" -version = "0.3.1" +version = "0.3.2" source = { editable = "." } dependencies = [ { name = "ai-prompter" }, @@ -2028,7 +2028,7 @@ dev = [ requires-dist = [ { name = "ai-prompter", specifier = ">=0.3" }, { name = "content-core", specifier = ">=1.0.2" }, - { name = "esperanto", specifier = ">=2.0.4" }, + { name = "esperanto", specifier = ">=2.3.4" }, { name = "fastapi", specifier = ">=0.104.0" }, { name = "groq", specifier = ">=0.12.0" }, { name = "httpx", extras = ["socks"], specifier = ">=0.27.0" },