feat: add models category (#8231)

* models category

* [autofix.ci] apply automated fixes

* change paths

* [autofix.ci] apply automated fixes

* test: comment out visibility check for disclosure-embeddings

* test: comment out visibility check for disclosure-embeddings

* test: update selector for OpenAI language models in decision flow integration test

* test: update selector for NVIDIA models to use language model identifier

* test: update selector for OpenAI language models in regression test

* models category (#8238)

* Update styleUtils.ts

* Update test_xai.py

* test: update selectors for OpenAI language models to use 'languagemodelsOpenAI'

* Update test_embedding_model_component.py

* test: update test IDs for NVIDIA and Ollama language models to use 'languagemodels'

* test: update test IDs to use 'languagemodels' prefix for consistency

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Deon Sanchez <69873175+deon-sanchez@users.noreply.github.com>
Co-authored-by: deon-sanchez <deon.sanchez@datastax.com>
This commit is contained in:
Edwin Jose 2025-05-28 14:09:15 -04:00 • committed by GitHub
commit b14189ed05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
64 changed files with 152 additions and 143 deletions

View file

@ -2,7 +2,7 @@ import os
import pytest
from langflow.components.helpers import OutputParserComponent
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.prompts import PromptComponent
from tests.integration.utils import ComponentInputHandle, run_single_component

View file

@ -3,7 +3,7 @@ import os
import pytest
from langflow.base.tools.component_tool import ComponentToolkit
from langflow.components.langchain_utilities import ToolCallingAgentComponent
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.outputs.chat import ChatOutput
from langflow.components.tools.calculator import CalculatorToolComponent
from langflow.graph import Graph

View file

@ -2,7 +2,7 @@ import os
import pytest
from langflow.components.langchain_utilities import ToolCallingAgentComponent
from langflow.components.models.openai_chat_model import OpenAIModelComponent
from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent
from langflow.components.tools.calculator import CalculatorToolComponent

View file

@ -3,7 +3,7 @@ import os
import pytest
from langchain.schema import HumanMessage
from langchain_community.chat_models.baidu_qianfan_endpoint import QianfanChatEndpoint
from langflow.components.models.baidu_qianfan_chat import QianfanChatEndpointComponent
from langflow.components.languagemodels.baidu_qianfan_chat import QianfanChatEndpointComponent
from qianfan.errors import APIError

View file

@ -2,7 +2,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
import pytest
from langchain_ollama import ChatOllama
from langflow.components.models.ollama import ChatOllamaComponent
from langflow.components.languagemodels.ollama import ChatOllamaComponent
from tests.base import ComponentTestBaseWithoutClient
@ -40,7 +40,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient):
# Provide an empty list or the actual mapping if versioned files exist
return []
@patch("langflow.components.models.ollama.ChatOllama")
@patch("langflow.components.languagemodels.ollama.ChatOllama")
async def test_build_model(self, mock_chat_ollama, component_class, default_kwargs):
mock_instance = MagicMock()
mock_chat_ollama.return_value = mock_instance
@ -68,7 +68,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient):
)
assert model == mock_instance
@patch("langflow.components.models.ollama.ChatOllama")
@patch("langflow.components.languagemodels.ollama.ChatOllama")
async def test_build_model_missing_base_url(self, mock_chat_ollama, component_class, default_kwargs):
# Make the mock raise an exception to simulate connection failure
mock_chat_ollama.side_effect = Exception("connection error")
@ -78,8 +78,8 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient):
component.build_model()
@pytest.mark.asyncio
@patch("langflow.components.models.ollama.httpx.AsyncClient.post")
@patch("langflow.components.models.ollama.httpx.AsyncClient.get")
@patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.post")
@patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get")
async def test_get_models_success(self, mock_get, mock_post):
component = ChatOllamaComponent()
mock_get_response = AsyncMock()
@ -107,7 +107,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient):
assert mock_post.call_count == 2
@pytest.mark.asyncio
@patch("langflow.components.models.ollama.httpx.AsyncClient.get")
@patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get")
async def test_get_models_failure(self, mock_get):
import httpx
@ -147,7 +147,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient):
assert updated_config["mirostat_eta"]["value"] == 0.2
assert updated_config["mirostat_tau"]["value"] == 10
@patch("langflow.components.models.ollama.httpx.AsyncClient.get")
@patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get")
@pytest.mark.asyncio
async def test_update_build_config_model_name(self, mock_get):
component = ChatOllamaComponent()

View file

@ -1,7 +1,7 @@
from unittest.mock import MagicMock
import pytest
from langflow.components.models import DeepSeekModelComponent
from langflow.components.languagemodels import DeepSeekModelComponent
from langflow.custom import Component
from langflow.custom.utils import build_custom_component_template

View file

@ -1,4 +1,4 @@
from langflow.components.models.huggingface import DEFAULT_MODEL, HuggingFaceEndpointsComponent
from langflow.components.languagemodels.huggingface import DEFAULT_MODEL, HuggingFaceEndpointsComponent
from langflow.inputs.inputs import DictInput, DropdownInput, FloatInput, IntInput, SecretStrInput, SliderInput, StrInput

View file

@ -1,7 +1,7 @@
from unittest.mock import MagicMock, patch
import pytest
from langflow.components.models import XAIModelComponent
from langflow.components.languagemodels import XAIModelComponent
from langflow.custom import Component
from langflow.custom.utils import build_custom_component_template
from langflow.inputs import (
@ -101,7 +101,7 @@ class TestXAIComponent(ComponentTestBaseWithoutClient):
component.base_url = "https://api.x.ai/v1"
component.seed = 1
mock_chat_openai = mocker.patch("langflow.components.models.xai.ChatOpenAI", return_value=MagicMock())
mock_chat_openai = mocker.patch("langflow.components.languagemodels.xai.ChatOpenAI", return_value=MagicMock())
model = component.build_model()
mock_chat_openai.assert_called_once_with(
max_tokens=100,
@ -156,7 +156,7 @@ class TestXAIComponent(ComponentTestBaseWithoutClient):
component.seed = 1
mocker.patch(
"langflow.components.models.xai.ChatOpenAI",
"langflow.components.languagemodels.xai.ChatOpenAI",
side_effect=BadRequestError(
message="Invalid API key",
response=MagicMock(),
@ -181,7 +181,7 @@ class TestXAIComponent(ComponentTestBaseWithoutClient):
mock_instance = MagicMock()
mock_bound_instance = MagicMock()
mock_instance.bind.return_value = mock_bound_instance
mocker.patch("langflow.components.models.xai.ChatOpenAI", return_value=mock_instance)
mocker.patch("langflow.components.languagemodels.xai.ChatOpenAI", return_value=mock_instance)
model = component.build_model()
mock_instance.bind.assert_called_once_with(response_format={"type": "json_object"})

View file

@ -2,7 +2,7 @@ from unittest.mock import MagicMock, patch
import pytest
from langflow.base.models.openai_constants import OPENAI_EMBEDDING_MODEL_NAMES
from langflow.components.embeddings.embedding_model import EmbeddingModelComponent
from langflow.components.models.embedding_model import EmbeddingModelComponent
from tests.base import ComponentTestBaseWithClient
@ -41,7 +41,7 @@ class TestEmbeddingModelComponent(ComponentTestBaseWithClient):
assert updated_config["api_key"]["display_name"] == "OpenAI API Key"
assert updated_config["api_base"]["display_name"] == "OpenAI API Base URL"
@patch("langflow.components.embeddings.embedding_model.OpenAIEmbeddings")
@patch("langflow.components.models.embedding_model.OpenAIEmbeddings")
async def test_build_embeddings_openai(self, mock_openai_embeddings, component_class, default_kwargs):
# Setup mock
mock_instance = MagicMock()

View file

@ -2,7 +2,7 @@ import re
import pytest
from langflow.components.inputs import ChatInput
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.outputs import ChatOutput
from langflow.components.prompts import PromptComponent
from langflow.graph import Graph

View file

@ -3,8 +3,8 @@ import os
import pytest
from langflow.components.inputs import ChatInput
from langflow.components.inputs.text import TextInputComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.logic.conditional_router import ConditionalRouterComponent
from langflow.components.models import OpenAIModelComponent
from langflow.components.outputs import ChatOutput, TextOutputComponent
from langflow.components.prompts import PromptComponent
from langflow.custom import Component

View file

@ -3,7 +3,7 @@ from typing import TYPE_CHECKING
import pytest
from langflow.components.helpers.memory import MemoryComponent
from langflow.components.inputs import ChatInput
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.outputs import ChatOutput
from langflow.components.prompts import PromptComponent
from langflow.graph import Graph

View file

@ -5,7 +5,7 @@ from typing import TYPE_CHECKING
import pytest
from langflow.components.helpers.memory import MemoryComponent
from langflow.components.inputs import ChatInput
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.outputs import ChatOutput
from langflow.components.prompts import PromptComponent
from langflow.graph import Graph

View file

@ -6,7 +6,7 @@ import pytest
from langflow.components.data import FileComponent
from langflow.components.embeddings import OpenAIEmbeddingsComponent
from langflow.components.inputs import ChatInput
from langflow.components.models import OpenAIModelComponent
from langflow.components.languagemodels import OpenAIModelComponent
from langflow.components.outputs import ChatOutput
from langflow.components.processing import ParseDataComponent
from langflow.components.processing.split_text import SplitTextComponent