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:
parent
09a65f6f41
commit
b14189ed05
64 changed files with 152 additions and 143 deletions
|
|
@ -2,13 +2,13 @@ from typing_extensions import TypedDict
|
|||
|
||||
from langflow.base.models.model import LCModelComponent
|
||||
from langflow.components.amazon.amazon_bedrock_model import AmazonBedrockComponent
|
||||
from langflow.components.models.anthropic import AnthropicModelComponent
|
||||
from langflow.components.models.azure_openai import AzureChatOpenAIComponent
|
||||
from langflow.components.models.google_generative_ai import GoogleGenerativeAIComponent
|
||||
from langflow.components.models.groq import GroqModel
|
||||
from langflow.components.models.nvidia import NVIDIAModelComponent
|
||||
from langflow.components.models.openai_chat_model import OpenAIModelComponent
|
||||
from langflow.components.models.sambanova import SambaNovaComponent
|
||||
from langflow.components.languagemodels.anthropic import AnthropicModelComponent
|
||||
from langflow.components.languagemodels.azure_openai import AzureChatOpenAIComponent
|
||||
from langflow.components.languagemodels.google_generative_ai import GoogleGenerativeAIComponent
|
||||
from langflow.components.languagemodels.groq import GroqModel
|
||||
from langflow.components.languagemodels.nvidia import NVIDIAModelComponent
|
||||
from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent
|
||||
from langflow.components.languagemodels.sambanova import SambaNovaComponent
|
||||
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
||||
from langflow.template.field.base import Input
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ def create_input_fields_dict(inputs: list[Input], prefix: str) -> dict[str, Inpu
|
|||
|
||||
def _get_google_generative_ai_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.google_generative_ai import GoogleGenerativeAIComponent
|
||||
from langflow.components.languagemodels.google_generative_ai import GoogleGenerativeAIComponent
|
||||
|
||||
google_generative_ai_inputs = get_filtered_inputs(GoogleGenerativeAIComponent)
|
||||
except ImportError as e:
|
||||
|
|
@ -85,7 +85,7 @@ def _get_google_generative_ai_inputs_and_fields():
|
|||
|
||||
def _get_openai_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.openai_chat_model import OpenAIModelComponent
|
||||
from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent
|
||||
|
||||
openai_inputs = get_filtered_inputs(OpenAIModelComponent)
|
||||
except ImportError as e:
|
||||
|
|
@ -96,7 +96,7 @@ def _get_openai_inputs_and_fields():
|
|||
|
||||
def _get_azure_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.azure_openai import AzureChatOpenAIComponent
|
||||
from langflow.components.languagemodels.azure_openai import AzureChatOpenAIComponent
|
||||
|
||||
azure_inputs = get_filtered_inputs(AzureChatOpenAIComponent)
|
||||
except ImportError as e:
|
||||
|
|
@ -107,7 +107,7 @@ def _get_azure_inputs_and_fields():
|
|||
|
||||
def _get_groq_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.groq import GroqModel
|
||||
from langflow.components.languagemodels.groq import GroqModel
|
||||
|
||||
groq_inputs = get_filtered_inputs(GroqModel)
|
||||
except ImportError as e:
|
||||
|
|
@ -118,7 +118,7 @@ def _get_groq_inputs_and_fields():
|
|||
|
||||
def _get_anthropic_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.anthropic import AnthropicModelComponent
|
||||
from langflow.components.languagemodels.anthropic import AnthropicModelComponent
|
||||
|
||||
anthropic_inputs = get_filtered_inputs(AnthropicModelComponent)
|
||||
except ImportError as e:
|
||||
|
|
@ -129,7 +129,7 @@ def _get_anthropic_inputs_and_fields():
|
|||
|
||||
def _get_nvidia_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.nvidia import NVIDIAModelComponent
|
||||
from langflow.components.languagemodels.nvidia import NVIDIAModelComponent
|
||||
|
||||
nvidia_inputs = get_filtered_inputs(NVIDIAModelComponent)
|
||||
except ImportError as e:
|
||||
|
|
@ -151,7 +151,7 @@ def _get_amazon_bedrock_inputs_and_fields():
|
|||
|
||||
def _get_sambanova_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.models.sambanova import SambaNovaComponent
|
||||
from langflow.components.languagemodels.sambanova import SambaNovaComponent
|
||||
|
||||
sambanova_inputs = get_filtered_inputs(SambaNovaComponent)
|
||||
except ImportError as e:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ from .astra_vectorize import AstraVectorizeComponent
|
|||
from .azure_openai import AzureOpenAIEmbeddingsComponent
|
||||
from .cloudflare import CloudflareWorkersAIEmbeddingsComponent
|
||||
from .cohere import CohereEmbeddingsComponent
|
||||
from .embedding_model import EmbeddingModelComponent
|
||||
from .google_generative_ai import GoogleGenerativeAIEmbeddingsComponent
|
||||
from .huggingface_inference_api import HuggingFaceInferenceAPIEmbeddingsComponent
|
||||
from .lmstudioembeddings import LMStudioEmbeddingsComponent
|
||||
|
|
@ -22,7 +21,6 @@ __all__ = [
|
|||
"AzureOpenAIEmbeddingsComponent",
|
||||
"CloudflareWorkersAIEmbeddingsComponent",
|
||||
"CohereEmbeddingsComponent",
|
||||
"EmbeddingModelComponent",
|
||||
"EmbeddingSimilarityComponent",
|
||||
"GoogleGenerativeAIEmbeddingsComponent",
|
||||
"HuggingFaceInferenceAPIEmbeddingsComponent",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
from .aiml import AIMLModelComponent
|
||||
from .anthropic import AnthropicModelComponent
|
||||
from .azure_openai import AzureChatOpenAIComponent
|
||||
from .baidu_qianfan_chat import QianfanChatEndpointComponent
|
||||
from .cohere import CohereComponent
|
||||
from .deepseek import DeepSeekModelComponent
|
||||
from .google_generative_ai import GoogleGenerativeAIComponent
|
||||
from .groq import GroqModel
|
||||
from .huggingface import HuggingFaceEndpointsComponent
|
||||
from .lmstudiomodel import LMStudioModelComponent
|
||||
from .maritalk import MaritalkModelComponent
|
||||
from .mistral import MistralAIModelComponent
|
||||
from .novita import NovitaModelComponent
|
||||
from .nvidia import NVIDIAModelComponent
|
||||
from .ollama import ChatOllamaComponent
|
||||
from .openai_chat_model import OpenAIModelComponent
|
||||
from .openrouter import OpenRouterComponent
|
||||
from .perplexity import PerplexityComponent
|
||||
from .sambanova import SambaNovaComponent
|
||||
from .vertexai import ChatVertexAIComponent
|
||||
from .watsonx import WatsonxAIComponent
|
||||
from .xai import XAIModelComponent
|
||||
|
||||
__all__ = [
|
||||
"AIMLModelComponent",
|
||||
"AnthropicModelComponent",
|
||||
"AzureChatOpenAIComponent",
|
||||
"ChatOllamaComponent",
|
||||
"ChatVertexAIComponent",
|
||||
"CohereComponent",
|
||||
"DeepSeekModelComponent",
|
||||
"GoogleGenerativeAIComponent",
|
||||
"GroqModel",
|
||||
"HuggingFaceEndpointsComponent",
|
||||
"LMStudioModelComponent",
|
||||
"MaritalkModelComponent",
|
||||
"MistralAIModelComponent",
|
||||
"NVIDIAModelComponent",
|
||||
"NovitaModelComponent",
|
||||
"OpenAIModelComponent",
|
||||
"OpenRouterComponent",
|
||||
"PerplexityComponent",
|
||||
"QianfanChatEndpointComponent",
|
||||
"SambaNovaComponent",
|
||||
"WatsonxAIComponent",
|
||||
"XAIModelComponent",
|
||||
]
|
||||
|
|
@ -1,49 +1,4 @@
|
|||
from .aiml import AIMLModelComponent
|
||||
from .anthropic import AnthropicModelComponent
|
||||
from .azure_openai import AzureChatOpenAIComponent
|
||||
from .baidu_qianfan_chat import QianfanChatEndpointComponent
|
||||
from .cohere import CohereComponent
|
||||
from .deepseek import DeepSeekModelComponent
|
||||
from .google_generative_ai import GoogleGenerativeAIComponent
|
||||
from .groq import GroqModel
|
||||
from .huggingface import HuggingFaceEndpointsComponent
|
||||
from .embedding_model import EmbeddingModelComponent
|
||||
from .language_model import LanguageModelComponent
|
||||
from .lmstudiomodel import LMStudioModelComponent
|
||||
from .maritalk import MaritalkModelComponent
|
||||
from .mistral import MistralAIModelComponent
|
||||
from .novita import NovitaModelComponent
|
||||
from .nvidia import NVIDIAModelComponent
|
||||
from .ollama import ChatOllamaComponent
|
||||
from .openai_chat_model import OpenAIModelComponent
|
||||
from .openrouter import OpenRouterComponent
|
||||
from .perplexity import PerplexityComponent
|
||||
from .sambanova import SambaNovaComponent
|
||||
from .vertexai import ChatVertexAIComponent
|
||||
from .watsonx import WatsonxAIComponent
|
||||
from .xai import XAIModelComponent
|
||||
|
||||
__all__ = [
|
||||
"AIMLModelComponent",
|
||||
"AnthropicModelComponent",
|
||||
"AzureChatOpenAIComponent",
|
||||
"ChatOllamaComponent",
|
||||
"ChatVertexAIComponent",
|
||||
"CohereComponent",
|
||||
"DeepSeekModelComponent",
|
||||
"GoogleGenerativeAIComponent",
|
||||
"GroqModel",
|
||||
"HuggingFaceEndpointsComponent",
|
||||
"LMStudioModelComponent",
|
||||
"LanguageModelComponent",
|
||||
"MaritalkModelComponent",
|
||||
"MistralAIModelComponent",
|
||||
"NVIDIAModelComponent",
|
||||
"NovitaModelComponent",
|
||||
"OpenAIModelComponent",
|
||||
"OpenRouterComponent",
|
||||
"PerplexityComponent",
|
||||
"QianfanChatEndpointComponent",
|
||||
"SambaNovaComponent",
|
||||
"WatsonxAIComponent",
|
||||
"XAIModelComponent",
|
||||
]
|
||||
__all__ = ["EmbeddingModelComponent", "LanguageModelComponent"]
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class EmbeddingModelComponent(LCEmbeddingsModel):
|
|||
description = "Generate embeddings using a specified provider."
|
||||
icon = "binary"
|
||||
name = "EmbeddingModel"
|
||||
category = "embeddings"
|
||||
category = "models"
|
||||
|
||||
inputs = [
|
||||
DropdownInput(
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from textwrap import dedent
|
|||
|
||||
from langflow.components.data import URLComponent
|
||||
from langflow.components.inputs import TextInputComponent
|
||||
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.prompts import PromptComponent
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from langflow.components.crewai.crewai import CrewAIAgentComponent
|
|||
from langflow.components.crewai.hierarchical_crew import HierarchicalCrewComponent
|
||||
from langflow.components.crewai.hierarchical_task import HierarchicalTaskComponent
|
||||
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.components.tools import SearchAPIComponent, YfinanceToolComponent
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from langflow.components.data import FileComponent
|
||||
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.prompts import PromptComponent
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from langflow.components.crewai.crewai import CrewAIAgentComponent
|
|||
from langflow.components.crewai.hierarchical_crew import HierarchicalCrewComponent
|
||||
from langflow.components.crewai.hierarchical_task import HierarchicalTaskComponent
|
||||
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.components.tools import SearchAPIComponent
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from langflow.components.crewai.sequential_crew import SequentialCrewComponent
|
||||
from langflow.components.crewai.sequential_task_agent import SequentialTaskAgentComponent
|
||||
from langflow.components.inputs import TextInputComponent
|
||||
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.components.tools import SearchAPIComponent
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from textwrap import dedent
|
|||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -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()
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -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"})
|
||||
|
|
@ -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()
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -208,11 +208,11 @@ export const SIDEBAR_CATEGORIES = [
|
|||
{ display_name: "Inputs", name: "inputs", icon: "Download" },
|
||||
{ display_name: "Outputs", name: "outputs", icon: "Upload" },
|
||||
{ display_name: "Prompts", name: "prompts", icon: "TerminalSquare" },
|
||||
{ display_name: "Models", name: "models", icon: "BrainCog" },
|
||||
{ display_name: "Data", name: "data", icon: "Database" },
|
||||
{ display_name: "Processing", name: "processing", icon: "ListFilter" },
|
||||
{ display_name: "Models", name: "models", icon: "BrainCircuit" },
|
||||
|
||||
{ display_name: "Vector Stores", name: "vectorstores", icon: "Layers" },
|
||||
{ display_name: "Embeddings", name: "embeddings", icon: "Binary" },
|
||||
{ display_name: "Agents", name: "agents", icon: "Bot" },
|
||||
{ display_name: "Chains", name: "chains", icon: "Link" },
|
||||
{ display_name: "Loaders", name: "documentloaders", icon: "Paperclip" },
|
||||
|
|
@ -229,6 +229,12 @@ export const SIDEBAR_CATEGORIES = [
|
|||
];
|
||||
|
||||
export const SIDEBAR_BUNDLES = [
|
||||
{
|
||||
display_name: "Language Models",
|
||||
name: "languagemodels",
|
||||
icon: "BrainCircuit",
|
||||
},
|
||||
{ display_name: "Embeddings", name: "embeddings", icon: "Binary" },
|
||||
{ display_name: "Amazon", name: "amazon", icon: "Amazon" },
|
||||
{ display_name: "Gmail", name: "gmail", icon: "Gmail" },
|
||||
{ display_name: "GitHub", name: "github", icon: "Github" },
|
||||
|
|
@ -309,7 +315,7 @@ export const nodeIconToDisplayIconMap: Record<string, string> = {
|
|||
outputs: "Upload",
|
||||
prompts: "TerminalSquare",
|
||||
data: "Database",
|
||||
models: "BrainCircuit",
|
||||
models: "BrainCog",
|
||||
helpers: "Wand2",
|
||||
vectorstores: "Layers",
|
||||
embeddings: "Binary",
|
||||
|
|
@ -332,6 +338,8 @@ export const nodeIconToDisplayIconMap: Record<string, string> = {
|
|||
//Integration Icons
|
||||
AIML: "AI/ML",
|
||||
AgentQL: "AgentQL",
|
||||
LanguageModels: "BrainCircuit",
|
||||
EmbeddingModels: "Binary",
|
||||
AirbyteJSONLoader: "Airbyte",
|
||||
AmazonBedrockEmbeddings: "AWS",
|
||||
Amazon: "AWS",
|
||||
|
|
|
|||
|
|
@ -119,7 +119,6 @@ test(
|
|||
await expect(page.getByTestId("disclosure-helpers")).toBeVisible();
|
||||
await expect(page.getByTestId("disclosure-vector stores")).toBeVisible();
|
||||
await expect(page.getByTestId("disclosure-prototypes")).toBeVisible();
|
||||
await expect(page.getByTestId("disclosure-embeddings")).toBeVisible();
|
||||
await expect(page.getByTestId("disclosure-tools")).toBeVisible();
|
||||
|
||||
await expect(page.getByTestId("dataAPI Request")).toBeVisible();
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOpenAI"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', {
|
||||
timeout: 1000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.hover()
|
||||
.then(async () => {
|
||||
await page.getByTestId("add-component-button-openai").last().click();
|
||||
|
|
|
|||
|
|
@ -164,11 +164,14 @@ test(
|
|||
//---------------------------------- OPENAI
|
||||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
await page.waitForSelector('[data-testid="modelsOpenAI"]', {
|
||||
timeout: 2000,
|
||||
});
|
||||
await page.waitForSelector(
|
||||
'[data-testid="languagemodels_openai_draggable"]',
|
||||
{
|
||||
timeout: 2000,
|
||||
},
|
||||
);
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'), {
|
||||
targetPosition: { x: 500, y: 300 },
|
||||
});
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ test.skip(
|
|||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
await page.waitForTimeout(1000);
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
|
|||
|
|
@ -14,12 +14,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("nvidia");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsNVIDIA"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', {
|
||||
timeout: 30000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsNVIDIA")
|
||||
.getByTestId("languagemodelsNVIDIA")
|
||||
.hover()
|
||||
.then(async () => {
|
||||
// Wait for the API request to complete after clicking the add button
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ test("IntComponent", { tag: ["@release", "@workspace"] }, async ({ page }) => {
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOpenAI"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.first()
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOpenAI"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("ollama");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOllama"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOllama"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOllama")
|
||||
.getByTestId("languagemodelsOllama")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
|
|||
|
|
@ -31,12 +31,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("NVIDIA");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsNVIDIA"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsNVIDIA")
|
||||
.getByTestId("languagemodelsNVIDIA")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
@ -85,7 +85,7 @@ test(
|
|||
await page.keyboard.press("Escape");
|
||||
await page.locator('//*[@id="react-flow-id"]').click();
|
||||
|
||||
const lastNvidiaModel = page.getByTestId("modelsNVIDIA").last();
|
||||
const lastNvidiaModel = page.getByTestId("languagemodelsNVIDIA").last();
|
||||
await lastNvidiaModel.scrollIntoViewIfNeeded();
|
||||
|
||||
try {
|
||||
|
|
@ -128,12 +128,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("NVIDIA");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsNVIDIA"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsNVIDIA")
|
||||
.getByTestId("languagemodelsNVIDIA")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ test(
|
|||
"disclosure-models",
|
||||
"disclosure-helpers",
|
||||
"disclosure-vector stores",
|
||||
"disclosure-embeddings",
|
||||
"disclosure-agents",
|
||||
"disclosure-memories",
|
||||
"disclosure-logic",
|
||||
|
|
@ -99,23 +98,23 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
|
||||
const visibleModelSpecsTestIds = [
|
||||
"modelsAIML",
|
||||
"modelsAnthropic",
|
||||
"modelsAzure OpenAI",
|
||||
"modelsCohere",
|
||||
"modelsGoogle Generative AI",
|
||||
"modelsGroq",
|
||||
"modelsHuggingFace",
|
||||
"modelsLM Studio",
|
||||
"modelsMaritalk",
|
||||
"modelsMistralAI",
|
||||
"modelsNVIDIA",
|
||||
"modelsOllama",
|
||||
"modelsOpenAI",
|
||||
"modelsPerplexity",
|
||||
"modelsQianfan",
|
||||
"modelsSambaNova",
|
||||
"modelsVertex AI",
|
||||
"languagemodelsAIML",
|
||||
"languagemodelsAnthropic",
|
||||
"languagemodelsAzure OpenAI",
|
||||
"languagemodelsCohere",
|
||||
"languagemodelsGoogle Generative AI",
|
||||
"languagemodelsGroq",
|
||||
"languagemodelsHuggingFace",
|
||||
"languagemodelsLM Studio",
|
||||
"languagemodelsMaritalk",
|
||||
"languagemodelsMistralAI",
|
||||
"languagemodelsNVIDIA",
|
||||
"languagemodelsOllama",
|
||||
"languagemodelsOpenAI",
|
||||
"languagemodelsPerplexity",
|
||||
"languagemodelsQianfan",
|
||||
"languagemodelsSambaNova",
|
||||
"languagemodelsVertex AI",
|
||||
];
|
||||
|
||||
await Promise.all(
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("ollama");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOllama"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOllama"]', {
|
||||
timeout: 3000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOllama")
|
||||
.getByTestId("languagemodelsOllama")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'));
|
||||
await page.mouse.up();
|
||||
await page.mouse.down();
|
||||
|
|
|
|||
|
|
@ -14,12 +14,12 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
|
||||
await page.waitForSelector('[data-testid="modelsOpenAI"]', {
|
||||
await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', {
|
||||
timeout: 1000,
|
||||
});
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.hover()
|
||||
.then(async () => {
|
||||
await page.getByTestId("add-component-button-openai").last().click();
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").fill("openai");
|
||||
|
||||
await page
|
||||
.getByTestId("modelsOpenAI")
|
||||
.getByTestId("languagemodelsOpenAI")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'), {
|
||||
targetPosition: { x: 100, y: 200 },
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue