fix: refactor bundle and component names (#9140)
* Changed Youtube to YouTube * Updated AIML to AI/ML API * Updated AI/ML Model name * Changed Anthropic description * updated arXiv name * Set Astra Vectorize as legacy * Updated get env var * Updates firecrawl names * Updated Icon for Google Gen AI embeddings * Add Space on Home Assistant * Updated Hugging Face name * Updated Maritalk Name * Updated Not Diamond name * Updated ScrapeGraph names * Changed SearchApi Name * Changed TwelveLabs naming * Updated AstraDB naming * Updated VertexAI naming * Updated Wolfram * Updated Yahoo naming * Updated Yahoo Finance name * Updated Yahoo Finance * [autofix.ci] apply automated fixes * Update google serper bundle * updated ai ml icon name * Updated maritalk * Changed ai ml api name * removed openai from base url * Revert components-bundles changes * revert changes on components-vector-stores * Revert changes on deployment-hugging-face-spaces * Revert changes on integrations-nvidia-ingest * Revert changes on release-notes * Update changes on sequential agent * [autofix.ci] apply automated fixes * fixed filterSidebar test * updated filter edge test * updated shard 11 test with new sidebar names --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
0ed47065f5
commit
169b687ed0
54 changed files with 415 additions and 741 deletions
|
|
@ -8,10 +8,10 @@ globs:
|
||||||
alwaysApply: false
|
alwaysApply: false
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
# Component Icon Rules
|
# Component Icon Rules
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
To ensure consistent, clear, and functional icon usage for components, covering both backend (Python) and frontend (React/TypeScript) steps.
|
To ensure consistent, clear, and functional icon usage for components, covering both backend (Python) and frontend (React/TypeScript) steps.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -36,17 +36,19 @@ To ensure consistent, clear, and functional icon usage for components, covering
|
||||||
- **Where:**
|
- **Where:**
|
||||||
In a new directory for your icon, e.g., `src/frontend/src/icons/AstraDB/`.
|
In a new directory for your icon, e.g., `src/frontend/src/icons/AstraDB/`.
|
||||||
- **How:**
|
- **How:**
|
||||||
|
|
||||||
- Add your SVG as a React component, e.g., `AstraSVG` in `AstraDB.jsx`.
|
- Add your SVG as a React component, e.g., `AstraSVG` in `AstraDB.jsx`.
|
||||||
```jsx
|
```jsx
|
||||||
const AstraSVG = (props) => (
|
const AstraSVG = (props) => (
|
||||||
<svg {...props}>
|
<svg {...props}>
|
||||||
<path
|
<path
|
||||||
// ...
|
// ...
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
- Create an `index.tsx` that exports your icon using `forwardRef`:
|
- Create an `index.tsx` that exports your icon using `forwardRef`:
|
||||||
|
|
||||||
```tsx
|
```tsx
|
||||||
import React, { forwardRef } from "react";
|
import React, { forwardRef } from "react";
|
||||||
import AstraSVG from "./AstraDB";
|
import AstraSVG from "./AstraDB";
|
||||||
|
|
@ -118,6 +120,7 @@ To ensure consistent, clear, and functional icon usage for components, covering
|
||||||
---
|
---
|
||||||
|
|
||||||
**Example for AstraDB:**
|
**Example for AstraDB:**
|
||||||
|
|
||||||
- Backend:
|
- Backend:
|
||||||
```python
|
```python
|
||||||
icon = "AstraDB"
|
icon = "AstraDB"
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,19 @@ from langchain_core.language_models.chat_models import BaseChatModel
|
||||||
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage, ToolCall
|
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage, ToolCall
|
||||||
from langchain_core.tools import BaseTool
|
from langchain_core.tools import BaseTool
|
||||||
|
|
||||||
# Import HuggingFace Model base
|
# Import Hugging Face Model base
|
||||||
from smolagents import Model, Tool
|
from smolagents import Model, Tool
|
||||||
from smolagents.models import ChatMessage, ChatMessageToolCall, ChatMessageToolCallDefinition
|
from smolagents.models import ChatMessage, ChatMessageToolCall, ChatMessageToolCallDefinition
|
||||||
|
|
||||||
|
|
||||||
def _lc_tool_call_to_hf_tool_call(tool_call: ToolCall) -> ChatMessageToolCall:
|
def _lc_tool_call_to_hf_tool_call(tool_call: ToolCall) -> ChatMessageToolCall:
|
||||||
"""Convert a LangChain ToolCall to a HuggingFace ChatMessageToolCall.
|
"""Convert a LangChain ToolCall to a Hugging Face ChatMessageToolCall.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
tool_call (ToolCall): LangChain tool call to convert
|
tool_call (ToolCall): LangChain tool call to convert
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
ChatMessageToolCall: Equivalent HuggingFace tool call
|
ChatMessageToolCall: Equivalent Hugging Face tool call
|
||||||
"""
|
"""
|
||||||
return ChatMessageToolCall(
|
return ChatMessageToolCall(
|
||||||
function=ChatMessageToolCallDefinition(name=tool_call.name, arguments=tool_call.args),
|
function=ChatMessageToolCallDefinition(name=tool_call.name, arguments=tool_call.args),
|
||||||
|
|
@ -24,24 +24,24 @@ def _lc_tool_call_to_hf_tool_call(tool_call: ToolCall) -> ChatMessageToolCall:
|
||||||
|
|
||||||
|
|
||||||
def _hf_tool_to_lc_tool(tool) -> BaseTool:
|
def _hf_tool_to_lc_tool(tool) -> BaseTool:
|
||||||
"""Convert a HuggingFace Tool to a LangChain BaseTool.
|
"""Convert a Hugging Face Tool to a LangChain BaseTool.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
tool (Tool): HuggingFace tool to convert
|
tool (Tool): Hugging Face tool to convert
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
BaseTool: Equivalent LangChain tool
|
BaseTool: Equivalent LangChain tool
|
||||||
"""
|
"""
|
||||||
if not hasattr(tool, "langchain_tool"):
|
if not hasattr(tool, "langchain_tool"):
|
||||||
msg = "HuggingFace Tool does not have a langchain_tool attribute"
|
msg = "Hugging Face Tool does not have a langchain_tool attribute"
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
return tool.langchain_tool
|
return tool.langchain_tool
|
||||||
|
|
||||||
|
|
||||||
class LangChainHFModel(Model):
|
class LangChainHFModel(Model):
|
||||||
"""A class bridging HuggingFace's `Model` interface with a LangChain `BaseChatModel`.
|
"""A class bridging Hugging Face's `Model` interface with a LangChain `BaseChatModel`.
|
||||||
|
|
||||||
This adapter allows using any LangChain chat model with the HuggingFace interface.
|
This adapter allows using any LangChain chat model with the Hugging Face interface.
|
||||||
It handles conversion of message formats and tool calls between the two frameworks.
|
It handles conversion of message formats and tool calls between the two frameworks.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
|
|
@ -68,7 +68,7 @@ class LangChainHFModel(Model):
|
||||||
tools_to_call_from: list[Tool] | None = None,
|
tools_to_call_from: list[Tool] | None = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) -> ChatMessage:
|
) -> ChatMessage:
|
||||||
"""Process messages through the LangChain model and return HuggingFace format.
|
"""Process messages through the LangChain model and return Hugging Face format.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
messages: List of message dictionaries with 'role' and 'content' keys
|
messages: List of message dictionaries with 'role' and 'content' keys
|
||||||
|
|
@ -78,7 +78,7 @@ class LangChainHFModel(Model):
|
||||||
**kwargs: Additional arguments passed to the LangChain model
|
**kwargs: Additional arguments passed to the LangChain model
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
ChatMessage: Response in HuggingFace format
|
ChatMessage: Response in Hugging Face format
|
||||||
"""
|
"""
|
||||||
if grammar:
|
if grammar:
|
||||||
msg = "Grammar is not yet supported."
|
msg = "Grammar is not yet supported."
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,10 @@ class AimlModels:
|
||||||
response = client.get("https://api.aimlapi.com/models")
|
response = client.get("https://api.aimlapi.com/models")
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
except httpx.RequestError as e:
|
except httpx.RequestError as e:
|
||||||
msg = "Failed to connect to the AIML API."
|
msg = "Failed to connect to the AI/ML API."
|
||||||
raise APIConnectionError(msg) from e
|
raise APIConnectionError(msg) from e
|
||||||
except httpx.HTTPStatusError as e:
|
except httpx.HTTPStatusError as e:
|
||||||
msg = f"AIML API responded with status code: {e.response.status_code}"
|
msg = f"AI/ML API responded with status code: {e.response.status_code}"
|
||||||
raise APIError(
|
raise APIError(
|
||||||
message=msg,
|
message=msg,
|
||||||
body=None,
|
body=None,
|
||||||
|
|
@ -31,7 +31,7 @@ class AimlModels:
|
||||||
models = response.json().get("data", [])
|
models = response.json().get("data", [])
|
||||||
self.separate_models_by_type(models)
|
self.separate_models_by_type(models)
|
||||||
except (ValueError, KeyError, TypeError) as e:
|
except (ValueError, KeyError, TypeError) as e:
|
||||||
msg = "Failed to parse response data from AIML API. The format may be incorrect."
|
msg = "Failed to parse response data from AI/ML API. The format may be incorrect."
|
||||||
raise ValueError(msg) from e
|
raise ValueError(msg) from e
|
||||||
|
|
||||||
def separate_models_by_type(self, models):
|
def separate_models_by_type(self, models):
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ GROQ_MODELS_DETAILED = [
|
||||||
create_model_metadata( # OpenAI
|
create_model_metadata( # OpenAI
|
||||||
provider="Groq", name="whisper-large-v3-turbo", icon="Groq", not_supported=True
|
provider="Groq", name="whisper-large-v3-turbo", icon="Groq", not_supported=True
|
||||||
),
|
),
|
||||||
create_model_metadata( # HuggingFace
|
create_model_metadata( # Hugging Face
|
||||||
provider="Groq", name="distil-whisper-large-v3-en", icon="Groq", not_supported=True
|
provider="Groq", name="distil-whisper-large-v3-en", icon="Groq", not_supported=True
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ from langflow.inputs.inputs import (
|
||||||
|
|
||||||
|
|
||||||
class AIMLModelComponent(LCModelComponent):
|
class AIMLModelComponent(LCModelComponent):
|
||||||
display_name = "AIML"
|
display_name = "AI/ML API"
|
||||||
description = "Generates text using AIML LLMs."
|
description = "Generates text using AI/ML API LLMs."
|
||||||
icon = "AIML"
|
icon = "AIML"
|
||||||
name = "AIMLModel"
|
name = "AIMLModel"
|
||||||
documentation = "https://docs.aimlapi.com/api-reference"
|
documentation = "https://docs.aimlapi.com/api-reference"
|
||||||
|
|
@ -42,15 +42,15 @@ class AIMLModelComponent(LCModelComponent):
|
||||||
),
|
),
|
||||||
StrInput(
|
StrInput(
|
||||||
name="aiml_api_base",
|
name="aiml_api_base",
|
||||||
display_name="AIML API Base",
|
display_name="AI/ML API Base",
|
||||||
advanced=True,
|
advanced=True,
|
||||||
info="The base URL of the OpenAI API. Defaults to https://api.aimlapi.com . "
|
info="The base URL of the API. Defaults to https://api.aimlapi.com . "
|
||||||
"You can change this to use other APIs like JinaChat, LocalAI and Prem.",
|
"You can change this to use other APIs like JinaChat, LocalAI and Prem.",
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="api_key",
|
name="api_key",
|
||||||
display_name="AIML API Key",
|
display_name="AI/ML API Key",
|
||||||
info="The AIML API Key to use for the OpenAI model.",
|
info="The AI/ML API Key to use for the OpenAI model.",
|
||||||
advanced=False,
|
advanced=False,
|
||||||
value="AIML_API_KEY",
|
value="AIML_API_KEY",
|
||||||
required=True,
|
required=True,
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ from langflow.io import SecretStrInput
|
||||||
|
|
||||||
|
|
||||||
class AIMLEmbeddingsComponent(LCEmbeddingsModel):
|
class AIMLEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
display_name = "AI/ML Embeddings"
|
display_name = "AI/ML API Embeddings"
|
||||||
description = "Generate embeddings using the AI/ML API."
|
description = "Generate embeddings using the AI/ML API."
|
||||||
icon = "AI/ML"
|
icon = "AIML"
|
||||||
name = "AIMLEmbeddings"
|
name = "AIMLEmbeddings"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ from langflow.schema.dotdict import dotdict
|
||||||
|
|
||||||
class AnthropicModelComponent(LCModelComponent):
|
class AnthropicModelComponent(LCModelComponent):
|
||||||
display_name = "Anthropic"
|
display_name = "Anthropic"
|
||||||
description = "Generate text using Anthropic Chat&Completion LLMs with prefill support."
|
description = "Generate text using Anthropic's Messages API and models."
|
||||||
icon = "Anthropic"
|
icon = "Anthropic"
|
||||||
name = "AnthropicModel"
|
name = "AnthropicModel"
|
||||||
|
|
||||||
|
|
@ -74,9 +74,6 @@ class AnthropicModelComponent(LCModelComponent):
|
||||||
value=False,
|
value=False,
|
||||||
real_time_refresh=True,
|
real_time_refresh=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
|
||||||
name="prefill", display_name="Prefill", info="Prefill text to guide the model's response.", advanced=True
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ class AstraVectorizeComponent(Component):
|
||||||
"This component is deprecated. Please use the Astra DB Component directly."
|
"This component is deprecated. Please use the Astra DB Component directly."
|
||||||
)
|
)
|
||||||
documentation: str = "https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html"
|
documentation: str = "https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html"
|
||||||
|
legacy = True
|
||||||
icon = "AstraDB"
|
icon = "AstraDB"
|
||||||
name = "AstraVectorize"
|
name = "AstraVectorize"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,7 @@ class AstraDBCQLToolComponent(LCToolComponent):
|
||||||
name (str, optional): The name of the tool.
|
name (str, optional): The name of the tool.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Tool: The built AstraDB tool.
|
Tool: The built Astra DB tool.
|
||||||
"""
|
"""
|
||||||
schema_dict = self.create_args_schema()
|
schema_dict = self.create_args_schema()
|
||||||
return StructuredTool.from_function(
|
return StructuredTool.from_function(
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,7 @@ class AstraDBToolComponent(LCToolComponent):
|
||||||
return tool
|
return tool
|
||||||
|
|
||||||
def projection_args(self, input_str: str) -> dict | None:
|
def projection_args(self, input_str: str) -> dict | None:
|
||||||
"""Build the projection arguments for the AstraDB query."""
|
"""Build the projection arguments for the Astra DB query."""
|
||||||
elements = input_str.split(",")
|
elements = input_str.split(",")
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
|
|
@ -329,7 +329,7 @@ class AstraDBToolComponent(LCToolComponent):
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
|
||||||
def build_filter(self, args: dict, filter_settings: list) -> dict:
|
def build_filter(self, args: dict, filter_settings: list) -> dict:
|
||||||
"""Build filter dictionary for AstraDB query.
|
"""Build filter dictionary for Astra DB query.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
args: Dictionary of arguments from the tool
|
args: Dictionary of arguments from the tool
|
||||||
|
|
@ -370,7 +370,7 @@ class AstraDBToolComponent(LCToolComponent):
|
||||||
return filters
|
return filters
|
||||||
|
|
||||||
def run_model(self, **args) -> Data | list[Data]:
|
def run_model(self, **args) -> Data | list[Data]:
|
||||||
"""Run the query to get the data from the AstraDB collection."""
|
"""Run the query to get the data from the Astra DB collection."""
|
||||||
collection = self._build_collection()
|
collection = self._build_collection()
|
||||||
sort = {}
|
sort = {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,28 +13,28 @@ class CassandraChatMemory(LCChatMemoryComponent):
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="database_ref",
|
name="database_ref",
|
||||||
display_name="Contact Points / Astra Database ID",
|
display_name="Contact Points / Astra Database ID",
|
||||||
info="Contact points for the database (or AstraDB database ID)",
|
info="Contact points for the database (or Astra DB database ID)",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="username", display_name="Username", info="Username for the database (leave empty for AstraDB)."
|
name="username", display_name="Username", info="Username for the database (leave empty for Astra DB)."
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="token",
|
name="token",
|
||||||
display_name="Password / AstraDB Token",
|
display_name="Password / Astra DB Token",
|
||||||
info="User password for the database (or AstraDB token).",
|
info="User password for the database (or Astra DB token).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="keyspace",
|
name="keyspace",
|
||||||
display_name="Keyspace",
|
display_name="Keyspace",
|
||||||
info="Table Keyspace (or AstraDB namespace).",
|
info="Table Keyspace (or Astra DB namespace).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="table_name",
|
name="table_name",
|
||||||
display_name="Table Name",
|
display_name="Table Name",
|
||||||
info="The name of the table (or AstraDB collection) where vectors will be stored.",
|
info="The name of the table (or Astra DB collection) where vectors will be stored.",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
|
|
|
||||||
|
|
@ -7,20 +7,20 @@ from langflow.template.field.base import Output
|
||||||
|
|
||||||
|
|
||||||
class GetEnvVar(Component):
|
class GetEnvVar(Component):
|
||||||
display_name = "Get env var"
|
display_name = "Get Environment Variable"
|
||||||
description = "Get env var"
|
description = "Gets the value of an environment variable from the system."
|
||||||
icon = "AstraDB"
|
icon = "AstraDB"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
StrInput(
|
StrInput(
|
||||||
name="env_var_name",
|
name="env_var_name",
|
||||||
display_name="Env var name",
|
display_name="Environment Variable Name",
|
||||||
info="Name of the environment variable to get",
|
info="Name of the environment variable to get",
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
Output(display_name="Env var value", name="env_var_value", method="process_inputs"),
|
Output(display_name="Environment Variable Value", name="env_var_value", method="process_inputs"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def process_inputs(self) -> Message:
|
def process_inputs(self) -> Message:
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class FirecrawlCrawlApi(Component):
|
class FirecrawlCrawlApi(Component):
|
||||||
display_name: str = "FirecrawlCrawlApi"
|
display_name: str = "Firecrawl Crawl API"
|
||||||
description: str = "Firecrawl Crawl API."
|
description: str = "Crawls a URL and returns the results."
|
||||||
name = "FirecrawlCrawlApi"
|
name = "FirecrawlCrawlApi"
|
||||||
|
|
||||||
documentation: str = "https://docs.firecrawl.dev/v1/api-reference/endpoint/crawl-post"
|
documentation: str = "https://docs.firecrawl.dev/v1/api-reference/endpoint/crawl-post"
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class FirecrawlExtractApi(Component):
|
class FirecrawlExtractApi(Component):
|
||||||
display_name: str = "FirecrawlExtractApi"
|
display_name: str = "Firecrawl Extract API"
|
||||||
description: str = "Firecrawl Extract API."
|
description: str = "Extracts data from a URL."
|
||||||
name = "FirecrawlExtractApi"
|
name = "FirecrawlExtractApi"
|
||||||
|
|
||||||
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/extract"
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/extract"
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class FirecrawlMapApi(Component):
|
class FirecrawlMapApi(Component):
|
||||||
display_name: str = "FirecrawlMapApi"
|
display_name: str = "Firecrawl Map API"
|
||||||
description: str = "Firecrawl Map API."
|
description: str = "Maps a URL and returns the results."
|
||||||
name = "FirecrawlMapApi"
|
name = "FirecrawlMapApi"
|
||||||
|
|
||||||
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/map"
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/map"
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class FirecrawlScrapeApi(Component):
|
class FirecrawlScrapeApi(Component):
|
||||||
display_name: str = "FirecrawlScrapeApi"
|
display_name: str = "Firecrawl Scrape API"
|
||||||
description: str = "Firecrawl Scrape API."
|
description: str = "Scrapes a URL and returns the results."
|
||||||
name = "FirecrawlScrapeApi"
|
name = "FirecrawlScrapeApi"
|
||||||
|
|
||||||
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/scrape"
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/scrape"
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ class GoogleGenerativeAIEmbeddingsComponent(Component):
|
||||||
"found in the langchain-google-genai package."
|
"found in the langchain-google-genai package."
|
||||||
)
|
)
|
||||||
documentation: str = "https://python.langchain.com/v0.2/docs/integrations/text_embedding/google_generative_ai/"
|
documentation: str = "https://python.langchain.com/v0.2/docs/integrations/text_embedding/google_generative_ai/"
|
||||||
icon = "Google"
|
icon = "GoogleGenerativeAI"
|
||||||
name = "Google Generative AI Embeddings"
|
name = "Google Generative AI Embeddings"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class ListHomeAssistantStates(LCToolComponent):
|
class ListHomeAssistantStates(LCToolComponent):
|
||||||
display_name: str = "List HomeAssistant States"
|
display_name: str = "List Home Assistant States"
|
||||||
description: str = (
|
description: str = (
|
||||||
"Retrieve states from Home Assistant. "
|
"Retrieve states from Home Assistant. "
|
||||||
"The agent only needs to specify 'filter_domain' (optional). "
|
"The agent only needs to specify 'filter_domain' (optional). "
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ DEFAULT_MODEL = "meta-llama/Llama-3.3-70B-Instruct"
|
||||||
|
|
||||||
|
|
||||||
class HuggingFaceEndpointsComponent(LCModelComponent):
|
class HuggingFaceEndpointsComponent(LCModelComponent):
|
||||||
display_name: str = "HuggingFace"
|
display_name: str = "Hugging Face"
|
||||||
description: str = "Generate text using Hugging Face Inference APIs."
|
description: str = "Generate text using Hugging Face Inference APIs."
|
||||||
icon = "HuggingFace"
|
icon = "HuggingFace"
|
||||||
name = "HuggingFaceModel"
|
name = "HuggingFaceModel"
|
||||||
|
|
@ -26,7 +26,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
name="model_id",
|
name="model_id",
|
||||||
display_name="Model ID",
|
display_name="Model ID",
|
||||||
info="Select a model from HuggingFace Hub",
|
info="Select a model from Hugging Face Hub",
|
||||||
options=[
|
options=[
|
||||||
DEFAULT_MODEL,
|
DEFAULT_MODEL,
|
||||||
"mistralai/Mixtral-8x7B-Instruct-v0.1",
|
"mistralai/Mixtral-8x7B-Instruct-v0.1",
|
||||||
|
|
@ -44,7 +44,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
||||||
StrInput(
|
StrInput(
|
||||||
name="custom_model",
|
name="custom_model",
|
||||||
display_name="Custom Model ID",
|
display_name="Custom Model ID",
|
||||||
info="Enter a custom model ID from HuggingFace Hub",
|
info="Enter a custom model ID from Hugging Face Hub",
|
||||||
value="",
|
value="",
|
||||||
show=False,
|
show=False,
|
||||||
required=True,
|
required=True,
|
||||||
|
|
@ -191,7 +191,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
||||||
repetition_penalty=repetition_penalty,
|
repetition_penalty=repetition_penalty,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
msg = "Could not connect to HuggingFace Endpoints API."
|
msg = "Could not connect to Hugging Face Endpoints API."
|
||||||
raise ValueError(msg) from e
|
raise ValueError(msg) from e
|
||||||
|
|
||||||
return llm
|
return llm
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ from langflow.io import MessageTextInput, Output, SecretStrInput
|
||||||
|
|
||||||
|
|
||||||
class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
display_name = "HuggingFace Embeddings Inference"
|
display_name = "Hugging Face Embeddings Inference"
|
||||||
description = "Generate embeddings using HuggingFace Text Embeddings Inference (TEI)"
|
description = "Generate embeddings using Hugging Face Text Embeddings Inference (TEI)"
|
||||||
documentation = "https://huggingface.co/docs/text-embeddings-inference/index"
|
documentation = "https://huggingface.co/docs/text-embeddings-inference/index"
|
||||||
icon = "HuggingFace"
|
icon = "HuggingFace"
|
||||||
name = "HuggingFaceInferenceAPIEmbeddings"
|
name = "HuggingFaceInferenceAPIEmbeddings"
|
||||||
|
|
@ -66,7 +66,7 @@ class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
raise ValueError(msg) from e
|
raise ValueError(msg) from e
|
||||||
|
|
||||||
if response.status_code != requests.codes.ok:
|
if response.status_code != requests.codes.ok:
|
||||||
msg = f"HuggingFace health check failed: {response.status_code}"
|
msg = f"Hugging Face health check failed: {response.status_code}"
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
# returning True to solve linting error
|
# returning True to solve linting error
|
||||||
return True
|
return True
|
||||||
|
|
@ -102,5 +102,5 @@ class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
try:
|
try:
|
||||||
return self.create_huggingface_embeddings(api_key, api_url, self.model_name)
|
return self.create_huggingface_embeddings(api_key, api_url, self.model_name)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
msg = "Could not connect to HuggingFace Inference API."
|
msg = "Could not connect to Hugging Face Inference API."
|
||||||
raise ValueError(msg) from e
|
raise ValueError(msg) from e
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from langflow.utils.util import unescape_string
|
||||||
|
|
||||||
|
|
||||||
class CharacterTextSplitterComponent(LCTextSplitterComponent):
|
class CharacterTextSplitterComponent(LCTextSplitterComponent):
|
||||||
display_name = "CharacterTextSplitter"
|
display_name = "Character Text Splitter"
|
||||||
description = "Split text by number of characters."
|
description = "Split text by number of characters."
|
||||||
documentation = "https://docs.langflow.org/components/text-splitters#charactertextsplitter"
|
documentation = "https://docs.langflow.org/components/text-splitters#charactertextsplitter"
|
||||||
name = "CharacterTextSplitter"
|
name = "CharacterTextSplitter"
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ from langflow.template.field.base import Output
|
||||||
|
|
||||||
|
|
||||||
class CSVAgentComponent(LCAgentComponent):
|
class CSVAgentComponent(LCAgentComponent):
|
||||||
display_name = "CSVAgent"
|
display_name = "CSV Agent"
|
||||||
description = "Construct a CSV agent from a CSV and tools."
|
description = "Construct a CSV agent from a CSV and tools."
|
||||||
documentation = "https://python.langchain.com/docs/modules/agents/toolkits/csv"
|
documentation = "https://python.langchain.com/docs/modules/agents/toolkits/csv"
|
||||||
name = "CSVAgent"
|
name = "CSVAgent"
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ from langflow.inputs.inputs import DropdownInput, FloatInput, IntInput, SecretSt
|
||||||
|
|
||||||
|
|
||||||
class MaritalkModelComponent(LCModelComponent):
|
class MaritalkModelComponent(LCModelComponent):
|
||||||
display_name = "Maritalk"
|
display_name = "MariTalk"
|
||||||
description = "Generates text using Maritalk LLMs."
|
description = "Generates text using MariTalk LLMs."
|
||||||
icon = "Maritalk"
|
icon = "Maritalk"
|
||||||
name = "Maritalk"
|
name = "Maritalk"
|
||||||
inputs = [
|
inputs = [
|
||||||
|
|
@ -29,8 +29,8 @@ class MaritalkModelComponent(LCModelComponent):
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="api_key",
|
name="api_key",
|
||||||
display_name="Maritalk API Key",
|
display_name="MariTalk API Key",
|
||||||
info="The Maritalk API Key to use for the OpenAI model.",
|
info="The MariTalk API Key to use for authentication.",
|
||||||
advanced=False,
|
advanced=False,
|
||||||
),
|
),
|
||||||
FloatInput(name="temperature", display_name="Temperature", value=0.1, range_spec=RangeSpec(min=0, max=1)),
|
FloatInput(name="temperature", display_name="Temperature", value=0.1, range_spec=RangeSpec(min=0, max=1)),
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,12 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class ScrapeGraphMarkdownifyApi(Component):
|
class ScrapeGraphMarkdownifyApi(Component):
|
||||||
display_name: str = "ScrapeGraphMarkdownifyApi"
|
display_name: str = "ScrapeGraph Markdownify API"
|
||||||
description: str = """ScrapeGraph Markdownify API.
|
description: str = "Given a URL, it will return the markdownified content of the website."
|
||||||
Given a URL, it will return the markdownified content of the website.
|
|
||||||
More info at https://docs.scrapegraphai.com/services/markdownify"""
|
|
||||||
name = "ScrapeGraphMarkdownifyApi"
|
name = "ScrapeGraphMarkdownifyApi"
|
||||||
|
|
||||||
output_types: list[str] = ["Document"]
|
output_types: list[str] = ["Document"]
|
||||||
documentation: str = "https://docs.scrapegraphai.com/introduction"
|
documentation: str = "https://docs.scrapegraphai.com/services/markdownify"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,11 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class ScrapeGraphSearchApi(Component):
|
class ScrapeGraphSearchApi(Component):
|
||||||
display_name: str = "ScrapeGraphSearchApi"
|
display_name: str = "ScrapeGraph Search API"
|
||||||
description: str = """ScrapeGraph Search API.
|
description: str = "Given a search prompt, it will return search results using ScrapeGraph's search functionality."
|
||||||
Given a search prompt, it will return search results using ScrapeGraph's search functionality.
|
|
||||||
More info at https://docs.scrapegraphai.com/services/searchscraper"""
|
|
||||||
name = "ScrapeGraphSearchApi"
|
name = "ScrapeGraphSearchApi"
|
||||||
|
|
||||||
documentation: str = "https://docs.scrapegraphai.com/introduction"
|
documentation: str = "https://docs.scrapegraphai.com/services/searchscraper"
|
||||||
icon = "ScrapeGraph"
|
icon = "ScrapeGraph"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,12 @@ from langflow.schema.data import Data
|
||||||
|
|
||||||
|
|
||||||
class ScrapeGraphSmartScraperApi(Component):
|
class ScrapeGraphSmartScraperApi(Component):
|
||||||
display_name: str = "ScrapeGraphSmartScraperApi"
|
display_name: str = "ScrapeGraph Smart Scraper API"
|
||||||
description: str = """ScrapeGraph Smart Scraper API.
|
description: str = "Given a URL, it will return the structured data of the website."
|
||||||
Given a URL, it will return the structured data of the website.
|
|
||||||
More info at https://docs.scrapegraphai.com/services/smartscraper"""
|
|
||||||
name = "ScrapeGraphSmartScraperApi"
|
name = "ScrapeGraphSmartScraperApi"
|
||||||
|
|
||||||
output_types: list[str] = ["Document"]
|
output_types: list[str] = ["Document"]
|
||||||
documentation: str = "https://docs.scrapegraphai.com/introduction"
|
documentation: str = "https://docs.scrapegraphai.com/services/smartscraper"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ from langflow.schema.dataframe import DataFrame
|
||||||
|
|
||||||
|
|
||||||
class SearchComponent(Component):
|
class SearchComponent(Component):
|
||||||
display_name: str = "Search API"
|
display_name: str = "SearchApi"
|
||||||
description: str = "Call the searchapi.io API with result limiting"
|
description: str = "Calls the SearchApi API with result limiting. Supports Google, Bing and DuckDuckGo."
|
||||||
documentation: str = "https://www.searchapi.io/docs/google"
|
documentation: str = "https://www.searchapi.io/docs/google"
|
||||||
icon = "SearchAPI"
|
icon = "SearchAPI"
|
||||||
|
|
||||||
|
|
|
||||||
3
src/backend/base/langflow/components/serper/__init__.py
Normal file
3
src/backend/base/langflow/components/serper/__init__.py
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
from .google_serper_api_core import GoogleSerperAPICore
|
||||||
|
|
||||||
|
__all__ = ["GoogleSerperAPICore"]
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
from langchain_community.utilities.google_serper import GoogleSerperAPIWrapper
|
||||||
|
|
||||||
|
from langflow.custom.custom_component.component import Component
|
||||||
|
from langflow.io import IntInput, MultilineInput, Output, SecretStrInput
|
||||||
|
from langflow.schema.dataframe import DataFrame
|
||||||
|
from langflow.schema.message import Message
|
||||||
|
|
||||||
|
|
||||||
|
class GoogleSerperAPICore(Component):
|
||||||
|
display_name = "Serper Google Search API"
|
||||||
|
description = "Calls the Serper.dev Google Search API and fetches the results."
|
||||||
|
icon = "Serper"
|
||||||
|
|
||||||
|
inputs = [
|
||||||
|
SecretStrInput(
|
||||||
|
name="serper_api_key",
|
||||||
|
display_name="Serper API Key",
|
||||||
|
required=True,
|
||||||
|
),
|
||||||
|
MultilineInput(
|
||||||
|
name="input_value",
|
||||||
|
display_name="Input",
|
||||||
|
tool_mode=True,
|
||||||
|
),
|
||||||
|
IntInput(
|
||||||
|
name="k",
|
||||||
|
display_name="Number of results",
|
||||||
|
value=4,
|
||||||
|
required=True,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
Output(
|
||||||
|
display_name="Results",
|
||||||
|
name="results",
|
||||||
|
type_=DataFrame,
|
||||||
|
method="search_serper",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
def search_serper(self) -> DataFrame:
|
||||||
|
try:
|
||||||
|
wrapper = self._build_wrapper()
|
||||||
|
results = wrapper.results(query=self.input_value)
|
||||||
|
list_results = results.get("organic", [])
|
||||||
|
|
||||||
|
# Convert results to DataFrame using list comprehension
|
||||||
|
df_data = [
|
||||||
|
{
|
||||||
|
"title": result.get("title", ""),
|
||||||
|
"link": result.get("link", ""),
|
||||||
|
"snippet": result.get("snippet", ""),
|
||||||
|
}
|
||||||
|
for result in list_results
|
||||||
|
]
|
||||||
|
|
||||||
|
return DataFrame(df_data)
|
||||||
|
except (ValueError, KeyError, ConnectionError) as e:
|
||||||
|
error_message = f"Error occurred while searching: {e!s}"
|
||||||
|
self.status = error_message
|
||||||
|
# Return DataFrame with error as a list of dictionaries
|
||||||
|
return DataFrame([{"error": error_message}])
|
||||||
|
|
||||||
|
def text_search_serper(self) -> Message:
|
||||||
|
search_results = self.search_serper()
|
||||||
|
text_result = search_results.to_string(index=False) if not search_results.empty else "No results found."
|
||||||
|
return Message(text=text_result)
|
||||||
|
|
||||||
|
def _build_wrapper(self):
|
||||||
|
return GoogleSerperAPIWrapper(serper_api_key=self.serper_api_key, k=self.k)
|
||||||
|
|
||||||
|
def build(self):
|
||||||
|
return self.search_serper
|
||||||
|
|
@ -49,9 +49,9 @@ class YahooFinanceSchema(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class YfinanceToolComponent(LCToolComponent):
|
class YfinanceToolComponent(LCToolComponent):
|
||||||
display_name = "Yahoo Finance [DEPRECATED]"
|
display_name = "Yahoo! Finance [DEPRECATED]"
|
||||||
description = """Uses [yfinance](https://pypi.org/project/yfinance/) (unofficial package) \
|
description = """Uses [yfinance](https://pypi.org/project/yfinance/) (unofficial package) \
|
||||||
to access financial data and market information from Yahoo Finance."""
|
to access financial data and market information from Yahoo! Finance."""
|
||||||
icon = "trending-up"
|
icon = "trending-up"
|
||||||
name = "YahooFinanceTool"
|
name = "YahooFinanceTool"
|
||||||
legacy = True
|
legacy = True
|
||||||
|
|
@ -87,7 +87,7 @@ to access financial data and market information from Yahoo Finance."""
|
||||||
def build_tool(self) -> Tool:
|
def build_tool(self) -> Tool:
|
||||||
return StructuredTool.from_function(
|
return StructuredTool.from_function(
|
||||||
name="yahoo_finance",
|
name="yahoo_finance",
|
||||||
description="Access financial data and market information from Yahoo Finance.",
|
description="Access financial data and market information from Yahoo! Finance.",
|
||||||
func=self._yahoo_finance_tool,
|
func=self._yahoo_finance_tool,
|
||||||
args_schema=YahooFinanceSchema,
|
args_schema=YahooFinanceSchema,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@ from langflow.schema.message import Message
|
||||||
|
|
||||||
|
|
||||||
class ConvertAstraToTwelveLabs(Component):
|
class ConvertAstraToTwelveLabs(Component):
|
||||||
"""Convert AstraDB search results to TwelveLabs Pegasus inputs."""
|
"""Convert Astra DB search results to TwelveLabs Pegasus inputs."""
|
||||||
|
|
||||||
display_name = "Convert AstraDB to Pegasus Input"
|
display_name = "Convert Astra DB to Pegasus Input"
|
||||||
description = "Converts AstraDB search results to inputs compatible with TwelveLabs Pegasus."
|
description = "Converts Astra DB search results to inputs compatible with TwelveLabs Pegasus."
|
||||||
icon = "TwelveLabs"
|
icon = "TwelveLabs"
|
||||||
name = "ConvertAstraToTwelveLabs"
|
name = "ConvertAstraToTwelveLabs"
|
||||||
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
||||||
|
|
@ -18,9 +18,9 @@ class ConvertAstraToTwelveLabs(Component):
|
||||||
inputs = [
|
inputs = [
|
||||||
HandleInput(
|
HandleInput(
|
||||||
name="astra_results",
|
name="astra_results",
|
||||||
display_name="AstraDB Results",
|
display_name="Astra DB Results",
|
||||||
input_types=["Data"],
|
input_types=["Data"],
|
||||||
info="Search results from AstraDB component",
|
info="Search results from Astra DB component",
|
||||||
required=True,
|
required=True,
|
||||||
is_list=True,
|
is_list=True,
|
||||||
)
|
)
|
||||||
|
|
@ -47,7 +47,7 @@ class ConvertAstraToTwelveLabs(Component):
|
||||||
self._index_id = None
|
self._index_id = None
|
||||||
|
|
||||||
def build(self, **kwargs: Any) -> None: # noqa: ARG002 - Required for parent class compatibility
|
def build(self, **kwargs: Any) -> None: # noqa: ARG002 - Required for parent class compatibility
|
||||||
"""Process the AstraDB results and extract TwelveLabs index information."""
|
"""Process the Astra DB results and extract TwelveLabs index information."""
|
||||||
if not self.astra_results:
|
if not self.astra_results:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from langflow.schema import Data
|
||||||
|
|
||||||
|
|
||||||
class TwelveLabsError(Exception):
|
class TwelveLabsError(Exception):
|
||||||
"""Base exception for Twelve Labs errors."""
|
"""Base exception for TwelveLabs errors."""
|
||||||
|
|
||||||
|
|
||||||
class IndexCreationError(TwelveLabsError):
|
class IndexCreationError(TwelveLabsError):
|
||||||
|
|
@ -29,10 +29,10 @@ class TaskTimeoutError(TwelveLabsError):
|
||||||
|
|
||||||
|
|
||||||
class PegasusIndexVideo(Component):
|
class PegasusIndexVideo(Component):
|
||||||
"""Indexes videos using Twelve Labs Pegasus API and adds the video ID to metadata."""
|
"""Indexes videos using TwelveLabs Pegasus API and adds the video ID to metadata."""
|
||||||
|
|
||||||
display_name = "Twelve Labs Pegasus Index Video"
|
display_name = "TwelveLabs Pegasus Index Video"
|
||||||
description = "Index videos using Twelve Labs and add the video_id to metadata."
|
description = "Index videos using TwelveLabs and add the video_id to metadata."
|
||||||
icon = "TwelveLabs"
|
icon = "TwelveLabs"
|
||||||
name = "TwelveLabsPegasusIndexVideo"
|
name = "TwelveLabsPegasusIndexVideo"
|
||||||
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
||||||
|
|
@ -46,7 +46,7 @@ class PegasusIndexVideo(Component):
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="api_key", display_name="Twelve Labs API Key", info="Enter your Twelve Labs API Key.", required=True
|
name="api_key", display_name="TwelveLabs API Key", info="Enter your TwelveLabs API Key.", required=True
|
||||||
),
|
),
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
name="model_name",
|
name="model_name",
|
||||||
|
|
@ -215,7 +215,7 @@ class PegasusIndexVideo(Component):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if not self.api_key:
|
if not self.api_key:
|
||||||
error_msg = "Twelve Labs API Key is required"
|
error_msg = "TwelveLabs API Key is required"
|
||||||
raise IndexCreationError(error_msg)
|
raise IndexCreationError(error_msg)
|
||||||
|
|
||||||
if not (hasattr(self, "index_name") and self.index_name) and not (hasattr(self, "index_id") and self.index_id):
|
if not (hasattr(self, "index_name") and self.index_name) and not (hasattr(self, "index_id") and self.index_id):
|
||||||
|
|
@ -230,7 +230,7 @@ class PegasusIndexVideo(Component):
|
||||||
index_id, index_name = self._get_or_create_index(client)
|
index_id, index_name = self._get_or_create_index(client)
|
||||||
self.status = f"Using index: {index_name} (ID: {index_id})"
|
self.status = f"Using index: {index_name} (ID: {index_id})"
|
||||||
except IndexCreationError as e:
|
except IndexCreationError as e:
|
||||||
self.status = f"Failed to get/create Twelve Labs index: {e!s}"
|
self.status = f"Failed to get/create TwelveLabs index: {e!s}"
|
||||||
raise
|
raise
|
||||||
|
|
||||||
# First, validate all videos and create a list of valid ones
|
# First, validate all videos and create a list of valid ones
|
||||||
|
|
|
||||||
|
|
@ -34,14 +34,14 @@ class TwelveLabsTextEmbeddings(Embeddings):
|
||||||
|
|
||||||
|
|
||||||
class TwelveLabsTextEmbeddingsComponent(LCEmbeddingsModel):
|
class TwelveLabsTextEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
display_name = "Twelve Labs Text Embeddings"
|
display_name = "TwelveLabs Text Embeddings"
|
||||||
description = "Generate embeddings using Twelve Labs text embedding models."
|
description = "Generate embeddings using TwelveLabs text embedding models."
|
||||||
icon = "TwelveLabs"
|
icon = "TwelveLabs"
|
||||||
name = "TwelveLabsTextEmbeddings"
|
name = "TwelveLabsTextEmbeddings"
|
||||||
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
SecretStrInput(name="api_key", display_name="Twelve Labs API Key", value="TWELVELABS_API_KEY", required=True),
|
SecretStrInput(name="api_key", display_name="TwelveLabs API Key", value="TWELVELABS_API_KEY", required=True),
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
name="model",
|
name="model",
|
||||||
display_name="Model",
|
display_name="Model",
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ class VideoValidationError(Exception):
|
||||||
|
|
||||||
|
|
||||||
class TwelveLabsPegasus(Component):
|
class TwelveLabsPegasus(Component):
|
||||||
display_name = "Twelve Labs Pegasus"
|
display_name = "TwelveLabs Pegasus"
|
||||||
description = "Chat with videos using Twelve Labs Pegasus API."
|
description = "Chat with videos using TwelveLabs Pegasus API."
|
||||||
icon = "TwelveLabs"
|
icon = "TwelveLabs"
|
||||||
name = "TwelveLabsPegasus"
|
name = "TwelveLabsPegasus"
|
||||||
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
||||||
|
|
@ -44,7 +44,7 @@ class TwelveLabsPegasus(Component):
|
||||||
inputs = [
|
inputs = [
|
||||||
DataInput(name="videodata", display_name="Video Data", info="Video Data", is_list=True),
|
DataInput(name="videodata", display_name="Video Data", info="Video Data", is_list=True),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="api_key", display_name="Twelve Labs API Key", info="Enter your Twelve Labs API Key.", required=True
|
name="api_key", display_name="TwelveLabs API Key", info="Enter your TwelveLabs API Key.", required=True
|
||||||
),
|
),
|
||||||
MessageInput(
|
MessageInput(
|
||||||
name="video_id",
|
name="video_id",
|
||||||
|
|
@ -306,7 +306,7 @@ class TwelveLabsPegasus(Component):
|
||||||
def process_video(self) -> Message:
|
def process_video(self) -> Message:
|
||||||
"""Process video using Pegasus and generate response if message is provided.
|
"""Process video using Pegasus and generate response if message is provided.
|
||||||
|
|
||||||
Handles video indexing and question answering using the Twelve Labs API.
|
Handles video indexing and question answering using the TwelveLabs API.
|
||||||
"""
|
"""
|
||||||
# Check and initialize inputs
|
# Check and initialize inputs
|
||||||
if hasattr(self, "index_id") and self.index_id:
|
if hasattr(self, "index_id") and self.index_id:
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,8 @@ class TwelveLabsVideoEmbeddings(Embeddings):
|
||||||
|
|
||||||
|
|
||||||
class TwelveLabsVideoEmbeddingsComponent(LCEmbeddingsModel):
|
class TwelveLabsVideoEmbeddingsComponent(LCEmbeddingsModel):
|
||||||
display_name = "Twelve Labs Video Embeddings"
|
display_name = "TwelveLabs Video Embeddings"
|
||||||
description = "Generate embeddings from videos using Twelve Labs video embedding models."
|
description = "Generate embeddings from videos using TwelveLabs video embedding models."
|
||||||
name = "TwelveLabsVideoEmbeddings"
|
name = "TwelveLabsVideoEmbeddings"
|
||||||
icon = "TwelveLabs"
|
icon = "TwelveLabs"
|
||||||
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
documentation = "https://github.com/twelvelabs-io/twelvelabs-developer-experience/blob/main/integrations/Langflow/TWELVE_LABS_COMPONENTS_README.md"
|
||||||
|
|
|
||||||
|
|
@ -24,28 +24,28 @@ class CassandraVectorStoreComponent(LCVectorStoreComponent):
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="database_ref",
|
name="database_ref",
|
||||||
display_name="Contact Points / Astra Database ID",
|
display_name="Contact Points / Astra Database ID",
|
||||||
info="Contact points for the database (or AstraDB database ID)",
|
info="Contact points for the database (or Astra DB database ID)",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="username", display_name="Username", info="Username for the database (leave empty for AstraDB)."
|
name="username", display_name="Username", info="Username for the database (leave empty for Astra DB)."
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="token",
|
name="token",
|
||||||
display_name="Password / AstraDB Token",
|
display_name="Password / Astra DB Token",
|
||||||
info="User password for the database (or AstraDB token).",
|
info="User password for the database (or Astra DB token).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="keyspace",
|
name="keyspace",
|
||||||
display_name="Keyspace",
|
display_name="Keyspace",
|
||||||
info="Table Keyspace (or AstraDB namespace).",
|
info="Table Keyspace (or Astra DB namespace).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="table_name",
|
name="table_name",
|
||||||
display_name="Table Name",
|
display_name="Table Name",
|
||||||
info="The name of the table (or AstraDB collection) where vectors will be stored.",
|
info="The name of the table (or Astra DB collection) where vectors will be stored.",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
IntInput(
|
IntInput(
|
||||||
|
|
|
||||||
|
|
@ -25,28 +25,28 @@ class CassandraGraphVectorStoreComponent(LCVectorStoreComponent):
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="database_ref",
|
name="database_ref",
|
||||||
display_name="Contact Points / Astra Database ID",
|
display_name="Contact Points / Astra Database ID",
|
||||||
info="Contact points for the database (or AstraDB database ID)",
|
info="Contact points for the database (or Astra DB database ID)",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="username", display_name="Username", info="Username for the database (leave empty for AstraDB)."
|
name="username", display_name="Username", info="Username for the database (leave empty for Astra DB)."
|
||||||
),
|
),
|
||||||
SecretStrInput(
|
SecretStrInput(
|
||||||
name="token",
|
name="token",
|
||||||
display_name="Password / AstraDB Token",
|
display_name="Password / Astra DB Token",
|
||||||
info="User password for the database (or AstraDB token).",
|
info="User password for the database (or Astra DB token).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="keyspace",
|
name="keyspace",
|
||||||
display_name="Keyspace",
|
display_name="Keyspace",
|
||||||
info="Table Keyspace (or AstraDB namespace).",
|
info="Table Keyspace (or Astra DB namespace).",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
MessageTextInput(
|
MessageTextInput(
|
||||||
name="table_name",
|
name="table_name",
|
||||||
display_name="Table Name",
|
display_name="Table Name",
|
||||||
info="The name of the table (or AstraDB collection) where vectors will be stored.",
|
info="The name of the table (or Astra DB collection) where vectors will be stored.",
|
||||||
required=True,
|
required=True,
|
||||||
),
|
),
|
||||||
DropdownInput(
|
DropdownInput(
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ from langflow.io import BoolInput, FileInput, FloatInput, IntInput, MessageTextI
|
||||||
|
|
||||||
|
|
||||||
class VertexAIEmbeddingsComponent(LCModelComponent):
|
class VertexAIEmbeddingsComponent(LCModelComponent):
|
||||||
display_name = "VertexAI Embeddings"
|
display_name = "Vertex AI Embeddings"
|
||||||
description = "Generate embeddings using Google Cloud VertexAI models."
|
description = "Generate embeddings using Google Cloud Vertex AI models."
|
||||||
icon = "VertexAI"
|
icon = "VertexAI"
|
||||||
name = "VertexAIEmbeddings"
|
name = "VertexAIEmbeddings"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from langflow.schema.dataframe import DataFrame
|
||||||
|
|
||||||
class WolframAlphaAPIComponent(LCToolComponent):
|
class WolframAlphaAPIComponent(LCToolComponent):
|
||||||
display_name = "WolframAlpha API"
|
display_name = "WolframAlpha API"
|
||||||
description = """Enables queries to Wolfram Alpha for computational data, facts, and calculations across various \
|
description = """Enables queries to WolframAlpha for computational data, facts, and calculations across various \
|
||||||
topics, delivering structured responses."""
|
topics, delivering structured responses."""
|
||||||
name = "WolframAlphaAPI"
|
name = "WolframAlphaAPI"
|
||||||
|
|
||||||
|
|
@ -45,7 +45,7 @@ topics, delivering structured responses."""
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def fetch_content_dataframe(self) -> DataFrame:
|
def fetch_content_dataframe(self) -> DataFrame:
|
||||||
"""Convert the Wolfram Alpha results to a DataFrame.
|
"""Convert the WolframAlpha results to a DataFrame.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
DataFrame: A DataFrame containing the query results.
|
DataFrame: A DataFrame containing the query results.
|
||||||
|
|
|
||||||
|
|
@ -49,9 +49,9 @@ class YahooFinanceSchema(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class YfinanceComponent(Component):
|
class YfinanceComponent(Component):
|
||||||
display_name = "Yahoo Finance"
|
display_name = "Yahoo! Finance"
|
||||||
description = """Uses [yfinance](https://pypi.org/project/yfinance/) (unofficial package) \
|
description = """Uses [yfinance](https://pypi.org/project/yfinance/) (unofficial package) \
|
||||||
to access financial data and market information from Yahoo Finance."""
|
to access financial data and market information from Yahoo! Finance."""
|
||||||
icon = "trending-up"
|
icon = "trending-up"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ from langflow.template.field.base import Output
|
||||||
|
|
||||||
|
|
||||||
class YouTubePlaylistComponent(Component):
|
class YouTubePlaylistComponent(Component):
|
||||||
display_name = "Youtube Playlist"
|
display_name = "YouTube Playlist"
|
||||||
description = "Extracts all video URLs from a YouTube playlist."
|
description = "Extracts all video URLs from a YouTube playlist."
|
||||||
icon = "YouTube" # Replace with a suitable icon
|
icon = "YouTube" # Replace with a suitable icon
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
"custom_fields": {},
|
"custom_fields": {},
|
||||||
"description": "ScrapeGraph Search API.\n Given a search prompt, it will return search results using ScrapeGraph's search functionality.\n More info at https://docs.scrapegraphai.com/services/searchscraper",
|
"description": "Given a search prompt, it will return search results using ScrapeGraph's search functionality.",
|
||||||
"display_name": "ScrapeGraphSearchApi",
|
"display_name": "ScrapeGraphSearchApi",
|
||||||
"documentation": "https://docs.scrapegraphai.com/introduction",
|
"documentation": "https://docs.scrapegraphai.com/introduction",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
"legacy": false,
|
"legacy": false,
|
||||||
"lf_version": "1.1.5",
|
"lf_version": "1.1.5",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"code_hash": "cdea312e9de9",
|
"code_hash": "99b8b89dc4ca",
|
||||||
"module": "langflow.components.scrapegraph.scrapegraph_search_api.ScrapeGraphSearchApi"
|
"module": "langflow.components.scrapegraph.scrapegraph_search_api.ScrapeGraphSearchApi"
|
||||||
},
|
},
|
||||||
"minimized": false,
|
"minimized": false,
|
||||||
|
|
@ -163,7 +163,7 @@
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"type": "code",
|
"type": "code",
|
||||||
"value": "from langflow.custom.custom_component.component import Component\nfrom langflow.io import (\n MessageTextInput,\n Output,\n SecretStrInput,\n)\nfrom langflow.schema.data import Data\n\n\nclass ScrapeGraphSearchApi(Component):\n display_name: str = \"ScrapeGraphSearchApi\"\n description: str = \"\"\"ScrapeGraph Search API.\n Given a search prompt, it will return search results using ScrapeGraph's search functionality.\n More info at https://docs.scrapegraphai.com/services/searchscraper\"\"\"\n name = \"ScrapeGraphSearchApi\"\n\n documentation: str = \"https://docs.scrapegraphai.com/introduction\"\n icon = \"ScrapeGraph\"\n\n inputs = [\n SecretStrInput(\n name=\"api_key\",\n display_name=\"ScrapeGraph API Key\",\n required=True,\n password=True,\n info=\"The API key to use ScrapeGraph API.\",\n ),\n MessageTextInput(\n name=\"user_prompt\",\n display_name=\"Search Prompt\",\n tool_mode=True,\n info=\"The search prompt to use.\",\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"data\", method=\"search\"),\n ]\n\n def search(self) -> list[Data]:\n try:\n from scrapegraph_py import Client\n from scrapegraph_py.logger import sgai_logger\n except ImportError as e:\n msg = \"Could not import scrapegraph-py package. Please install it with `pip install scrapegraph-py`.\"\n raise ImportError(msg) from e\n\n # Set logging level\n sgai_logger.set_logging(level=\"INFO\")\n\n # Initialize the client with API key\n sgai_client = Client(api_key=self.api_key)\n\n try:\n # SearchScraper request\n response = sgai_client.searchscraper(\n user_prompt=self.user_prompt,\n )\n\n # Close the client\n sgai_client.close()\n\n return Data(data=response)\n except Exception:\n sgai_client.close()\n raise\n"
|
"value": "from langflow.custom.custom_component.component import Component\nfrom langflow.io import (\n MessageTextInput,\n Output,\n SecretStrInput,\n)\nfrom langflow.schema.data import Data\n\n\nclass ScrapeGraphSearchApi(Component):\n display_name: str = \"ScrapeGraph Search API\"\n description: str = \"Given a search prompt, it will return search results using ScrapeGraph's search functionality.\"\n name = \"ScrapeGraphSearchApi\"\n\n documentation: str = \"https://docs.scrapegraphai.com/services/searchscraper\"\n icon = \"ScrapeGraph\"\n\n inputs = [\n SecretStrInput(\n name=\"api_key\",\n display_name=\"ScrapeGraph API Key\",\n required=True,\n password=True,\n info=\"The API key to use ScrapeGraph API.\",\n ),\n MessageTextInput(\n name=\"user_prompt\",\n display_name=\"Search Prompt\",\n tool_mode=True,\n info=\"The search prompt to use.\",\n ),\n ]\n\n outputs = [\n Output(display_name=\"Data\", name=\"data\", method=\"search\"),\n ]\n\n def search(self) -> list[Data]:\n try:\n from scrapegraph_py import Client\n from scrapegraph_py.logger import sgai_logger\n except ImportError as e:\n msg = \"Could not import scrapegraph-py package. Please install it with `pip install scrapegraph-py`.\"\n raise ImportError(msg) from e\n\n # Set logging level\n sgai_logger.set_logging(level=\"INFO\")\n\n # Initialize the client with API key\n sgai_client = Client(api_key=self.api_key)\n\n try:\n # SearchScraper request\n response = sgai_client.searchscraper(\n user_prompt=self.user_prompt,\n )\n\n # Close the client\n sgai_client.close()\n\n return Data(data=response)\n except Exception:\n sgai_client.close()\n raise\n"
|
||||||
},
|
},
|
||||||
"tools_metadata": {
|
"tools_metadata": {
|
||||||
"_input_type": "ToolsInput",
|
"_input_type": "ToolsInput",
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1417,7 +1417,7 @@
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
"custom_fields": {},
|
"custom_fields": {},
|
||||||
"description": "Call the searchapi.io API with result limiting",
|
"description": "Calls the SearchApi API with result limiting. Supports Google, Bing and DuckDuckGo.",
|
||||||
"display_name": "Search API",
|
"display_name": "Search API",
|
||||||
"documentation": "https://www.searchapi.io/docs/google",
|
"documentation": "https://www.searchapi.io/docs/google",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
|
|
@ -1434,7 +1434,7 @@
|
||||||
"legacy": false,
|
"legacy": false,
|
||||||
"lf_version": "1.2.0",
|
"lf_version": "1.2.0",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"code_hash": "727befdc79e7",
|
"code_hash": "c561e416205b",
|
||||||
"module": "langflow.components.searchapi.search.SearchComponent"
|
"module": "langflow.components.searchapi.search.SearchComponent"
|
||||||
},
|
},
|
||||||
"minimized": false,
|
"minimized": false,
|
||||||
|
|
@ -1494,7 +1494,7 @@
|
||||||
"show": true,
|
"show": true,
|
||||||
"title_case": false,
|
"title_case": false,
|
||||||
"type": "code",
|
"type": "code",
|
||||||
"value": "from typing import Any\n\nfrom langchain_community.utilities.searchapi import SearchApiAPIWrapper\n\nfrom langflow.custom.custom_component.component import Component\nfrom langflow.inputs.inputs import DictInput, DropdownInput, IntInput, MultilineInput, SecretStrInput\nfrom langflow.io import Output\nfrom langflow.schema.data import Data\nfrom langflow.schema.dataframe import DataFrame\n\n\nclass SearchComponent(Component):\n display_name: str = \"Search API\"\n description: str = \"Call the searchapi.io API with result limiting\"\n documentation: str = \"https://www.searchapi.io/docs/google\"\n icon = \"SearchAPI\"\n\n inputs = [\n DropdownInput(name=\"engine\", display_name=\"Engine\", value=\"google\", options=[\"google\", \"bing\", \"duckduckgo\"]),\n SecretStrInput(name=\"api_key\", display_name=\"SearchAPI API Key\", required=True),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input\",\n tool_mode=True,\n ),\n DictInput(name=\"search_params\", display_name=\"Search parameters\", advanced=True, is_list=True),\n IntInput(name=\"max_results\", display_name=\"Max Results\", value=5, advanced=True),\n IntInput(name=\"max_snippet_length\", display_name=\"Max Snippet Length\", value=100, advanced=True),\n ]\n\n outputs = [\n Output(display_name=\"DataFrame\", name=\"dataframe\", method=\"fetch_content_dataframe\"),\n ]\n\n def _build_wrapper(self):\n return SearchApiAPIWrapper(engine=self.engine, searchapi_api_key=self.api_key)\n\n def run_model(self) -> DataFrame:\n return self.fetch_content_dataframe()\n\n def fetch_content(self) -> list[Data]:\n wrapper = self._build_wrapper()\n\n def search_func(\n query: str, params: dict[str, Any] | None = None, max_results: int = 5, max_snippet_length: int = 100\n ) -> list[Data]:\n params = params or {}\n full_results = wrapper.results(query=query, **params)\n organic_results = full_results.get(\"organic_results\", [])[:max_results]\n\n return [\n Data(\n text=result.get(\"snippet\", \"\"),\n data={\n \"title\": result.get(\"title\", \"\")[:max_snippet_length],\n \"link\": result.get(\"link\", \"\"),\n \"snippet\": result.get(\"snippet\", \"\")[:max_snippet_length],\n },\n )\n for result in organic_results\n ]\n\n results = search_func(\n self.input_value,\n self.search_params or {},\n self.max_results,\n self.max_snippet_length,\n )\n self.status = results\n return results\n\n def fetch_content_dataframe(self) -> DataFrame:\n \"\"\"Convert the search results to a DataFrame.\n\n Returns:\n DataFrame: A DataFrame containing the search results.\n \"\"\"\n data = self.fetch_content()\n return DataFrame(data)\n"
|
"value": "from typing import Any\n\nfrom langchain_community.utilities.searchapi import SearchApiAPIWrapper\n\nfrom langflow.custom.custom_component.component import Component\nfrom langflow.inputs.inputs import DictInput, DropdownInput, IntInput, MultilineInput, SecretStrInput\nfrom langflow.io import Output\nfrom langflow.schema.data import Data\nfrom langflow.schema.dataframe import DataFrame\n\n\nclass SearchComponent(Component):\n display_name: str = \"SearchApi\"\n description: str = \"Calls the SearchApi API with result limiting. Supports Google, Bing and DuckDuckGo.\"\n documentation: str = \"https://www.searchapi.io/docs/google\"\n icon = \"SearchAPI\"\n\n inputs = [\n DropdownInput(name=\"engine\", display_name=\"Engine\", value=\"google\", options=[\"google\", \"bing\", \"duckduckgo\"]),\n SecretStrInput(name=\"api_key\", display_name=\"SearchAPI API Key\", required=True),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input\",\n tool_mode=True,\n ),\n DictInput(name=\"search_params\", display_name=\"Search parameters\", advanced=True, is_list=True),\n IntInput(name=\"max_results\", display_name=\"Max Results\", value=5, advanced=True),\n IntInput(name=\"max_snippet_length\", display_name=\"Max Snippet Length\", value=100, advanced=True),\n ]\n\n outputs = [\n Output(display_name=\"DataFrame\", name=\"dataframe\", method=\"fetch_content_dataframe\"),\n ]\n\n def _build_wrapper(self):\n return SearchApiAPIWrapper(engine=self.engine, searchapi_api_key=self.api_key)\n\n def run_model(self) -> DataFrame:\n return self.fetch_content_dataframe()\n\n def fetch_content(self) -> list[Data]:\n wrapper = self._build_wrapper()\n\n def search_func(\n query: str, params: dict[str, Any] | None = None, max_results: int = 5, max_snippet_length: int = 100\n ) -> list[Data]:\n params = params or {}\n full_results = wrapper.results(query=query, **params)\n organic_results = full_results.get(\"organic_results\", [])[:max_results]\n\n return [\n Data(\n text=result.get(\"snippet\", \"\"),\n data={\n \"title\": result.get(\"title\", \"\")[:max_snippet_length],\n \"link\": result.get(\"link\", \"\"),\n \"snippet\": result.get(\"snippet\", \"\")[:max_snippet_length],\n },\n )\n for result in organic_results\n ]\n\n results = search_func(\n self.input_value,\n self.search_params or {},\n self.max_results,\n self.max_snippet_length,\n )\n self.status = results\n return results\n\n def fetch_content_dataframe(self) -> DataFrame:\n \"\"\"Convert the search results to a DataFrame.\n\n Returns:\n DataFrame: A DataFrame containing the search results.\n \"\"\"\n data = self.fetch_content()\n return DataFrame(data)\n"
|
||||||
},
|
},
|
||||||
"engine": {
|
"engine": {
|
||||||
"_input_type": "DropdownInput",
|
"_input_type": "DropdownInput",
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,12 @@
|
||||||
"dataType": "YouTubeCommentsComponent",
|
"dataType": "YouTubeCommentsComponent",
|
||||||
"id": "YouTubeCommentsComponent-y3wJZ",
|
"id": "YouTubeCommentsComponent-y3wJZ",
|
||||||
"name": "comments",
|
"name": "comments",
|
||||||
"output_types": [
|
"output_types": ["DataFrame"]
|
||||||
"DataFrame"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "df",
|
"fieldName": "df",
|
||||||
"id": "BatchRunComponent-30WdR",
|
"id": "BatchRunComponent-30WdR",
|
||||||
"inputTypes": [
|
"inputTypes": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -37,16 +33,12 @@
|
||||||
"dataType": "Prompt",
|
"dataType": "Prompt",
|
||||||
"id": "Prompt-yqoLt",
|
"id": "Prompt-yqoLt",
|
||||||
"name": "prompt",
|
"name": "prompt",
|
||||||
"output_types": [
|
"output_types": ["Message"]
|
||||||
"Message"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "input_value",
|
"fieldName": "input_value",
|
||||||
"id": "Agent-JRSRu",
|
"id": "Agent-JRSRu",
|
||||||
"inputTypes": [
|
"inputTypes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"type": "str"
|
"type": "str"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -65,18 +57,12 @@
|
||||||
"dataType": "Agent",
|
"dataType": "Agent",
|
||||||
"id": "Agent-JRSRu",
|
"id": "Agent-JRSRu",
|
||||||
"name": "response",
|
"name": "response",
|
||||||
"output_types": [
|
"output_types": ["Message"]
|
||||||
"Message"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "input_value",
|
"fieldName": "input_value",
|
||||||
"id": "ChatOutput-vlskP",
|
"id": "ChatOutput-vlskP",
|
||||||
"inputTypes": [
|
"inputTypes": ["Data", "DataFrame", "Message"],
|
||||||
"Data",
|
|
||||||
"DataFrame",
|
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"type": "str"
|
"type": "str"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -95,16 +81,12 @@
|
||||||
"dataType": "YouTubeTranscripts",
|
"dataType": "YouTubeTranscripts",
|
||||||
"id": "YouTubeTranscripts-TlFcG",
|
"id": "YouTubeTranscripts-TlFcG",
|
||||||
"name": "component_as_tool",
|
"name": "component_as_tool",
|
||||||
"output_types": [
|
"output_types": ["Tool"]
|
||||||
"Tool"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "tools",
|
"fieldName": "tools",
|
||||||
"id": "Agent-JRSRu",
|
"id": "Agent-JRSRu",
|
||||||
"inputTypes": [
|
"inputTypes": ["Tool"],
|
||||||
"Tool"
|
|
||||||
],
|
|
||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -123,17 +105,12 @@
|
||||||
"dataType": "BatchRunComponent",
|
"dataType": "BatchRunComponent",
|
||||||
"id": "BatchRunComponent-30WdR",
|
"id": "BatchRunComponent-30WdR",
|
||||||
"name": "batch_results",
|
"name": "batch_results",
|
||||||
"output_types": [
|
"output_types": ["DataFrame"]
|
||||||
"DataFrame"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "input_data",
|
"fieldName": "input_data",
|
||||||
"id": "parser-k0Bpy",
|
"id": "parser-k0Bpy",
|
||||||
"inputTypes": [
|
"inputTypes": ["DataFrame", "Data"],
|
||||||
"DataFrame",
|
|
||||||
"Data"
|
|
||||||
],
|
|
||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -152,16 +129,12 @@
|
||||||
"dataType": "parser",
|
"dataType": "parser",
|
||||||
"id": "parser-k0Bpy",
|
"id": "parser-k0Bpy",
|
||||||
"name": "parsed_text",
|
"name": "parsed_text",
|
||||||
"output_types": [
|
"output_types": ["Message"]
|
||||||
"Message"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "analysis",
|
"fieldName": "analysis",
|
||||||
"id": "Prompt-yqoLt",
|
"id": "Prompt-yqoLt",
|
||||||
"inputTypes": [
|
"inputTypes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"type": "str"
|
"type": "str"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -180,16 +153,12 @@
|
||||||
"dataType": "LanguageModelComponent",
|
"dataType": "LanguageModelComponent",
|
||||||
"id": "LanguageModelComponent-OvIt5",
|
"id": "LanguageModelComponent-OvIt5",
|
||||||
"name": "model_output",
|
"name": "model_output",
|
||||||
"output_types": [
|
"output_types": ["LanguageModel"]
|
||||||
"LanguageModel"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "model",
|
"fieldName": "model",
|
||||||
"id": "BatchRunComponent-30WdR",
|
"id": "BatchRunComponent-30WdR",
|
||||||
"inputTypes": [
|
"inputTypes": ["LanguageModel"],
|
||||||
"LanguageModel"
|
|
||||||
],
|
|
||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -208,16 +177,12 @@
|
||||||
"dataType": "ChatInput",
|
"dataType": "ChatInput",
|
||||||
"id": "ChatInput-kaWcL",
|
"id": "ChatInput-kaWcL",
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"output_types": [
|
"output_types": ["Message"]
|
||||||
"Message"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "video_url",
|
"fieldName": "video_url",
|
||||||
"id": "YouTubeCommentsComponent-y3wJZ",
|
"id": "YouTubeCommentsComponent-y3wJZ",
|
||||||
"inputTypes": [
|
"inputTypes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"type": "str"
|
"type": "str"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -236,16 +201,12 @@
|
||||||
"dataType": "ChatInput",
|
"dataType": "ChatInput",
|
||||||
"id": "ChatInput-kaWcL",
|
"id": "ChatInput-kaWcL",
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"output_types": [
|
"output_types": ["Message"]
|
||||||
"Message"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "url",
|
"fieldName": "url",
|
||||||
"id": "Prompt-yqoLt",
|
"id": "Prompt-yqoLt",
|
||||||
"inputTypes": [
|
"inputTypes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"type": "str"
|
"type": "str"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -262,9 +223,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "BatchRunComponent-30WdR",
|
"id": "BatchRunComponent-30WdR",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "helpers",
|
"category": "helpers",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -273,12 +232,7 @@
|
||||||
"display_name": "Batch Run",
|
"display_name": "Batch Run",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
"field_order": [
|
"field_order": ["model", "system_message", "df", "column_name"],
|
||||||
"model",
|
|
||||||
"system_message",
|
|
||||||
"df",
|
|
||||||
"column_name"
|
|
||||||
],
|
|
||||||
"frozen": false,
|
"frozen": false,
|
||||||
"icon": "List",
|
"icon": "List",
|
||||||
"key": "BatchRunComponent",
|
"key": "BatchRunComponent",
|
||||||
|
|
@ -300,9 +254,7 @@
|
||||||
"name": "batch_results",
|
"name": "batch_results",
|
||||||
"selected": "DataFrame",
|
"selected": "DataFrame",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -353,9 +305,7 @@
|
||||||
"display_name": "DataFrame",
|
"display_name": "DataFrame",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The DataFrame whose column (specified by 'column_name') we'll treat as text messages.",
|
"info": "The DataFrame whose column (specified by 'column_name') we'll treat as text messages.",
|
||||||
"input_types": [
|
"input_types": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"name": "df",
|
"name": "df",
|
||||||
|
|
@ -393,9 +343,7 @@
|
||||||
"display_name": "Language Model",
|
"display_name": "Language Model",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Connect the 'Language Model' output from your LLM component here.",
|
"info": "Connect the 'Language Model' output from your LLM component here.",
|
||||||
"input_types": [
|
"input_types": ["LanguageModel"],
|
||||||
"LanguageModel"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"name": "model",
|
"name": "model",
|
||||||
|
|
@ -413,9 +361,7 @@
|
||||||
"display_name": "Output Column Name",
|
"display_name": "Output Column Name",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Name of the column where the model's response will be stored.",
|
"info": "Name of the column where the model's response will be stored.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -436,9 +382,7 @@
|
||||||
"display_name": "Instructions",
|
"display_name": "Instructions",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Multi-line system instruction for all rows in the DataFrame.",
|
"info": "Multi-line system instruction for all rows in the DataFrame.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -478,9 +422,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "YouTubeCommentsComponent-y3wJZ",
|
"id": "YouTubeCommentsComponent-y3wJZ",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "youtube",
|
"category": "youtube",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -518,9 +460,7 @@
|
||||||
"name": "comments",
|
"name": "comments",
|
||||||
"selected": "DataFrame",
|
"selected": "DataFrame",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["DataFrame"],
|
||||||
"DataFrame"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -626,10 +566,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Sort comments by time or relevance.",
|
"info": "Sort comments by time or relevance.",
|
||||||
"name": "sort_by",
|
"name": "sort_by",
|
||||||
"options": [
|
"options": ["time", "relevance"],
|
||||||
"time",
|
|
||||||
"relevance"
|
|
||||||
],
|
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -646,9 +583,7 @@
|
||||||
"display_name": "Video URL",
|
"display_name": "Video URL",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The URL of the YouTube video to get comments from.",
|
"info": "The URL of the YouTube video to get comments from.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -687,9 +622,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "Agent-JRSRu",
|
"id": "Agent-JRSRu",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
"custom_fields": {},
|
"custom_fields": {},
|
||||||
|
|
@ -740,9 +673,7 @@
|
||||||
"required_inputs": null,
|
"required_inputs": null,
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -774,9 +705,7 @@
|
||||||
"display_name": "Agent Description [Deprecated]",
|
"display_name": "Agent Description [Deprecated]",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The description of the agent. This is only used when in Tool Mode. Defaults to 'A helpful assistant with access to the following tools:' and tools are added dynamically. This feature is deprecated and will be removed in future versions.",
|
"info": "The description of the agent. This is only used when in Tool Mode. Defaults to 'A helpful assistant with access to the following tools:' and tools are added dynamically. This feature is deprecated and will be removed in future versions.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -897,9 +826,7 @@
|
||||||
"display_name": "Input",
|
"display_name": "Input",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The input provided by the user for the agent to process.",
|
"info": "The input provided by the user for the agent to process.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1107,9 +1034,7 @@
|
||||||
"display_name": "Agent Instructions",
|
"display_name": "Agent Instructions",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "System Prompt: Initial instructions and context provided to guide the agent's behavior.",
|
"info": "System Prompt: Initial instructions and context provided to guide the agent's behavior.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1177,9 +1102,7 @@
|
||||||
"display_name": "Tools",
|
"display_name": "Tools",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "These are the tools that the agent can use to help with tasks.",
|
"info": "These are the tools that the agent can use to help with tasks.",
|
||||||
"input_types": [
|
"input_types": ["Tool"],
|
||||||
"Tool"
|
|
||||||
],
|
|
||||||
"list": true,
|
"list": true,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"name": "tools",
|
"name": "tools",
|
||||||
|
|
@ -1233,26 +1156,18 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "Prompt-yqoLt",
|
"id": "Prompt-yqoLt",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
"custom_fields": {
|
"custom_fields": {
|
||||||
"template": [
|
"template": ["url", "analysis"]
|
||||||
"url",
|
|
||||||
"analysis"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"description": "Create a prompt template with dynamic variables.",
|
"description": "Create a prompt template with dynamic variables.",
|
||||||
"display_name": "Prompt",
|
"display_name": "Prompt",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
"error": null,
|
"error": null,
|
||||||
"field_order": [
|
"field_order": ["template", "tool_placeholder"],
|
||||||
"template",
|
|
||||||
"tool_placeholder"
|
|
||||||
],
|
|
||||||
"frozen": false,
|
"frozen": false,
|
||||||
"full_path": null,
|
"full_path": null,
|
||||||
"icon": "braces",
|
"icon": "braces",
|
||||||
|
|
@ -1275,9 +1190,7 @@
|
||||||
"name": "prompt",
|
"name": "prompt",
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -1292,9 +1205,7 @@
|
||||||
"fileTypes": [],
|
"fileTypes": [],
|
||||||
"file_path": "",
|
"file_path": "",
|
||||||
"info": "",
|
"info": "",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
"multiline": true,
|
"multiline": true,
|
||||||
|
|
@ -1348,9 +1259,7 @@
|
||||||
"display_name": "Tool Placeholder",
|
"display_name": "Tool Placeholder",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "A placeholder input for tool mode.",
|
"info": "A placeholder input for tool mode.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1373,9 +1282,7 @@
|
||||||
"fileTypes": [],
|
"fileTypes": [],
|
||||||
"file_path": "",
|
"file_path": "",
|
||||||
"info": "",
|
"info": "",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
"multiline": true,
|
"multiline": true,
|
||||||
|
|
@ -1411,9 +1318,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "ChatOutput-vlskP",
|
"id": "ChatOutput-vlskP",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "outputs",
|
"category": "outputs",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -1454,9 +1359,7 @@
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -1470,9 +1373,7 @@
|
||||||
"display_name": "Background Color",
|
"display_name": "Background Color",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The background color of the icon.",
|
"info": "The background color of the icon.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1493,9 +1394,7 @@
|
||||||
"display_name": "Icon",
|
"display_name": "Icon",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The icon of the message.",
|
"info": "The icon of the message.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1552,9 +1451,7 @@
|
||||||
"display_name": "Data Template",
|
"display_name": "Data Template",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.",
|
"info": "Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1575,11 +1472,7 @@
|
||||||
"display_name": "Inputs",
|
"display_name": "Inputs",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Message to be passed as output.",
|
"info": "Message to be passed as output.",
|
||||||
"input_types": [
|
"input_types": ["Data", "DataFrame", "Message"],
|
||||||
"Data",
|
|
||||||
"DataFrame",
|
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1603,10 +1496,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Type of sender.",
|
"info": "Type of sender.",
|
||||||
"name": "sender",
|
"name": "sender",
|
||||||
"options": [
|
"options": ["Machine", "User"],
|
||||||
"Machine",
|
|
||||||
"User"
|
|
||||||
],
|
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -1623,9 +1513,7 @@
|
||||||
"display_name": "Sender Name",
|
"display_name": "Sender Name",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Name of the sender.",
|
"info": "Name of the sender.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1646,9 +1534,7 @@
|
||||||
"display_name": "Session ID",
|
"display_name": "Session ID",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The session ID of the chat. If empty, the current session ID parameter will be used.",
|
"info": "The session ID of the chat. If empty, the current session ID parameter will be used.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1687,9 +1573,7 @@
|
||||||
"display_name": "Text Color",
|
"display_name": "Text Color",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The text color of the name",
|
"info": "The text color of the name",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1727,11 +1611,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "YouTubeTranscripts-TlFcG",
|
"id": "YouTubeTranscripts-TlFcG",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Data", "DataFrame", "Message"],
|
||||||
"Data",
|
|
||||||
"DataFrame",
|
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
"custom_fields": {},
|
"custom_fields": {},
|
||||||
|
|
@ -1739,11 +1619,7 @@
|
||||||
"display_name": "YouTube Transcripts",
|
"display_name": "YouTube Transcripts",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
"field_order": [
|
"field_order": ["url", "chunk_size_seconds", "translation"],
|
||||||
"url",
|
|
||||||
"chunk_size_seconds",
|
|
||||||
"translation"
|
|
||||||
],
|
|
||||||
"frozen": false,
|
"frozen": false,
|
||||||
"icon": "YouTube",
|
"icon": "YouTube",
|
||||||
"last_updated": "2025-07-07T14:52:15.000Z",
|
"last_updated": "2025-07-07T14:52:15.000Z",
|
||||||
|
|
@ -1768,9 +1644,7 @@
|
||||||
"required_inputs": null,
|
"required_inputs": null,
|
||||||
"selected": "Tool",
|
"selected": "Tool",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Tool"],
|
||||||
"Tool"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -1845,9 +1719,7 @@
|
||||||
"name": "get_dataframe_output",
|
"name": "get_dataframe_output",
|
||||||
"readonly": false,
|
"readonly": false,
|
||||||
"status": true,
|
"status": true,
|
||||||
"tags": [
|
"tags": ["get_dataframe_output"]
|
||||||
"get_dataframe_output"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"args": {
|
"args": {
|
||||||
|
|
@ -1863,9 +1735,7 @@
|
||||||
"name": "get_message_output",
|
"name": "get_message_output",
|
||||||
"readonly": false,
|
"readonly": false,
|
||||||
"status": true,
|
"status": true,
|
||||||
"tags": [
|
"tags": ["get_message_output"]
|
||||||
"get_message_output"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"args": {
|
"args": {
|
||||||
|
|
@ -1881,9 +1751,7 @@
|
||||||
"name": "get_data_output",
|
"name": "get_data_output",
|
||||||
"readonly": false,
|
"readonly": false,
|
||||||
"status": true,
|
"status": true,
|
||||||
"tags": [
|
"tags": ["get_data_output"]
|
||||||
"get_data_output"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -1927,9 +1795,7 @@
|
||||||
"display_name": "Video URL",
|
"display_name": "Video URL",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Enter the YouTube video URL to get transcripts from.",
|
"info": "Enter the YouTube video URL to get transcripts from.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -1969,7 +1835,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "note-eKoWw",
|
"id": "note-eKoWw",
|
||||||
"node": {
|
"node": {
|
||||||
"description": "# 📖 README\nThis flow performs comprehensive analysis of YouTube videos.\n1. Extract video comments and transcripts.\n2. Run sentiment analysis on comments using LLM.\n3. Combine transcript content and comment sentiment for comprehensive video analysis.\n## Quickstart\n- Add your **OpenAI API Key** to the **Language Model** and **YT-Insight** Agent Component\n- Add your **YouTube Data API v3 key**\n- If you don't have a YoutTube API key, create one in the [Google Cloud Console](https://console.cloud.google.com).\n- Ensure the chat input is a valid Youtube video URL. A sample URL is provided in the chat input component.\n",
|
"description": "# 📖 README\nThis flow performs comprehensive analysis of YouTube videos.\n1. Extract video comments and transcripts.\n2. Run sentiment analysis on comments using LLM.\n3. Combine transcript content and comment sentiment for comprehensive video analysis.\n## Quickstart\n- Add your **OpenAI API Key** to the **Language Model** and **YT-Insight** Agent Component\n- Add your **YouTube Data API v3 key**\n- If you don't have a YoutTube API key, create one in the [Google Cloud Console](https://console.cloud.google.com).\n- Ensure the chat input is a valid YouTube video URL. A sample URL is provided in the chat input component.\n",
|
||||||
"display_name": "",
|
"display_name": "",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"template": {
|
"template": {
|
||||||
|
|
@ -1998,9 +1864,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "parser-k0Bpy",
|
"id": "parser-k0Bpy",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "processing",
|
"category": "processing",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -2009,12 +1873,7 @@
|
||||||
"display_name": "Parser",
|
"display_name": "Parser",
|
||||||
"documentation": "",
|
"documentation": "",
|
||||||
"edited": false,
|
"edited": false,
|
||||||
"field_order": [
|
"field_order": ["mode", "pattern", "input_data", "sep"],
|
||||||
"mode",
|
|
||||||
"pattern",
|
|
||||||
"input_data",
|
|
||||||
"sep"
|
|
||||||
],
|
|
||||||
"frozen": false,
|
"frozen": false,
|
||||||
"icon": "braces",
|
"icon": "braces",
|
||||||
"key": "parser",
|
"key": "parser",
|
||||||
|
|
@ -2032,9 +1891,7 @@
|
||||||
"name": "parsed_text",
|
"name": "parsed_text",
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -2066,10 +1923,7 @@
|
||||||
"display_name": "Data or DataFrame",
|
"display_name": "Data or DataFrame",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Accepts either a DataFrame or a Data object.",
|
"info": "Accepts either a DataFrame or a Data object.",
|
||||||
"input_types": [
|
"input_types": ["DataFrame", "Data"],
|
||||||
"DataFrame",
|
|
||||||
"Data"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"name": "input_data",
|
"name": "input_data",
|
||||||
|
|
@ -2088,10 +1942,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Convert into raw string instead of using a template.",
|
"info": "Convert into raw string instead of using a template.",
|
||||||
"name": "mode",
|
"name": "mode",
|
||||||
"options": [
|
"options": ["Parser", "Stringify"],
|
||||||
"Parser",
|
|
||||||
"Stringify"
|
|
||||||
],
|
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"real_time_refresh": true,
|
"real_time_refresh": true,
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -2109,9 +1960,7 @@
|
||||||
"display_name": "Template",
|
"display_name": "Template",
|
||||||
"dynamic": true,
|
"dynamic": true,
|
||||||
"info": "Use variables within curly brackets to extract column values for DataFrames or key values for Data.For example: `Name: {Name}, Age: {Age}, Country: {Country}`",
|
"info": "Use variables within curly brackets to extract column values for DataFrames or key values for Data.For example: `Name: {Name}, Age: {Age}, Country: {Country}`",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2133,9 +1982,7 @@
|
||||||
"display_name": "Separator",
|
"display_name": "Separator",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "String used to separate rows/items.",
|
"info": "String used to separate rows/items.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2174,10 +2021,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "LanguageModelComponent-OvIt5",
|
"id": "LanguageModelComponent-OvIt5",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["LanguageModel", "Message"],
|
||||||
"LanguageModel",
|
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "models",
|
"category": "models",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -2223,9 +2067,7 @@
|
||||||
"required_inputs": null,
|
"required_inputs": null,
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -2239,9 +2081,7 @@
|
||||||
"required_inputs": null,
|
"required_inputs": null,
|
||||||
"selected": "LanguageModel",
|
"selected": "LanguageModel",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["LanguageModel"],
|
||||||
"LanguageModel"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -2292,9 +2132,7 @@
|
||||||
"display_name": "Input",
|
"display_name": "Input",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The input text to send to the model",
|
"info": "The input text to send to the model",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2350,11 +2188,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Select the model provider",
|
"info": "Select the model provider",
|
||||||
"name": "provider",
|
"name": "provider",
|
||||||
"options": [
|
"options": ["OpenAI", "Anthropic", "Google"],
|
||||||
"OpenAI",
|
|
||||||
"Anthropic",
|
|
||||||
"Google"
|
|
||||||
],
|
|
||||||
"options_metadata": [
|
"options_metadata": [
|
||||||
{
|
{
|
||||||
"icon": "OpenAI"
|
"icon": "OpenAI"
|
||||||
|
|
@ -2402,9 +2236,7 @@
|
||||||
"display_name": "System Message",
|
"display_name": "System Message",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "A system message that helps set the behavior of the assistant",
|
"info": "A system message that helps set the behavior of the assistant",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2472,9 +2304,7 @@
|
||||||
"data": {
|
"data": {
|
||||||
"id": "ChatInput-kaWcL",
|
"id": "ChatInput-kaWcL",
|
||||||
"node": {
|
"node": {
|
||||||
"base_classes": [
|
"base_classes": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"beta": false,
|
"beta": false,
|
||||||
"category": "input_output",
|
"category": "input_output",
|
||||||
"conditional_paths": [],
|
"conditional_paths": [],
|
||||||
|
|
@ -2515,9 +2345,7 @@
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"selected": "Message",
|
"selected": "Message",
|
||||||
"tool_mode": true,
|
"tool_mode": true,
|
||||||
"types": [
|
"types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -2531,9 +2359,7 @@
|
||||||
"display_name": "Background Color",
|
"display_name": "Background Color",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The background color of the icon.",
|
"info": "The background color of the icon.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2554,9 +2380,7 @@
|
||||||
"display_name": "Icon",
|
"display_name": "Icon",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The icon of the message.",
|
"info": "The icon of the message.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2665,10 +2489,7 @@
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Type of sender.",
|
"info": "Type of sender.",
|
||||||
"name": "sender",
|
"name": "sender",
|
||||||
"options": [
|
"options": ["Machine", "User"],
|
||||||
"Machine",
|
|
||||||
"User"
|
|
||||||
],
|
|
||||||
"options_metadata": [],
|
"options_metadata": [],
|
||||||
"placeholder": "",
|
"placeholder": "",
|
||||||
"required": false,
|
"required": false,
|
||||||
|
|
@ -2686,9 +2507,7 @@
|
||||||
"display_name": "Sender Name",
|
"display_name": "Sender Name",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "Name of the sender.",
|
"info": "Name of the sender.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2709,9 +2528,7 @@
|
||||||
"display_name": "Session ID",
|
"display_name": "Session ID",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The session ID of the chat. If empty, the current session ID parameter will be used.",
|
"info": "The session ID of the chat. If empty, the current session ID parameter will be used.",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2750,9 +2567,7 @@
|
||||||
"display_name": "Text Color",
|
"display_name": "Text Color",
|
||||||
"dynamic": false,
|
"dynamic": false,
|
||||||
"info": "The text color of the name",
|
"info": "The text color of the name",
|
||||||
"input_types": [
|
"input_types": ["Message"],
|
||||||
"Message"
|
|
||||||
],
|
|
||||||
"list": false,
|
"list": false,
|
||||||
"list_add_label": "Add More",
|
"list_add_label": "Add More",
|
||||||
"load_from_db": false,
|
"load_from_db": false,
|
||||||
|
|
@ -2798,9 +2613,6 @@
|
||||||
"id": "3d1e15c2-b095-46de-8247-949c7a5bda04",
|
"id": "3d1e15c2-b095-46de-8247-949c7a5bda04",
|
||||||
"is_component": false,
|
"is_component": false,
|
||||||
"last_tested_version": "1.4.3",
|
"last_tested_version": "1.4.3",
|
||||||
"name": "Youtube Analysis",
|
"name": "YouTube Analysis",
|
||||||
"tags": [
|
"tags": ["agents", "assistants"]
|
||||||
"agents",
|
|
||||||
"assistants"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,7 @@ class TestYfinanceComponent:
|
||||||
|
|
||||||
def test_initialization(self, component_class):
|
def test_initialization(self, component_class):
|
||||||
component = component_class()
|
component = component_class()
|
||||||
assert component.display_name == "Yahoo Finance"
|
assert component.display_name == "Yahoo! Finance"
|
||||||
assert component.icon == "trending-up"
|
assert component.icon == "trending-up"
|
||||||
assert "yfinance" in component.description
|
assert "yfinance" in component.description
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -761,7 +761,7 @@ export const BUNDLES_SIDEBAR_FOLDER_NAMES = [
|
||||||
"assemblyai",
|
"assemblyai",
|
||||||
"LangWatch",
|
"LangWatch",
|
||||||
"langwatch",
|
"langwatch",
|
||||||
"Youtube",
|
"YouTube",
|
||||||
"youtube",
|
"youtube",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ import { WindsurfIcon } from "./Windsurf";
|
||||||
|
|
||||||
// Export the eagerly loaded icons map
|
// Export the eagerly loaded icons map
|
||||||
export const eagerIconsMapping = {
|
export const eagerIconsMapping = {
|
||||||
"AI/ML": AIMLIcon,
|
AIML: AIMLIcon,
|
||||||
AgentQL: AgentQLIcon,
|
AgentQL: AgentQLIcon,
|
||||||
Airbyte: AirbyteIcon,
|
Airbyte: AirbyteIcon,
|
||||||
Anthropic: AnthropicIcon,
|
Anthropic: AnthropicIcon,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// Export the lazy loading mapping for icons
|
// Export the lazy loading mapping for icons
|
||||||
export const lazyIconsMapping = {
|
export const lazyIconsMapping = {
|
||||||
"AI/ML": () =>
|
AIML: () => import("@/icons/AIML").then((mod) => ({ default: mod.AIMLIcon })),
|
||||||
import("@/icons/AIML").then((mod) => ({ default: mod.AIMLIcon })),
|
|
||||||
AgentQL: () =>
|
AgentQL: () =>
|
||||||
import("@/icons/AgentQL").then((mod) => ({ default: mod.AgentQLIcon })),
|
import("@/icons/AgentQL").then((mod) => ({ default: mod.AgentQLIcon })),
|
||||||
Airbyte: () =>
|
Airbyte: () =>
|
||||||
|
|
|
||||||
|
|
@ -230,13 +230,13 @@ export const SIDEBAR_CATEGORIES = [
|
||||||
];
|
];
|
||||||
|
|
||||||
export const SIDEBAR_BUNDLES = [
|
export const SIDEBAR_BUNDLES = [
|
||||||
{ display_name: "AI/ML", name: "aiml", icon: "AI/ML" },
|
{ display_name: "AI/ML API", name: "aiml", icon: "AIML" },
|
||||||
{ display_name: "AgentQL", name: "agentql", icon: "AgentQL" },
|
{ display_name: "AgentQL", name: "agentql", icon: "AgentQL" },
|
||||||
{ display_name: "Amazon", name: "amazon", icon: "Amazon" },
|
{ display_name: "Amazon", name: "amazon", icon: "Amazon" },
|
||||||
{ display_name: "Anthropic", name: "anthropic", icon: "Anthropic" },
|
{ display_name: "Anthropic", name: "anthropic", icon: "Anthropic" },
|
||||||
{ display_name: "Apify", name: "apify", icon: "Apify" },
|
{ display_name: "Apify", name: "apify", icon: "Apify" },
|
||||||
|
|
||||||
{ display_name: "Arxiv", name: "arxiv", icon: "arXiv" },
|
{ display_name: "arXiv", name: "arxiv", icon: "arXiv" },
|
||||||
{ display_name: "AssemblyAI", name: "assemblyai", icon: "AssemblyAI" },
|
{ display_name: "AssemblyAI", name: "assemblyai", icon: "AssemblyAI" },
|
||||||
{ display_name: "Azure", name: "azure", icon: "Azure" },
|
{ display_name: "Azure", name: "azure", icon: "Azure" },
|
||||||
{ display_name: "Baidu", name: "baidu", icon: "BaiduQianfan" },
|
{ display_name: "Baidu", name: "baidu", icon: "BaiduQianfan" },
|
||||||
|
|
@ -270,7 +270,7 @@ export const SIDEBAR_BUNDLES = [
|
||||||
name: "homeassistant",
|
name: "homeassistant",
|
||||||
icon: "HomeAssistant",
|
icon: "HomeAssistant",
|
||||||
},
|
},
|
||||||
{ display_name: "HuggingFace", name: "huggingface", icon: "HuggingFace" },
|
{ display_name: "Hugging Face", name: "huggingface", icon: "HuggingFace" },
|
||||||
{ display_name: "IBM", name: "ibm", icon: "WatsonxAI" },
|
{ display_name: "IBM", name: "ibm", icon: "WatsonxAI" },
|
||||||
{ display_name: "Icosa Computing", name: "icosacomputing", icon: "Icosa" },
|
{ display_name: "Icosa Computing", name: "icosacomputing", icon: "Icosa" },
|
||||||
{ display_name: "JigsawStack", name: "jigsawstack", icon: "JigsawStack" },
|
{ display_name: "JigsawStack", name: "jigsawstack", icon: "JigsawStack" },
|
||||||
|
|
@ -282,7 +282,7 @@ export const SIDEBAR_BUNDLES = [
|
||||||
{ display_name: "Memories", name: "memories", icon: "Cpu" },
|
{ display_name: "Memories", name: "memories", icon: "Cpu" },
|
||||||
{ display_name: "MistralAI", name: "mistral", icon: "MistralAI" },
|
{ display_name: "MistralAI", name: "mistral", icon: "MistralAI" },
|
||||||
{ display_name: "Needle", name: "needle", icon: "Needle" },
|
{ display_name: "Needle", name: "needle", icon: "Needle" },
|
||||||
{ display_name: "NotDiamond", name: "notdiamond", icon: "NotDiamond" },
|
{ display_name: "Not Diamond", name: "notdiamond", icon: "NotDiamond" },
|
||||||
{ display_name: "Notion", name: "Notion", icon: "Notion" },
|
{ display_name: "Notion", name: "Notion", icon: "Notion" },
|
||||||
{ display_name: "Novita", name: "novita", icon: "Novita" },
|
{ display_name: "Novita", name: "novita", icon: "Novita" },
|
||||||
{ display_name: "NVIDIA", name: "nvidia", icon: "NVIDIA" },
|
{ display_name: "NVIDIA", name: "nvidia", icon: "NVIDIA" },
|
||||||
|
|
@ -295,13 +295,14 @@ export const SIDEBAR_BUNDLES = [
|
||||||
{ display_name: "Redis", name: "redis", icon: "Redis" },
|
{ display_name: "Redis", name: "redis", icon: "Redis" },
|
||||||
{ display_name: "SambaNova", name: "sambanova", icon: "SambaNova" },
|
{ display_name: "SambaNova", name: "sambanova", icon: "SambaNova" },
|
||||||
{ display_name: "ScrapeGraph AI", name: "scrapegraph", icon: "ScrapeGraph" },
|
{ display_name: "ScrapeGraph AI", name: "scrapegraph", icon: "ScrapeGraph" },
|
||||||
{ display_name: "SearchAPI", name: "searchapi", icon: "SearchAPI" },
|
{ display_name: "SearchApi", name: "searchapi", icon: "SearchAPI" },
|
||||||
{ display_name: "SerpApi", name: "serpapi", icon: "SerpSearch" },
|
{ display_name: "SerpApi", name: "serpapi", icon: "SerpSearch" },
|
||||||
|
{ display_name: "Serper", name: "serper", icon: "Serper" },
|
||||||
{ display_name: "Tavily", name: "tavily", icon: "TavilyIcon" },
|
{ display_name: "Tavily", name: "tavily", icon: "TavilyIcon" },
|
||||||
{ display_name: "Twelve Labs", name: "twelvelabs", icon: "TwelveLabs" },
|
{ display_name: "TwelveLabs", name: "twelvelabs", icon: "TwelveLabs" },
|
||||||
{ display_name: "Unstructured", name: "unstructured", icon: "Unstructured" },
|
{ display_name: "Unstructured", name: "unstructured", icon: "Unstructured" },
|
||||||
{ display_name: "Vectara", name: "vectara", icon: "Vectara" },
|
{ display_name: "Vectara", name: "vectara", icon: "Vectara" },
|
||||||
{ display_name: "VertexAI", name: "vertexai", icon: "VertexAI" },
|
{ display_name: "Vertex AI", name: "vertexai", icon: "VertexAI" },
|
||||||
{ display_name: "Wikipedia", name: "wikipedia", icon: "Wikipedia" },
|
{ display_name: "Wikipedia", name: "wikipedia", icon: "Wikipedia" },
|
||||||
{
|
{
|
||||||
display_name: "WolframAlpha",
|
display_name: "WolframAlpha",
|
||||||
|
|
@ -309,8 +310,8 @@ export const SIDEBAR_BUNDLES = [
|
||||||
icon: "WolframAlphaAPI",
|
icon: "WolframAlphaAPI",
|
||||||
},
|
},
|
||||||
{ display_name: "xAI", name: "xai", icon: "xAI" },
|
{ display_name: "xAI", name: "xai", icon: "xAI" },
|
||||||
{ display_name: "YahooSearch", name: "yahoosearch", icon: "trending-up" },
|
{ display_name: "Yahoo! Finance", name: "yahoosearch", icon: "trending-up" },
|
||||||
{ display_name: "Youtube", name: "youtube", icon: "YouTube" },
|
{ display_name: "YouTube", name: "youtube", icon: "YouTube" },
|
||||||
{ display_name: "Zep", name: "zep", icon: "ZepMemory" },
|
{ display_name: "Zep", name: "zep", icon: "ZepMemory" },
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -371,7 +372,7 @@ export const nodeIconToDisplayIconMap: Record<string, string> = {
|
||||||
ChatOutput: "MessagesSquare",
|
ChatOutput: "MessagesSquare",
|
||||||
//Integration Icons
|
//Integration Icons
|
||||||
Outlook: "Outlook",
|
Outlook: "Outlook",
|
||||||
AIML: "AI/ML",
|
AIML: "AIML",
|
||||||
AgentQL: "AgentQL",
|
AgentQL: "AgentQL",
|
||||||
LanguageModels: "BrainCircuit",
|
LanguageModels: "BrainCircuit",
|
||||||
EmbeddingModels: "Binary",
|
EmbeddingModels: "Binary",
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ test(
|
||||||
await expect(page.getByTestId("input_outputChat Input")).toBeVisible();
|
await expect(page.getByTestId("input_outputChat Input")).toBeVisible();
|
||||||
await expect(page.getByTestId("input_outputChat Output")).toBeVisible();
|
await expect(page.getByTestId("input_outputChat Output")).toBeVisible();
|
||||||
await expect(page.getByTestId("processingPrompt Template")).toBeVisible();
|
await expect(page.getByTestId("processingPrompt Template")).toBeVisible();
|
||||||
await expect(page.getByTestId("langchain_utilitiesCSVAgent")).toBeVisible();
|
await expect(page.getByTestId("langchain_utilitiesCSV Agent")).toBeVisible();
|
||||||
await expect(
|
await expect(
|
||||||
page.getByTestId("langchain_utilitiesConversationChain"),
|
page.getByTestId("langchain_utilitiesConversationChain"),
|
||||||
).toBeVisible();
|
).toBeVisible();
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { initialGPTsetup } from "../../utils/initialGPTsetup";
|
||||||
import { withEventDeliveryModes } from "../../utils/withEventDeliveryModes";
|
import { withEventDeliveryModes } from "../../utils/withEventDeliveryModes";
|
||||||
|
|
||||||
withEventDeliveryModes(
|
withEventDeliveryModes(
|
||||||
"Youtube Analysis",
|
"YouTube Analysis",
|
||||||
{ tag: ["@release", "@starter-projects"] },
|
{ tag: ["@release", "@starter-projects"] },
|
||||||
async ({ page }) => {
|
async ({ page }) => {
|
||||||
test.skip(
|
test.skip(
|
||||||
|
|
@ -27,7 +27,7 @@ withEventDeliveryModes(
|
||||||
await awaitBootstrapTest(page);
|
await awaitBootstrapTest(page);
|
||||||
|
|
||||||
await page.getByTestId("side_nav_options_all-templates").click();
|
await page.getByTestId("side_nav_options_all-templates").click();
|
||||||
await page.getByRole("heading", { name: "Youtube Analysis" }).click();
|
await page.getByRole("heading", { name: "YouTube Analysis" }).click();
|
||||||
|
|
||||||
await page.waitForSelector('[data-testid="fit_view"]', {
|
await page.waitForSelector('[data-testid="fit_view"]', {
|
||||||
timeout: 100000,
|
timeout: 100000,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import { expect, test } from "@playwright/test";
|
import { expect, test } from "@playwright/test";
|
||||||
import { addFlowToTestOnEmptyLangflow } from "../../utils/add-flow-to-test-on-empty-langflow";
|
|
||||||
import { addLegacyComponents } from "../../utils/add-legacy-components";
|
import { addLegacyComponents } from "../../utils/add-legacy-components";
|
||||||
import { adjustScreenView } from "../../utils/adjust-screen-view";
|
import { adjustScreenView } from "../../utils/adjust-screen-view";
|
||||||
import { awaitBootstrapTest } from "../../utils/await-bootstrap-test";
|
import { awaitBootstrapTest } from "../../utils/await-bootstrap-test";
|
||||||
|
|
@ -78,7 +77,7 @@ test(
|
||||||
"mem0Mem0 Chat Memory",
|
"mem0Mem0 Chat Memory",
|
||||||
"logicCondition",
|
"logicCondition",
|
||||||
"langchain_utilitiesSelf Query Retriever",
|
"langchain_utilitiesSelf Query Retriever",
|
||||||
"langchain_utilitiesCharacterTextSplitter",
|
"langchain_utilitiesCharacter Text Splitter",
|
||||||
];
|
];
|
||||||
|
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
|
|
@ -104,7 +103,7 @@ test(
|
||||||
"cohereCohere Language Models",
|
"cohereCohere Language Models",
|
||||||
"groqGroq",
|
"groqGroq",
|
||||||
"lmstudioLM Studio",
|
"lmstudioLM Studio",
|
||||||
"maritalkMaritalk",
|
"maritalkMariTalk",
|
||||||
"mistralMistralAI",
|
"mistralMistralAI",
|
||||||
"perplexityPerplexity",
|
"perplexityPerplexity",
|
||||||
"baiduQianfan",
|
"baiduQianfan",
|
||||||
|
|
|
||||||
|
|
@ -49,14 +49,14 @@ test(
|
||||||
|
|
||||||
await page.getByTestId("sidebar-search-input").click();
|
await page.getByTestId("sidebar-search-input").click();
|
||||||
await page.getByTestId("sidebar-search-input").fill("search api");
|
await page.getByTestId("sidebar-search-input").fill("search api");
|
||||||
await page.waitForSelector('[data-testid="searchapiSearch API"]', {
|
await page.waitForSelector('[data-testid="searchapiSearchApi"]', {
|
||||||
timeout: 1000,
|
timeout: 1000,
|
||||||
});
|
});
|
||||||
|
|
||||||
await zoomOut(page, 3);
|
await zoomOut(page, 3);
|
||||||
|
|
||||||
await page
|
await page
|
||||||
.getByTestId("searchapiSearch API")
|
.getByTestId("searchapiSearchApi")
|
||||||
.dragTo(page.locator('//*[@id="react-flow-id"]'), {
|
.dragTo(page.locator('//*[@id="react-flow-id"]'), {
|
||||||
targetPosition: { x: 100, y: 100 },
|
targetPosition: { x: 100, y: 100 },
|
||||||
});
|
});
|
||||||
|
|
@ -78,7 +78,7 @@ test(
|
||||||
|
|
||||||
await page.getByTestId("fit_view").click();
|
await page.getByTestId("fit_view").click();
|
||||||
|
|
||||||
await page.getByTestId("title-Search API").first().click();
|
await page.getByTestId("title-SearchApi").first().click();
|
||||||
await page.getByTestId("tool-mode-button").click();
|
await page.getByTestId("tool-mode-button").click();
|
||||||
|
|
||||||
//connection
|
//connection
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue