ref: sidebar experience improvement with new bundles (#8824)
* cohere sidebar * side bar embeddings * move memories * sort style utils * [autofix.ci] apply automated fixes * serach components add * Update __init__.py * Update styleUtils.ts * [autofix.ci] apply automated fixes * Update model_input_constants.py * fix lint * update to wikipedia * ✨ (tableInputComponent.spec.ts): Refactor test to use for loops for better readability and efficiency ✨ (filterEdge-shard-1.spec.ts): Update model names for better clarity and consistency 🐛 (duckduckgo.spec.ts): Update selector for search button to match changes in the frontend 🐛 (generalBugs-shard-11.spec.ts): Update selector for search button to match changes in the frontend * [autofix.ci] apply automated fixes * update tests path * update tests * Update test_arxiv_component.py * [autofix.ci] apply automated fixes * make embeddings functions --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: cristhianzl <cristhian.lousa@gmail.com>
This commit is contained in:
parent
dc671ae204
commit
e28093234b
84 changed files with 264 additions and 238 deletions
|
|
@ -5,10 +5,10 @@ from langflow.components.amazon.amazon_bedrock_model import AmazonBedrockCompone
|
|||
from langflow.components.anthropic.anthropic import AnthropicModelComponent
|
||||
from langflow.components.azure.azure_openai import AzureChatOpenAIComponent
|
||||
from langflow.components.google.google_generative_ai import GoogleGenerativeAIComponent
|
||||
from langflow.components.languagemodels.groq import GroqModel
|
||||
from langflow.components.languagemodels.sambanova import SambaNovaComponent
|
||||
from langflow.components.groq.groq import GroqModel
|
||||
from langflow.components.nvidia.nvidia import NVIDIAModelComponent
|
||||
from langflow.components.openai.openai_chat_model import OpenAIModelComponent
|
||||
from langflow.components.sambanova.sambanova import SambaNovaComponent
|
||||
from langflow.inputs.inputs import InputTypes, SecretStrInput
|
||||
from langflow.template.field.base import Input
|
||||
|
||||
|
|
@ -125,7 +125,7 @@ def _get_azure_inputs_and_fields():
|
|||
|
||||
def _get_groq_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.languagemodels.groq import GroqModel
|
||||
from langflow.components.groq.groq import GroqModel
|
||||
|
||||
groq_inputs = get_filtered_inputs(GroqModel)
|
||||
except ImportError as e:
|
||||
|
|
@ -169,7 +169,7 @@ def _get_amazon_bedrock_inputs_and_fields():
|
|||
|
||||
def _get_sambanova_inputs_and_fields():
|
||||
try:
|
||||
from langflow.components.languagemodels.sambanova import SambaNovaComponent
|
||||
from langflow.components.sambanova.sambanova import SambaNovaComponent
|
||||
|
||||
sambanova_inputs = get_filtered_inputs(SambaNovaComponent)
|
||||
except ImportError as e:
|
||||
|
|
|
|||
3
src/backend/base/langflow/components/arxiv/__init__.py
Normal file
3
src/backend/base/langflow/components/arxiv/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .arxiv import ArXivComponent
|
||||
|
||||
__all__ = ["ArXivComponent"]
|
||||
3
src/backend/base/langflow/components/baidu/__init__.py
Normal file
3
src/backend/base/langflow/components/baidu/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .baidu_qianfan_chat import QianfanChatEndpoint
|
||||
|
||||
__all__ = ["QianfanChatEndpoint"]
|
||||
3
src/backend/base/langflow/components/bing/__init__.py
Normal file
3
src/backend/base/langflow/components/bing/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .bing_search_api import BingSearchAPIComponent
|
||||
|
||||
__all__ = ["BingSearchAPIComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .cloudflare import CloudflareWorkersAIEmbeddingsComponent
|
||||
|
||||
__all__ = ["CloudflareWorkersAIEmbeddingsComponent"]
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
from .cohere_embeddings import CohereEmbeddingsComponent
|
||||
from .cohere_models import CohereComponent
|
||||
from .cohere_rerank import CohereRerankComponent
|
||||
|
||||
__all__ = ["CohereRerankComponent"]
|
||||
__all__ = ["CohereComponent", "CohereEmbeddingsComponent", "CohereRerankComponent"]
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from langflow.io import SecretStrInput, SliderInput
|
|||
|
||||
|
||||
class CohereComponent(LCModelComponent):
|
||||
display_name = "Cohere"
|
||||
display_name = "Cohere Language Models"
|
||||
description = "Generate text using Cohere LLMs."
|
||||
documentation = "https://python.langchain.com/docs/modules/model_io/models/llms/integrations/cohere"
|
||||
icon = "Cohere"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .deepseek import DeepSeekModelComponent
|
||||
|
||||
__all__ = ["DeepSeekModelComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .duck_duck_go_search_run import DuckDuckGoSearchComponent
|
||||
|
||||
__all__ = ["DuckDuckGoSearchComponent"]
|
||||
|
|
@ -1,15 +1,9 @@
|
|||
from .cloudflare import CloudflareWorkersAIEmbeddingsComponent
|
||||
from .cohere import CohereEmbeddingsComponent
|
||||
from .lmstudioembeddings import LMStudioEmbeddingsComponent
|
||||
from .mistral import MistralAIEmbeddingsComponent
|
||||
from .similarity import EmbeddingSimilarityComponent
|
||||
from .text_embedder import TextEmbedderComponent
|
||||
|
||||
__all__ = [
|
||||
"CloudflareWorkersAIEmbeddingsComponent",
|
||||
"CohereEmbeddingsComponent",
|
||||
"EmbeddingSimilarityComponent",
|
||||
"LMStudioEmbeddingsComponent",
|
||||
"MistralAIEmbeddingsComponent",
|
||||
"TextEmbedderComponent",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ class EmbeddingSimilarityComponent(Component):
|
|||
display_name: str = "Embedding Similarity"
|
||||
description: str = "Compute selected form of similarity between two embedding vectors."
|
||||
icon = "equal"
|
||||
legacy: bool = True
|
||||
|
||||
inputs = [
|
||||
DataInput(
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ class TextEmbedderComponent(Component):
|
|||
display_name: str = "Text Embedder"
|
||||
description: str = "Generate embeddings for a given message using the specified embedding model."
|
||||
icon = "binary"
|
||||
legacy: bool = True
|
||||
inputs = [
|
||||
HandleInput(
|
||||
name="embedding_model",
|
||||
|
|
|
|||
3
src/backend/base/langflow/components/exa/__init__.py
Normal file
3
src/backend/base/langflow/components/exa/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .exa_search import ExaSearchToolkit
|
||||
|
||||
__all__ = ["ExaSearchToolkit"]
|
||||
3
src/backend/base/langflow/components/glean/__init__.py
Normal file
3
src/backend/base/langflow/components/glean/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .glean_search_api import GleanSearchAPISchema
|
||||
|
||||
__all__ = ["GleanSearchAPISchema"]
|
||||
3
src/backend/base/langflow/components/groq/__init__.py
Normal file
3
src/backend/base/langflow/components/groq/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .groq import GroqModel
|
||||
|
||||
__all__ = ["GroqModel"]
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
from .baidu_qianfan_chat import QianfanChatEndpointComponent
|
||||
from .cohere import CohereComponent
|
||||
from .deepseek import DeepSeekModelComponent
|
||||
from .groq import GroqModel
|
||||
from .lmstudiomodel import LMStudioModelComponent
|
||||
from .maritalk import MaritalkModelComponent
|
||||
from .mistral import MistralAIModelComponent
|
||||
from .novita import NovitaModelComponent
|
||||
from .openrouter import OpenRouterComponent
|
||||
from .perplexity import PerplexityComponent
|
||||
from .sambanova import SambaNovaComponent
|
||||
from .xai import XAIModelComponent
|
||||
|
||||
__all__ = [
|
||||
"ChatOllamaComponent",
|
||||
"ChatVertexAIComponent",
|
||||
"CohereComponent",
|
||||
"DeepSeekModelComponent",
|
||||
"GroqModel",
|
||||
"HuggingFaceEndpointsComponent",
|
||||
"LMStudioModelComponent",
|
||||
"MaritalkModelComponent",
|
||||
"MistralAIModelComponent",
|
||||
"NovitaModelComponent",
|
||||
"OpenRouterComponent",
|
||||
"PerplexityComponent",
|
||||
"QianfanChatEndpointComponent",
|
||||
"SambaNovaComponent",
|
||||
"WatsonxAIComponent",
|
||||
"XAIModelComponent",
|
||||
]
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
from .lmstudioembeddings import LMStudioEmbeddingsComponent
|
||||
from .lmstudiomodel import LMStudioModelComponent
|
||||
|
||||
__all__ = ["LMStudioEmbeddingsComponent", "LMStudioModelComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .maritalk import MaritalkModelComponent
|
||||
|
||||
__all__ = ["MaritalkModelComponent"]
|
||||
3
src/backend/base/langflow/components/mem0/__init__.py
Normal file
3
src/backend/base/langflow/components/mem0/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .mem0_chat_memory import Mem0MemoryComponent
|
||||
|
||||
__all__ = ["Mem0MemoryComponent"]
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
from .mem0_chat_memory import Mem0MemoryComponent
|
||||
from .redis import RedisIndexChatMemory
|
||||
from .zep import ZepChatMemory
|
||||
|
||||
__all__ = [
|
||||
"Mem0MemoryComponent",
|
||||
"RedisIndexChatMemory",
|
||||
"ZepChatMemory",
|
||||
]
|
||||
4
src/backend/base/langflow/components/mistral/__init__.py
Normal file
4
src/backend/base/langflow/components/mistral/__init__.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
from .mistral import MistralAIModelComponent
|
||||
from .mistral_embeddings import MistralAIEmbeddingsComponent
|
||||
|
||||
__all__ = ["MistralAIEmbeddingsComponent", "MistralAIModelComponent"]
|
||||
3
src/backend/base/langflow/components/novita/__init__.py
Normal file
3
src/backend/base/langflow/components/novita/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .novita import NovitaModelComponent
|
||||
|
||||
__all__ = ["NovitaModelComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .openrouter import OpenRouterComponent
|
||||
|
||||
__all__ = ["OpenRouterComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .perplexity import PerplexityComponent
|
||||
|
||||
__all__ = ["PerplexityComponent"]
|
||||
3
src/backend/base/langflow/components/redis/__init__.py
Normal file
3
src/backend/base/langflow/components/redis/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .redis import RedisIndexChatMemory
|
||||
|
||||
__all__ = ["RedisIndexChatMemory"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .sambanova import SambaNovaComponent
|
||||
|
||||
__all__ = ["SambaNovaComponent"]
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
from .arxiv import ArXivComponent
|
||||
from .bing_search_api import BingSearchAPIComponent
|
||||
from .duck_duck_go_search_run import DuckDuckGoSearchComponent
|
||||
from .exa_search import ExaSearchToolkit
|
||||
from .glean_search_api import GleanSearchAPISchema
|
||||
from .google_search_api_core import GoogleSearchAPICore
|
||||
from .google_serper_api_core import GoogleSerperAPICore
|
||||
from .search import SearchComponent
|
||||
from .serp import SerpComponent
|
||||
from .wikidata import WikidataComponent
|
||||
from .wikipedia import WikipediaComponent
|
||||
from .wolfram_alpha_api import WolframAlphaAPIComponent
|
||||
from .yahoo import YahooFinanceSchema
|
||||
|
||||
__all__ = [
|
||||
"ArXivComponent",
|
||||
"BingSearchAPIComponent",
|
||||
"DuckDuckGoSearchComponent",
|
||||
"ExaSearchToolkit",
|
||||
"GleanSearchAPISchema",
|
||||
"GoogleSearchAPICore",
|
||||
"GoogleSerperAPICore",
|
||||
"SearchComponent",
|
||||
"SerpComponent",
|
||||
"WikidataComponent",
|
||||
"WikipediaComponent",
|
||||
"WolframAlphaAPIComponent",
|
||||
"YahooFinanceSchema",
|
||||
]
|
||||
3
src/backend/base/langflow/components/serpapi/__init__.py
Normal file
3
src/backend/base/langflow/components/serpapi/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .serp import SerpComponent
|
||||
|
||||
__all__ = ["SerpComponent"]
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
from .wikidata import WikidataComponent
|
||||
from .wikipedia import WikipediaComponent
|
||||
|
||||
__all__ = ["WikidataComponent", "WikipediaComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .wolfram_alpha_api import WolframAlphaAPIComponent
|
||||
|
||||
__all__ = ["WolframAlphaAPIComponent"]
|
||||
3
src/backend/base/langflow/components/xai/__init__.py
Normal file
3
src/backend/base/langflow/components/xai/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .xai import XAIModelComponent
|
||||
|
||||
__all__ = ["XAIModelComponent"]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
from .yahoo import YfinanceComponent
|
||||
|
||||
__all__ = ["YfinanceComponent"]
|
||||
3
src/backend/base/langflow/components/zep/__init__.py
Normal file
3
src/backend/base/langflow/components/zep/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from .zep import ZepChatMemory
|
||||
|
||||
__all__ = ["ZepChatMemory"]
|
||||
|
|
@ -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.languagemodels.baidu_qianfan_chat import QianfanChatEndpointComponent
|
||||
from langflow.components.baidu.baidu_qianfan_chat import QianfanChatEndpointComponent
|
||||
from qianfan.errors import APIError
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
from langflow.components.languagemodels import DeepSeekModelComponent
|
||||
from langflow.components.deepseek.deepseek import DeepSeekModelComponent
|
||||
from langflow.custom.custom_component.component import Component
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from langflow.components.languagemodels import XAIModelComponent
|
||||
from langflow.components.xai.xai import XAIModelComponent
|
||||
from langflow.custom.custom_component.component import Component
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
from langflow.inputs.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.languagemodels.xai.ChatOpenAI", return_value=MagicMock())
|
||||
mock_chat_openai = mocker.patch("langflow.components.xai.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.languagemodels.xai.ChatOpenAI",
|
||||
"langflow.components.xai.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.languagemodels.xai.ChatOpenAI", return_value=mock_instance)
|
||||
mocker.patch("langflow.components.xai.xai.ChatOpenAI", return_value=mock_instance)
|
||||
|
||||
model = component.build_model()
|
||||
mock_instance.bind.assert_called_once_with(response_format={"type": "json_object"})
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ from tests.base import ComponentTestBaseWithClient
|
|||
class TestArXivComponent(ComponentTestBaseWithClient):
|
||||
def test_component_versions(self, default_kwargs, file_names_mapping):
|
||||
"""Test component compatibility across versions."""
|
||||
from langflow.components.search.arxiv import ArXivComponent
|
||||
from langflow.components.arxiv.arxiv import ArXivComponent
|
||||
|
||||
# Test current version
|
||||
component = ArXivComponent(**default_kwargs)
|
||||
|
|
@ -31,7 +31,7 @@ class TestArXivComponent(ComponentTestBaseWithClient):
|
|||
|
||||
@pytest.fixture
|
||||
def component_class(self):
|
||||
from langflow.components.search.arxiv import ArXivComponent
|
||||
from langflow.components.arxiv.arxiv import ArXivComponent
|
||||
|
||||
return ArXivComponent
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from unittest.mock import patch
|
|||
|
||||
import pandas as pd
|
||||
import pytest
|
||||
from langflow.components.search import GoogleSearchAPICore
|
||||
from langflow.components.google.google_search_api_core import GoogleSearchAPICore
|
||||
from langflow.schema import DataFrame
|
||||
|
||||
from tests.base import ComponentTestBaseWithoutClient
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from langflow.components.search import GoogleSerperAPICore
|
||||
from langflow.components.google.google_serper_api_core import GoogleSerperAPICore
|
||||
from langflow.schema import DataFrame
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from unittest.mock import MagicMock, patch
|
|||
import httpx
|
||||
import pytest
|
||||
from langchain_core.tools import ToolException
|
||||
from langflow.components.search import WikidataComponent
|
||||
from langflow.components.wikipedia import WikidataComponent
|
||||
from langflow.custom import Component
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
from langflow.components.search import WikipediaComponent
|
||||
from langflow.components.wikipedia import WikipediaComponent
|
||||
from langflow.custom import Component
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from unittest.mock import MagicMock, patch
|
|||
|
||||
import pytest
|
||||
from langchain_core.tools import ToolException
|
||||
from langflow.components.search.yahoo import YahooFinanceMethod, YfinanceComponent
|
||||
from langflow.components.yahoosearch.yahoo import YahooFinanceMethod, YfinanceComponent
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
from langflow.schema import Data
|
||||
|
||||
|
|
@ -37,7 +37,7 @@ class TestYfinanceComponent:
|
|||
for input_name in expected_inputs:
|
||||
assert input_name in input_names
|
||||
|
||||
@patch("langflow.components.search.yahoo.yf.Ticker")
|
||||
@patch("langflow.components.yahoosearch.yahoo.yf.Ticker")
|
||||
def test_fetch_info(self, mock_ticker, component_class, default_kwargs):
|
||||
component = component_class(**default_kwargs)
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ class TestYfinanceComponent:
|
|||
assert len(result) == 1
|
||||
assert "Apple Inc." in result[0].text
|
||||
|
||||
@patch("langflow.components.search.yahoo.yf.Ticker")
|
||||
@patch("langflow.components.yahoosearch.yahoo.yf.Ticker")
|
||||
def test_fetch_news(self, mock_ticker, component_class):
|
||||
component = component_class(symbol="AAPL", method=YahooFinanceMethod.GET_NEWS, num_news=2)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from unittest.mock import MagicMock, patch
|
|||
|
||||
import pytest
|
||||
from langchain_core.tools import ToolException
|
||||
from langflow.components.search import SerpComponent
|
||||
from langflow.components.serpapi.serp import SerpComponent
|
||||
from langflow.custom import Component
|
||||
from langflow.custom.utils import build_custom_component_template
|
||||
from langflow.schema import Data
|
||||
|
|
@ -34,7 +34,7 @@ def test_serpapi_template():
|
|||
assert input_name in input_names
|
||||
|
||||
|
||||
@patch("langflow.components.search.serp.SerpAPIWrapper")
|
||||
@patch("langflow.components.serpapi.serp.SerpAPIWrapper")
|
||||
def test_fetch_content(mock_serpapi_wrapper):
|
||||
component = SerpComponent()
|
||||
component.serpapi_api_key = "test-key"
|
||||
|
|
@ -81,7 +81,7 @@ def test_error_handling():
|
|||
component.serpapi_api_key = "test-key"
|
||||
component.input_value = "test query"
|
||||
|
||||
with patch("langflow.components.search.serp.SerpAPIWrapper") as mock_serpapi:
|
||||
with patch("langflow.components.serpapi.serp.SerpAPIWrapper") as mock_serpapi:
|
||||
mock_instance = MagicMock()
|
||||
mock_serpapi.return_value = mock_instance
|
||||
mock_instance.results.side_effect = Exception("API Error")
|
||||
|
|
|
|||
|
|
@ -228,69 +228,87 @@ 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: "Memories", name: "memories", icon: "Cpu" },
|
||||
{ display_name: "AI/ML", name: "aiml", icon: "AI/ML" },
|
||||
{ display_name: "Anthropic", name: "anthropic", icon: "Anthropic" },
|
||||
{ display_name: "Amazon", name: "amazon", icon: "Amazon" },
|
||||
// Add apify
|
||||
{ display_name: "Apify", name: "apify", icon: "Apify" },
|
||||
{ display_name: "LangChain", name: "langchain_utilities", icon: "LangChain" },
|
||||
{ display_name: "AgentQL", name: "agentql", icon: "AgentQL" },
|
||||
{ display_name: "Amazon", name: "amazon", icon: "Amazon" },
|
||||
{ display_name: "Anthropic", name: "anthropic", icon: "Anthropic" },
|
||||
{ display_name: "Apify", name: "apify", icon: "Apify" },
|
||||
|
||||
{ display_name: "Arxiv", name: "arxiv", icon: "arXiv" },
|
||||
{ display_name: "AssemblyAI", name: "assemblyai", icon: "AssemblyAI" },
|
||||
{ display_name: "Azure", name: "azure", icon: "Azure" },
|
||||
{
|
||||
display_name: "DataStax",
|
||||
name: "datastax",
|
||||
icon: "AstraDB",
|
||||
},
|
||||
{ display_name: "Baidu", name: "baidu", icon: "BaiduQianfan" },
|
||||
{ display_name: "Bing", name: "bing", icon: "Bing" },
|
||||
{ display_name: "Cleanlab", name: "cleanlab", icon: "Cleanlab" },
|
||||
{ display_name: "Cloudflare", name: "cloudflare", icon: "Cloudflare" },
|
||||
{ display_name: "Cohere", name: "cohere", icon: "Cohere" },
|
||||
{ display_name: "Composio", name: "composio", icon: "Composio" },
|
||||
{ display_name: "Confluence", name: "confluence", icon: "Confluence" },
|
||||
{ display_name: "CrewAI", name: "crewai", icon: "CrewAI" },
|
||||
{ display_name: "DataStax", name: "datastax", icon: "AstraDB" },
|
||||
{ display_name: "DeepSeek", name: "deepseek", icon: "DeepSeek" },
|
||||
{ display_name: "Docling", name: "docling", icon: "Docling" },
|
||||
{ display_name: "Gmail", name: "gmail", icon: "Gmail" },
|
||||
{ display_name: "DuckDuckGo", name: "duckduckgo", icon: "DuckDuckGo" },
|
||||
{ display_name: "Embeddings", name: "embeddings", icon: "Binary" },
|
||||
{ display_name: "Exa", name: "exa", icon: "Exa" },
|
||||
{ display_name: "Firecrawl", name: "firecrawl", icon: "FirecrawlCrawlApi" },
|
||||
{ display_name: "Git", name: "git", icon: "GitLoader" },
|
||||
{ display_name: "GitHub", name: "github", icon: "Github" },
|
||||
{ display_name: "Glean", name: "glean", icon: "Glean" },
|
||||
{ display_name: "Gmail", name: "gmail", icon: "Gmail" },
|
||||
{ display_name: "Google", name: "google", icon: "Google" },
|
||||
{
|
||||
display_name: "Googlecalendar",
|
||||
name: "googlecalendar",
|
||||
icon: "Googlecalendar",
|
||||
},
|
||||
{ display_name: "HuggingFace", name: "huggingface", icon: "HuggingFace" },
|
||||
{ display_name: "IBM", name: "ibm", icon: "WatsonxAI" },
|
||||
{ display_name: "LangWatch", name: "langwatch", icon: "Langwatch" },
|
||||
{ display_name: "Olivya", name: "olivya", icon: "Olivya" },
|
||||
{ display_name: "Outlook", name: "outlook", icon: "Outlook" },
|
||||
{ display_name: "OpenAI", name: "openai", icon: "OpenAI" },
|
||||
{ display_name: "Notion", name: "Notion", icon: "Notion" },
|
||||
{ display_name: "Needle", name: "needle", icon: "Needle" },
|
||||
{ display_name: "NVIDIA", name: "nvidia", icon: "NVIDIA" },
|
||||
{ display_name: "Vectara", name: "vectara", icon: "Vectara" },
|
||||
{ display_name: "Icosa Computing", name: "icosacomputing", icon: "Icosa" },
|
||||
{ display_name: "Google", name: "google", icon: "Google" },
|
||||
{ display_name: "CrewAI", name: "crewai", icon: "CrewAI" },
|
||||
{ display_name: "NotDiamond", name: "notdiamond", icon: "NotDiamond" },
|
||||
{ display_name: "Composio", name: "composio", icon: "Composio" },
|
||||
{ display_name: "Cohere", name: "cohere", icon: "Cohere" },
|
||||
{ display_name: "Firecrawl", name: "firecrawl", icon: "FirecrawlCrawlApi" },
|
||||
{ display_name: "Unstructured", name: "unstructured", icon: "Unstructured" },
|
||||
{ display_name: "Git", name: "git", icon: "GitLoader" },
|
||||
{ display_name: "Confluence", name: "confluence", icon: "Confluence" },
|
||||
{ display_name: "Mem0", name: "mem0", icon: "Mem0" },
|
||||
{ display_name: "Youtube", name: "youtube", icon: "YouTube" },
|
||||
{ display_name: "ScrapeGraph AI", name: "scrapegraph", icon: "ScrapeGraph" },
|
||||
{ display_name: "Twelve Labs", name: "twelvelabs", icon: "TwelveLabs" },
|
||||
{ display_name: "Groq", name: "groq", icon: "Groq" },
|
||||
{
|
||||
display_name: "Home Assistant",
|
||||
name: "homeassistant",
|
||||
icon: "HomeAssistant",
|
||||
},
|
||||
{ display_name: "Cleanlab", name: "cleanlab", icon: "Cleanlab" },
|
||||
{ display_name: "Search", name: "search", icon: "Search" },
|
||||
{ display_name: "Tavily", name: "tavily", icon: "TavilyIcon" },
|
||||
{ display_name: "HuggingFace", name: "huggingface", icon: "HuggingFace" },
|
||||
{ display_name: "IBM", name: "ibm", icon: "WatsonxAI" },
|
||||
{ display_name: "Icosa Computing", name: "icosacomputing", icon: "Icosa" },
|
||||
{ display_name: "LangChain", name: "langchain_utilities", icon: "LangChain" },
|
||||
{ display_name: "LangWatch", name: "langwatch", icon: "Langwatch" },
|
||||
{ display_name: "LMStudio", name: "lmstudio", icon: "LMStudio" },
|
||||
{ display_name: "MariTalk", name: "maritalk", icon: "MariTalk" },
|
||||
{ display_name: "Mem0", name: "mem0", icon: "Mem0" },
|
||||
{ display_name: "Memories", name: "memories", icon: "Cpu" },
|
||||
{ display_name: "MistralAI", name: "mistral", icon: "MistralAI" },
|
||||
{ display_name: "Needle", name: "needle", icon: "Needle" },
|
||||
{ display_name: "NotDiamond", name: "notdiamond", icon: "NotDiamond" },
|
||||
{ display_name: "Notion", name: "Notion", icon: "Notion" },
|
||||
{ display_name: "Novita", name: "novita", icon: "Novita" },
|
||||
{ display_name: "NVIDIA", name: "nvidia", icon: "NVIDIA" },
|
||||
{ display_name: "Olivya", name: "olivya", icon: "Olivya" },
|
||||
{ display_name: "Ollama", name: "ollama", icon: "Ollama" },
|
||||
{ display_name: "OpenAI", name: "openai", icon: "OpenAI" },
|
||||
{ display_name: "OpenRouter", name: "openrouter", icon: "OpenRouter" },
|
||||
{ display_name: "Outlook", name: "outlook", icon: "Outlook" },
|
||||
{ display_name: "Perplexity", name: "perplexity", icon: "Perplexity" },
|
||||
{ display_name: "Redis", name: "redis", icon: "Redis" },
|
||||
{ display_name: "SambaNova", name: "sambanova", icon: "SambaNova" },
|
||||
{ display_name: "ScrapeGraph AI", name: "scrapegraph", icon: "ScrapeGraph" },
|
||||
{ display_name: "SearchAPI", name: "searchapi", icon: "SearchAPI" },
|
||||
{ display_name: "SerpApi", name: "serpapi", icon: "SerpSearch" },
|
||||
{ display_name: "Tavily", name: "tavily", icon: "TavilyIcon" },
|
||||
{ display_name: "Twelve Labs", name: "twelvelabs", icon: "TwelveLabs" },
|
||||
{ display_name: "Unstructured", name: "unstructured", icon: "Unstructured" },
|
||||
{ display_name: "Vectara", name: "vectara", icon: "Vectara" },
|
||||
{ display_name: "VertexAI", name: "vertexai", icon: "VertexAI" },
|
||||
{ display_name: "Wikipedia", name: "wikipedia", icon: "Wikipedia" },
|
||||
{
|
||||
display_name: "WolframAlpha",
|
||||
name: "wolframalpha",
|
||||
icon: "WolframAlphaAPI",
|
||||
},
|
||||
{ display_name: "xAI", name: "xai", icon: "xAI" },
|
||||
{ display_name: "YahooSearch", name: "yahoosearch", icon: "trending-up" },
|
||||
{ display_name: "Youtube", name: "youtube", icon: "YouTube" },
|
||||
{ display_name: "Zep", name: "zep", icon: "ZepMemory" },
|
||||
];
|
||||
|
||||
export const categoryIcons: Record<string, string> = {
|
||||
|
|
|
|||
|
|
@ -177,13 +177,14 @@ class CustomComponent(Component):
|
|||
const visibleTexts = ["Alpha", "Bravo", "Charlie", "Delta", "Echo"];
|
||||
const notVisibleTexts = ["X1", "thirdRandomText"];
|
||||
|
||||
await Promise.all(
|
||||
visibleTexts.map((text) => expect(page.getByText(text)).toBeVisible()),
|
||||
);
|
||||
await Promise.all(
|
||||
notVisibleTexts.map((text) =>
|
||||
expect(page.getByText(text)).not.toBeVisible(),
|
||||
),
|
||||
);
|
||||
for (const text of visibleTexts) {
|
||||
const count = await page.getByText(text).count();
|
||||
expect(count).toBeGreaterThanOrEqual(1);
|
||||
}
|
||||
|
||||
for (const text of notVisibleTexts) {
|
||||
const count = await page.getByText(text).count();
|
||||
expect(count).toBe(0);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ test(
|
|||
"vectorstoresAstra DB",
|
||||
"langchain_utilitiesTool Calling Agent",
|
||||
"langchain_utilitiesConversationChain",
|
||||
"memoriesMem0 Chat Memory",
|
||||
"mem0Mem0 Chat Memory",
|
||||
"logicCondition",
|
||||
"langchain_utilitiesSelf Query Retriever",
|
||||
"langchain_utilitiesCharacterTextSplitter",
|
||||
|
|
@ -101,15 +101,15 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
|
||||
const visibleModelSpecsTestIds = [
|
||||
"languagemodelsCohere",
|
||||
"languagemodelsGroq",
|
||||
"languagemodelsLM Studio",
|
||||
"languagemodelsMaritalk",
|
||||
"languagemodelsMistralAI",
|
||||
"languagemodelsPerplexity",
|
||||
"languagemodelsQianfan",
|
||||
"languagemodelsSambaNova",
|
||||
"languagemodelsxAI",
|
||||
"cohereCohere Language Models",
|
||||
"groqGroq",
|
||||
"lmstudioLM Studio",
|
||||
"maritalkMaritalk",
|
||||
"mistralMistralAI",
|
||||
"perplexityPerplexity",
|
||||
"baiduQianfan",
|
||||
"sambanovaSambaNova",
|
||||
"xaixAI",
|
||||
];
|
||||
|
||||
await Promise.all(
|
||||
|
|
|
|||
|
|
@ -11,12 +11,15 @@ test(
|
|||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("duck");
|
||||
|
||||
await page.waitForSelector('[data-testid="searchDuckDuckGo Search"]', {
|
||||
await page.waitForSelector(
|
||||
'[data-testid="disclosure-bundles-duckduckgo"]',
|
||||
{
|
||||
timeout: 3000,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
await page
|
||||
.getByTestId("searchDuckDuckGo Search")
|
||||
.getByTestId("duckduckgoDuckDuckGo Search")
|
||||
.hover()
|
||||
.then(async () => {
|
||||
await page
|
||||
|
|
|
|||
|
|
@ -49,14 +49,14 @@ test(
|
|||
|
||||
await page.getByTestId("sidebar-search-input").click();
|
||||
await page.getByTestId("sidebar-search-input").fill("search api");
|
||||
await page.waitForSelector('[data-testid="searchSearch API"]', {
|
||||
await page.waitForSelector('[data-testid="searchapiSearch API"]', {
|
||||
timeout: 1000,
|
||||
});
|
||||
|
||||
await zoomOut(page, 3);
|
||||
|
||||
await page
|
||||
.getByTestId("searchSearch API")
|
||||
.getByTestId("searchapiSearch API")
|
||||
.dragTo(page.locator('//*[@id="react-flow-id"]'), {
|
||||
targetPosition: { x: 100, y: 100 },
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue