langflow-base-nightly 0.5.0.dev13__py3-none-any.whl → 0.5.0.dev15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/api/v1/mcp_projects.py +38 -8
- langflow/base/huggingface/model_bridge.py +10 -10
- langflow/base/models/aiml_constants.py +3 -3
- langflow/base/models/groq_constants.py +1 -1
- langflow/components/agents/mcp_component.py +1 -1
- langflow/components/aiml/aiml.py +6 -6
- langflow/components/aiml/aiml_embeddings.py +2 -2
- langflow/components/anthropic/anthropic.py +1 -4
- langflow/components/cleanlab/cleanlab_evaluator.py +15 -3
- langflow/components/datastax/astra_vectorize.py +1 -0
- langflow/components/datastax/astradb_cql.py +1 -1
- langflow/components/datastax/astradb_tool.py +3 -3
- langflow/components/datastax/cassandra.py +6 -6
- langflow/components/datastax/getenvvar.py +4 -4
- langflow/components/firecrawl/firecrawl_crawl_api.py +2 -2
- langflow/components/firecrawl/firecrawl_extract_api.py +2 -2
- langflow/components/firecrawl/firecrawl_map_api.py +2 -2
- langflow/components/firecrawl/firecrawl_scrape_api.py +2 -2
- langflow/components/google/google_generative_ai_embeddings.py +1 -1
- langflow/components/homeassistant/list_home_assistant_states.py +1 -1
- langflow/components/huggingface/huggingface.py +4 -4
- langflow/components/huggingface/huggingface_inference_api.py +4 -4
- langflow/components/langchain_utilities/character.py +1 -1
- langflow/components/langchain_utilities/csv_agent.py +1 -1
- langflow/components/maritalk/maritalk.py +4 -4
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +3 -5
- langflow/components/scrapegraph/scrapegraph_search_api.py +3 -5
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +3 -5
- langflow/components/searchapi/search.py +2 -2
- langflow/components/serper/__init__.py +3 -0
- langflow/components/serper/google_serper_api_core.py +74 -0
- langflow/components/tools/python_code_structured_tool.py +1 -1
- langflow/components/tools/yahoo_finance.py +3 -3
- langflow/components/twelvelabs/convert_astra_results.py +6 -6
- langflow/components/twelvelabs/pegasus_index.py +7 -7
- langflow/components/twelvelabs/text_embeddings.py +3 -3
- langflow/components/twelvelabs/twelvelabs_pegasus.py +4 -4
- langflow/components/twelvelabs/video_embeddings.py +2 -2
- langflow/components/vectorstores/cassandra.py +6 -6
- langflow/components/vectorstores/cassandra_graph.py +6 -6
- langflow/components/vertexai/vertexai_embeddings.py +2 -2
- langflow/components/wolframalpha/wolfram_alpha_api.py +2 -2
- langflow/components/yahoosearch/yahoo.py +2 -2
- langflow/components/youtube/playlist.py +1 -1
- langflow/frontend/assets/{SlackIcon-B1waip4k.js → SlackIcon-BuGq-sFY.js} +1 -1
- langflow/frontend/assets/{Wikipedia-C5dnUOP0.js → Wikipedia-C6mTeFwE.js} +1 -1
- langflow/frontend/assets/{Wolfram-DhcO0RVc.js → Wolfram-Cl1pdGB7.js} +1 -1
- langflow/frontend/assets/{index-CDpU78JK.js → index--2CW5frk.js} +1 -1
- langflow/frontend/assets/{index-rDnX1gJr.js → index--zt-fXWv.js} +1852 -1852
- langflow/frontend/assets/{index-BGoj1qt5.js → index-0N7rEeK6.js} +1 -1
- langflow/frontend/assets/{index-ZEtb94y9.js → index-4IouJGCA.js} +1 -1
- langflow/frontend/assets/{index-X_N2VjCI.js → index-5dPo5x5t.js} +1 -1
- langflow/frontend/assets/{index-DiC6aHWh.js → index-5mgrucK2.js} +1 -1
- langflow/frontend/assets/{index-CPg6geGH.js → index-8eNqyxH2.js} +1 -1
- langflow/frontend/assets/{index-ipP5SzLr.js → index-B0MnkGGh.js} +1 -1
- langflow/frontend/assets/{index-Cm0S83En.js → index-B3jDfKQC.js} +1 -1
- langflow/frontend/assets/{index-DOW9ZSLB.js → index-B4UxEROC.js} +1 -1
- langflow/frontend/assets/{index-CBUjLnxi.js → index-B5fGShZm.js} +1 -1
- langflow/frontend/assets/{index-DKVaEmO7.js → index-B5zxtSnZ.js} +1 -1
- langflow/frontend/assets/{index-FRFezpnl.js → index-BA8JYsJX.js} +1 -1
- langflow/frontend/assets/{index-BHZEUpSJ.js → index-BCdoJWNc.js} +1 -1
- langflow/frontend/assets/{index-DYv6Aras.js → index-BEdvRNt3.js} +1 -1
- langflow/frontend/assets/{index-Nrq24q0b.js → index-BGQ4Eq40.js} +1 -1
- langflow/frontend/assets/{index-Cg4VEh3c.js → index-BHmpJmyI.js} +1 -1
- langflow/frontend/assets/{index-VroAkSXX.js → index-BKVHa_7r.js} +1 -1
- langflow/frontend/assets/{index-Lj5U_BEs.js → index-BNQ5zM1M.js} +1 -1
- langflow/frontend/assets/{index-Ps_-SFhI.js → index-BO7aKIFQ.js} +1 -1
- langflow/frontend/assets/{index-CXUUEanr.js → index-BR987P2T.js} +1 -1
- langflow/frontend/assets/{index-DtNmksPw.js → index-BV-1aWMO.js} +1 -1
- langflow/frontend/assets/{index-DB7TCTGT.js → index-B_cNRBa2.js} +1 -1
- langflow/frontend/assets/{index-BwVK35FL.js → index-BcKPmwO5.js} +1 -1
- langflow/frontend/assets/{index-DFTYUoaZ.js → index-BeG8Pymu.js} +1 -1
- langflow/frontend/assets/{index-BlMOr3_J.js → index-BfbTtNhx.js} +1 -1
- langflow/frontend/assets/{index-C5kZL0cq.js → index-Bi_ml8kG.js} +1 -1
- langflow/frontend/assets/{index-BBGrtgHW.js → index-BjJqax0j.js} +1 -1
- langflow/frontend/assets/{index-VgSSRzOC.js → index-Br2xlOTR.js} +1 -1
- langflow/frontend/assets/{index-C0HZtOht.js → index-BrEOz1nl.js} +1 -1
- langflow/frontend/assets/{index-MzhQqWgp.js → index-BuCCNJmV.js} +1 -1
- langflow/frontend/assets/{index-C3HQLjdj.js → index-BuSDUHIr.js} +1 -1
- langflow/frontend/assets/{index-is0kQpz3.js → index-BvQ36Iz2.js} +1 -1
- langflow/frontend/assets/{index-CViOvTFf.js → index-BwpxKa4O.js} +1 -1
- langflow/frontend/assets/{index-kElqCHmt.js → index-BzIjYyV3.js} +1 -1
- langflow/frontend/assets/{index-DFiKJBMw.js → index-BzTH-yyX.js} +1 -1
- langflow/frontend/assets/{index-D3dEuwpy.js → index-C-TS0WC2.js} +1 -1
- langflow/frontend/assets/{index-DM_Uy5wE.js → index-C04LmF5t.js} +1 -1
- langflow/frontend/assets/{index-zO8eyFDr.js → index-C4sZmGLG.js} +1 -1
- langflow/frontend/assets/{index-DvfpMNxC.js → index-C73vbvpU.js} +1 -1
- langflow/frontend/assets/{index-BU-Bn5mu.js → index-C9vUZRGz.js} +1 -1
- langflow/frontend/assets/{index-nLSeiMV2.js → index-CCLR_wQ0.js} +1 -1
- langflow/frontend/assets/{index-DpxIP5eR.js → index-CE_5Fqkc.js} +1 -1
- langflow/frontend/assets/{index-DwSpFzJE.js → index-CHy7X3Wk.js} +1 -1
- langflow/frontend/assets/{index-kQTNfH4u.js → index-CJwwLDoV.js} +1 -1
- langflow/frontend/assets/{index-BC_ZSBd8.js → index-CLcXn5NP.js} +1 -1
- langflow/frontend/assets/{index-BfeYY-C1.js → index-CM1S4FuW.js} +1 -1
- langflow/frontend/assets/{index-CLbIIEk2.js → index-CMQkU6BV.js} +1 -1
- langflow/frontend/assets/{index-SG4iMGMH.js → index-COIG_tKu.js} +1 -1
- langflow/frontend/assets/{index-CKPKfZJn.js → index-COjGIAJY.js} +1 -1
- langflow/frontend/assets/{index-QtS6b7Sw.js → index-CcsiwET2.js} +1 -1
- langflow/frontend/assets/{index-CCIWuZBs.js → index-CeDSETay.js} +1 -1
- langflow/frontend/assets/{index-Dh4QIx-9.js → index-CewMquJt.js} +1 -1
- langflow/frontend/assets/{index-B5ZG67DK.js → index-CgNasvrj.js} +1 -1
- langflow/frontend/assets/{index-DpVlWsbf.js → index-Cq2PDwmy.js} +1 -1
- langflow/frontend/assets/{index-CDEm9KAj.js → index-CreSy1YL.js} +1 -1
- langflow/frontend/assets/{index-Dm2EC55c.js → index-CsgBk0rG.js} +1 -1
- langflow/frontend/assets/{index-Casu8D9q.js → index-CusNYouh.js} +1 -1
- langflow/frontend/assets/{index-XRYx-9PH.js → index-CxzVQwQJ.js} +1 -1
- langflow/frontend/assets/{index-BMXOUkQC.js → index-CyY4Zb7T.js} +1 -1
- langflow/frontend/assets/{index-gY4GknXS.js → index-Czze0hOz.js} +1 -1
- langflow/frontend/assets/{index-BONWErnQ.js → index-D23oLkWW.js} +1 -1
- langflow/frontend/assets/{index-DQHDRmym.js → index-D5vEZWvq.js} +1 -1
- langflow/frontend/assets/{index-DgAnAkZI.js → index-D6ZOAit6.js} +1 -1
- langflow/frontend/assets/{index-BrG-lJ13.js → index-DAf-p-ie.js} +1 -1
- langflow/frontend/assets/{index-CgIcVOr8.js → index-DCd88wbY.js} +1 -1
- langflow/frontend/assets/{index-9TR2hnD_.js → index-DCxyXwW-.js} +1 -1
- langflow/frontend/assets/{index-eGM7b_zA.js → index-DDGzSYvX.js} +1 -1
- langflow/frontend/assets/{index-DUE44GEX.js → index-DE6imfD9.js} +1 -1
- langflow/frontend/assets/{index-Dxt2wnqB.js → index-DIF4m9l7.js} +1 -1
- langflow/frontend/assets/{index-DH7xKo5T.js → index-DIrWUGNA.js} +1 -1
- langflow/frontend/assets/{index-D9hSZOYT.js → index-DJ-FHTsV.js} +1 -1
- langflow/frontend/assets/{index-Bt6nxewq.js → index-DNLLlQ4J.js} +1 -1
- langflow/frontend/assets/{index-8DyHY_Bk.js → index-DQRQDV3B.js} +1 -1
- langflow/frontend/assets/{index-CDuvFcaF.js → index-DS7j5zAD.js} +1 -1
- langflow/frontend/assets/{index-418YVFa2.js → index-DYiPmRgD.js} +1 -1
- langflow/frontend/assets/{index-DYrXxgrb.js → index-DYxzClr0.js} +1 -1
- langflow/frontend/assets/{index-ewyyoy2D.js → index-DZ-Tj8xK.js} +1 -1
- langflow/frontend/assets/{index-C_euB6Gl.js → index-DcUb2cV5.js} +1 -1
- langflow/frontend/assets/{index-DMumbC9j.js → index-Dd2GNuvj.js} +1 -1
- langflow/frontend/assets/{index-3biIaEbi.js → index-DetEMiy0.js} +1 -1
- langflow/frontend/assets/{index-Dn6DEQeW.js → index-DgELewjn.js} +1 -1
- langflow/frontend/assets/{index-CRjDABKd.js → index-DhoGjlQy.js} +1 -1
- langflow/frontend/assets/{index-Cg_tVm4-.js → index-DkbreZiZ.js} +1 -1
- langflow/frontend/assets/{index-BYlJ6oLH.js → index-Dkr20a-8.js} +1 -1
- langflow/frontend/assets/{index-Bbl1tT9J.js → index-Dli1rL84.js} +1 -1
- langflow/frontend/assets/{index-B6e8DnbV.js → index-Dmamz0z9.js} +1 -1
- langflow/frontend/assets/{index-CALzRXXv.js → index-Dn2VQCqb.js} +1 -1
- langflow/frontend/assets/{index-C-s9qpIS.js → index-Dof4LN2v.js} +1 -1
- langflow/frontend/assets/{index-BCSQ18YB.js → index-Dr0Evr3R.js} +1 -1
- langflow/frontend/assets/{index-CDbyKwTG.js → index-Dr2jGPJH.js} +1 -1
- langflow/frontend/assets/{index-BC8MvYGc.js → index-Du2GjDA4.js} +1 -1
- langflow/frontend/assets/{index-DZgXMtLr.js → index-Dwip-p69.js} +1 -1
- langflow/frontend/assets/{index-D3JSU9T-.js → index-DwteOrWt.js} +1 -1
- langflow/frontend/assets/{index-CDSjGlZV.js → index-DyI50yCv.js} +1 -1
- langflow/frontend/assets/{index-m4Hpi_aX.js → index-DzgWJVeU.js} +1 -1
- langflow/frontend/assets/{index-BTgluuBN.js → index-F5fn0AQz.js} +1 -1
- langflow/frontend/assets/{index-DBmHwu6w.js → index-FwjDt9L0.js} +1 -1
- langflow/frontend/assets/{index-JXRrBiMq.js → index-J52Qzbp2.js} +1 -1
- langflow/frontend/assets/index-MlhGrDTI.css +1 -0
- langflow/frontend/assets/{index-Bf5rmL-A.js → index-QqIf4MIJ.js} +1 -1
- langflow/frontend/assets/{index-JnJLq8vw.js → index-RLJPjjpM.js} +1 -1
- langflow/frontend/assets/{index-C7_J2NrZ.js → index-S0WulKUL.js} +1 -1
- langflow/frontend/assets/{index-Bn6oRo0n.js → index-TmuU10lC.js} +1 -1
- langflow/frontend/assets/{index-Dym17axM.js → index-Wxjf8dTi.js} +1 -1
- langflow/frontend/assets/{index-CmGwOqUn.js → index-Wyp-_NOT.js} +1 -1
- langflow/frontend/assets/{index-DCetRusr.js → index-_4nA4mrb.js} +1 -1
- langflow/frontend/assets/{index-DvZa-h7F.js → index-ikFClZi4.js} +1 -1
- langflow/frontend/assets/{index-ZdUecE-Q.js → index-jU2KaLOC.js} +1 -1
- langflow/frontend/assets/{index-DjQo2TKu.js → index-k5kov_IX.js} +1 -1
- langflow/frontend/assets/{index-Dcalb9GV.js → index-n58jFVmL.js} +1 -1
- langflow/frontend/assets/{index-DOD107en.js → index-oh0hcpNl.js} +1 -1
- langflow/frontend/assets/{index-CsndNop1.js → index-q-4Oj5dw.js} +1 -1
- langflow/frontend/assets/{index-D7Zt_u8q.js → index-rA5CdSsY.js} +1 -1
- langflow/frontend/assets/{index-ChqaoD3t.js → index-vYonHXpn.js} +1 -1
- langflow/frontend/assets/{index-BSw4Njsa.js → index-xi5R3Ztz.js} +1 -1
- langflow/frontend/assets/{index-606CKdUf.js → index-xsXWdFQP.js} +1 -1
- langflow/frontend/assets/{index-PR9CDiB2.js → index-xwBWKncb.js} +1 -1
- langflow/frontend/assets/{index-D6ea_8pm.js → index-y7pkRuOy.js} +1 -1
- langflow/frontend/assets/{index-gm2XOLA2.js → index-ydWO1Gui.js} +1 -1
- langflow/frontend/assets/lazyIconImports-DFVfn_d3.js +2 -0
- langflow/frontend/assets/{use-post-add-user-BanYOJbs.js → use-post-add-user-DnN2suY0.js} +1 -1
- langflow/frontend/index.html +2 -2
- langflow/initial_setup/starter_projects/Nvidia Remix.json +2 -2
- langflow/initial_setup/starter_projects/Search agent.json +3 -3
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +103 -312
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +3 -3
- langflow/initial_setup/starter_projects/Youtube Analysis.json +84 -272
- langflow/serialization/constants.py +1 -1
- langflow/services/auth/utils.py +12 -2
- langflow/services/settings/feature_flags.py +1 -1
- langflow/services/utils.py +1 -10
- {langflow_base_nightly-0.5.0.dev13.dist-info → langflow_base_nightly-0.5.0.dev15.dist-info}/METADATA +1 -1
- {langflow_base_nightly-0.5.0.dev13.dist-info → langflow_base_nightly-0.5.0.dev15.dist-info}/RECORD +183 -181
- langflow/frontend/assets/index-D4GoWOiL.css +0 -1
- langflow/frontend/assets/lazyIconImports-GHEHdmsf.js +0 -2
- {langflow_base_nightly-0.5.0.dev13.dist-info → langflow_base_nightly-0.5.0.dev15.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.0.dev13.dist-info → langflow_base_nightly-0.5.0.dev15.dist-info}/entry_points.txt +0 -0
langflow/api/v1/mcp_projects.py
CHANGED
|
@@ -369,7 +369,6 @@ async def install_mcp_config(
|
|
|
369
369
|
os_type = platform.system()
|
|
370
370
|
command = "uvx"
|
|
371
371
|
mcp_tool = "mcp-composer" if FEATURE_FLAGS.mcp_composer else "mcp-proxy"
|
|
372
|
-
args = [mcp_tool, sse_url]
|
|
373
372
|
|
|
374
373
|
# Check if running on WSL (will appear as Linux but with Microsoft in release info)
|
|
375
374
|
is_wsl = os_type == "Linux" and "microsoft" in platform.uname().release.lower()
|
|
@@ -400,21 +399,52 @@ async def install_mcp_config(
|
|
|
400
399
|
except OSError as e:
|
|
401
400
|
logger.warning("Failed to get WSL IP address: %s. Using default URL.", str(e))
|
|
402
401
|
|
|
402
|
+
# Configure args based on the MCP tool
|
|
403
|
+
oauth_env = None
|
|
404
|
+
if FEATURE_FLAGS.mcp_composer:
|
|
405
|
+
args = [mcp_tool, "--sse-url", sse_url]
|
|
406
|
+
|
|
407
|
+
# Check for auth settings and add auth parameters
|
|
408
|
+
if project.auth_settings:
|
|
409
|
+
from langflow.api.v1.schemas import AuthSettings
|
|
410
|
+
|
|
411
|
+
auth_settings = AuthSettings(**project.auth_settings)
|
|
412
|
+
args.extend(["--auth_type", auth_settings.auth_type])
|
|
413
|
+
|
|
414
|
+
oauth_env = {
|
|
415
|
+
"OAUTH_HOST": auth_settings.oauth_host,
|
|
416
|
+
"OAUTH_PORT": auth_settings.oauth_port,
|
|
417
|
+
"OAUTH_SERVER_URL": auth_settings.oauth_server_url,
|
|
418
|
+
"OAUTH_CALLBACK_PATH": auth_settings.oauth_callback_path,
|
|
419
|
+
"OAUTH_CLIENT_ID": auth_settings.oauth_client_id,
|
|
420
|
+
"OAUTH_CLIENT_SECRET": auth_settings.oauth_client_secret,
|
|
421
|
+
"OAUTH_AUTH_URL": auth_settings.oauth_auth_url,
|
|
422
|
+
"OAUTH_TOKEN_URL": auth_settings.oauth_token_url,
|
|
423
|
+
"OAUTH_MCP_SCOPE": auth_settings.oauth_mcp_scope,
|
|
424
|
+
"OAUTH_PROVIDER_SCOPE": auth_settings.oauth_provider_scope,
|
|
425
|
+
}
|
|
426
|
+
else:
|
|
427
|
+
args = [mcp_tool, sse_url]
|
|
428
|
+
|
|
403
429
|
if os_type == "Windows":
|
|
404
430
|
command = "cmd"
|
|
405
|
-
args = ["/c", "uvx",
|
|
431
|
+
args = ["/c", "uvx", *args]
|
|
406
432
|
logger.debug("Windows detected, using cmd command")
|
|
407
433
|
|
|
408
434
|
name = project.name
|
|
409
435
|
|
|
410
436
|
# Create the MCP configuration
|
|
437
|
+
server_config = {
|
|
438
|
+
"command": command,
|
|
439
|
+
"args": args,
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
# Add environment variables if mcp-composer feature flag is enabled and auth settings exist
|
|
443
|
+
if FEATURE_FLAGS.mcp_composer and oauth_env is not None:
|
|
444
|
+
server_config["env"] = oauth_env # type: ignore[assignment]
|
|
445
|
+
|
|
411
446
|
mcp_config = {
|
|
412
|
-
"mcpServers": {
|
|
413
|
-
f"lf-{sanitize_mcp_name(name)[: (MAX_MCP_SERVER_NAME_LENGTH - 4)]}": {
|
|
414
|
-
"command": command,
|
|
415
|
-
"args": args,
|
|
416
|
-
}
|
|
417
|
-
}
|
|
447
|
+
"mcpServers": {f"lf-{sanitize_mcp_name(name)[: (MAX_MCP_SERVER_NAME_LENGTH - 4)]}": server_config}
|
|
418
448
|
}
|
|
419
449
|
|
|
420
450
|
server_name = f"lf-{sanitize_mcp_name(name)[: (MAX_MCP_SERVER_NAME_LENGTH - 4)]}"
|
|
@@ -3,19 +3,19 @@ from langchain_core.language_models.chat_models import BaseChatModel
|
|
|
3
3
|
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage, ToolCall
|
|
4
4
|
from langchain_core.tools import BaseTool
|
|
5
5
|
|
|
6
|
-
# Import
|
|
6
|
+
# Import Hugging Face Model base
|
|
7
7
|
from smolagents import Model, Tool
|
|
8
8
|
from smolagents.models import ChatMessage, ChatMessageToolCall, ChatMessageToolCallDefinition
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _lc_tool_call_to_hf_tool_call(tool_call: ToolCall) -> ChatMessageToolCall:
|
|
12
|
-
"""Convert a LangChain ToolCall to a
|
|
12
|
+
"""Convert a LangChain ToolCall to a Hugging Face ChatMessageToolCall.
|
|
13
13
|
|
|
14
14
|
Args:
|
|
15
15
|
tool_call (ToolCall): LangChain tool call to convert
|
|
16
16
|
|
|
17
17
|
Returns:
|
|
18
|
-
ChatMessageToolCall: Equivalent
|
|
18
|
+
ChatMessageToolCall: Equivalent Hugging Face tool call
|
|
19
19
|
"""
|
|
20
20
|
return ChatMessageToolCall(
|
|
21
21
|
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:
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def _hf_tool_to_lc_tool(tool) -> BaseTool:
|
|
27
|
-
"""Convert a
|
|
27
|
+
"""Convert a Hugging Face Tool to a LangChain BaseTool.
|
|
28
28
|
|
|
29
29
|
Args:
|
|
30
|
-
tool (Tool):
|
|
30
|
+
tool (Tool): Hugging Face tool to convert
|
|
31
31
|
|
|
32
32
|
Returns:
|
|
33
33
|
BaseTool: Equivalent LangChain tool
|
|
34
34
|
"""
|
|
35
35
|
if not hasattr(tool, "langchain_tool"):
|
|
36
|
-
msg = "
|
|
36
|
+
msg = "Hugging Face Tool does not have a langchain_tool attribute"
|
|
37
37
|
raise ValueError(msg)
|
|
38
38
|
return tool.langchain_tool
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
class LangChainHFModel(Model):
|
|
42
|
-
"""A class bridging
|
|
42
|
+
"""A class bridging Hugging Face's `Model` interface with a LangChain `BaseChatModel`.
|
|
43
43
|
|
|
44
|
-
This adapter allows using any LangChain chat model with the
|
|
44
|
+
This adapter allows using any LangChain chat model with the Hugging Face interface.
|
|
45
45
|
It handles conversion of message formats and tool calls between the two frameworks.
|
|
46
46
|
|
|
47
47
|
Usage:
|
|
@@ -68,7 +68,7 @@ class LangChainHFModel(Model):
|
|
|
68
68
|
tools_to_call_from: list[Tool] | None = None,
|
|
69
69
|
**kwargs,
|
|
70
70
|
) -> ChatMessage:
|
|
71
|
-
"""Process messages through the LangChain model and return
|
|
71
|
+
"""Process messages through the LangChain model and return Hugging Face format.
|
|
72
72
|
|
|
73
73
|
Args:
|
|
74
74
|
messages: List of message dictionaries with 'role' and 'content' keys
|
|
@@ -78,7 +78,7 @@ class LangChainHFModel(Model):
|
|
|
78
78
|
**kwargs: Additional arguments passed to the LangChain model
|
|
79
79
|
|
|
80
80
|
Returns:
|
|
81
|
-
ChatMessage: Response in
|
|
81
|
+
ChatMessage: Response in Hugging Face format
|
|
82
82
|
"""
|
|
83
83
|
if grammar:
|
|
84
84
|
msg = "Grammar is not yet supported."
|
|
@@ -17,10 +17,10 @@ class AimlModels:
|
|
|
17
17
|
response = client.get("https://api.aimlapi.com/models")
|
|
18
18
|
response.raise_for_status()
|
|
19
19
|
except httpx.RequestError as e:
|
|
20
|
-
msg = "Failed to connect to the
|
|
20
|
+
msg = "Failed to connect to the AI/ML API."
|
|
21
21
|
raise APIConnectionError(msg) from e
|
|
22
22
|
except httpx.HTTPStatusError as e:
|
|
23
|
-
msg = f"
|
|
23
|
+
msg = f"AI/ML API responded with status code: {e.response.status_code}"
|
|
24
24
|
raise APIError(
|
|
25
25
|
message=msg,
|
|
26
26
|
body=None,
|
|
@@ -31,7 +31,7 @@ class AimlModels:
|
|
|
31
31
|
models = response.json().get("data", [])
|
|
32
32
|
self.separate_models_by_type(models)
|
|
33
33
|
except (ValueError, KeyError, TypeError) as e:
|
|
34
|
-
msg = "Failed to parse response data from
|
|
34
|
+
msg = "Failed to parse response data from AI/ML API. The format may be incorrect."
|
|
35
35
|
raise ValueError(msg) from e
|
|
36
36
|
|
|
37
37
|
def separate_models_by_type(self, models):
|
|
@@ -97,7 +97,7 @@ GROQ_MODELS_DETAILED = [
|
|
|
97
97
|
create_model_metadata( # OpenAI
|
|
98
98
|
provider="Groq", name="whisper-large-v3-turbo", icon="Groq", not_supported=True
|
|
99
99
|
),
|
|
100
|
-
create_model_metadata( #
|
|
100
|
+
create_model_metadata( # Hugging Face
|
|
101
101
|
provider="Groq", name="distil-whisper-large-v3-en", icon="Groq", not_supported=True
|
|
102
102
|
),
|
|
103
103
|
]
|
langflow/components/aiml/aiml.py
CHANGED
|
@@ -17,8 +17,8 @@ from langflow.inputs.inputs import (
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class AIMLModelComponent(LCModelComponent):
|
|
20
|
-
display_name = "
|
|
21
|
-
description = "Generates text using
|
|
20
|
+
display_name = "AI/ML API"
|
|
21
|
+
description = "Generates text using AI/ML API LLMs."
|
|
22
22
|
icon = "AIML"
|
|
23
23
|
name = "AIMLModel"
|
|
24
24
|
documentation = "https://docs.aimlapi.com/api-reference"
|
|
@@ -42,15 +42,15 @@ class AIMLModelComponent(LCModelComponent):
|
|
|
42
42
|
),
|
|
43
43
|
StrInput(
|
|
44
44
|
name="aiml_api_base",
|
|
45
|
-
display_name="
|
|
45
|
+
display_name="AI/ML API Base",
|
|
46
46
|
advanced=True,
|
|
47
|
-
info="The base URL of the
|
|
47
|
+
info="The base URL of the API. Defaults to https://api.aimlapi.com . "
|
|
48
48
|
"You can change this to use other APIs like JinaChat, LocalAI and Prem.",
|
|
49
49
|
),
|
|
50
50
|
SecretStrInput(
|
|
51
51
|
name="api_key",
|
|
52
|
-
display_name="
|
|
53
|
-
info="The
|
|
52
|
+
display_name="AI/ML API Key",
|
|
53
|
+
info="The AI/ML API Key to use for the OpenAI model.",
|
|
54
54
|
advanced=False,
|
|
55
55
|
value="AIML_API_KEY",
|
|
56
56
|
required=True,
|
|
@@ -6,9 +6,9 @@ from langflow.io import SecretStrInput
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class AIMLEmbeddingsComponent(LCEmbeddingsModel):
|
|
9
|
-
display_name = "AI/ML Embeddings"
|
|
9
|
+
display_name = "AI/ML API Embeddings"
|
|
10
10
|
description = "Generate embeddings using the AI/ML API."
|
|
11
|
-
icon = "
|
|
11
|
+
icon = "AIML"
|
|
12
12
|
name = "AIMLEmbeddings"
|
|
13
13
|
|
|
14
14
|
inputs = [
|
|
@@ -19,7 +19,7 @@ from langflow.schema.dotdict import dotdict
|
|
|
19
19
|
|
|
20
20
|
class AnthropicModelComponent(LCModelComponent):
|
|
21
21
|
display_name = "Anthropic"
|
|
22
|
-
description = "Generate text using Anthropic
|
|
22
|
+
description = "Generate text using Anthropic's Messages API and models."
|
|
23
23
|
icon = "Anthropic"
|
|
24
24
|
name = "AnthropicModel"
|
|
25
25
|
|
|
@@ -74,9 +74,6 @@ class AnthropicModelComponent(LCModelComponent):
|
|
|
74
74
|
value=False,
|
|
75
75
|
real_time_refresh=True,
|
|
76
76
|
),
|
|
77
|
-
MessageTextInput(
|
|
78
|
-
name="prefill", display_name="Prefill", info="Prefill text to guide the model's response.", advanced=True
|
|
79
|
-
),
|
|
80
77
|
]
|
|
81
78
|
|
|
82
79
|
def build_model(self) -> LanguageModel: # type: ignore[type-var]
|
|
@@ -113,9 +113,21 @@ class CleanlabEvaluator(Component):
|
|
|
113
113
|
]
|
|
114
114
|
|
|
115
115
|
outputs = [
|
|
116
|
-
Output(
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
Output(
|
|
117
|
+
display_name="Response",
|
|
118
|
+
name="response_passthrough",
|
|
119
|
+
method="pass_response",
|
|
120
|
+
types=["Message"],
|
|
121
|
+
group_outputs=True,
|
|
122
|
+
),
|
|
123
|
+
Output(display_name="Trust Score", name="score", method="get_score", types=["number"], group_outputs=True),
|
|
124
|
+
Output(
|
|
125
|
+
display_name="Explanation",
|
|
126
|
+
name="explanation",
|
|
127
|
+
method="get_explanation",
|
|
128
|
+
types=["Message"],
|
|
129
|
+
group_outputs=True,
|
|
130
|
+
),
|
|
119
131
|
]
|
|
120
132
|
|
|
121
133
|
def _evaluate_once(self):
|
|
@@ -12,6 +12,7 @@ class AstraVectorizeComponent(Component):
|
|
|
12
12
|
"This component is deprecated. Please use the Astra DB Component directly."
|
|
13
13
|
)
|
|
14
14
|
documentation: str = "https://docs.datastax.com/en/astra-db-serverless/databases/embedding-generation.html"
|
|
15
|
+
legacy = True
|
|
15
16
|
icon = "AstraDB"
|
|
16
17
|
name = "AstraVectorize"
|
|
17
18
|
|
|
@@ -277,7 +277,7 @@ class AstraDBCQLToolComponent(LCToolComponent):
|
|
|
277
277
|
name (str, optional): The name of the tool.
|
|
278
278
|
|
|
279
279
|
Returns:
|
|
280
|
-
Tool: The built
|
|
280
|
+
Tool: The built Astra DB tool.
|
|
281
281
|
"""
|
|
282
282
|
schema_dict = self.create_args_schema()
|
|
283
283
|
return StructuredTool.from_function(
|
|
@@ -268,7 +268,7 @@ class AstraDBToolComponent(LCToolComponent):
|
|
|
268
268
|
return tool
|
|
269
269
|
|
|
270
270
|
def projection_args(self, input_str: str) -> dict | None:
|
|
271
|
-
"""Build the projection arguments for the
|
|
271
|
+
"""Build the projection arguments for the Astra DB query."""
|
|
272
272
|
elements = input_str.split(",")
|
|
273
273
|
result = {}
|
|
274
274
|
|
|
@@ -329,7 +329,7 @@ class AstraDBToolComponent(LCToolComponent):
|
|
|
329
329
|
raise ValueError(msg)
|
|
330
330
|
|
|
331
331
|
def build_filter(self, args: dict, filter_settings: list) -> dict:
|
|
332
|
-
"""Build filter dictionary for
|
|
332
|
+
"""Build filter dictionary for Astra DB query.
|
|
333
333
|
|
|
334
334
|
Args:
|
|
335
335
|
args: Dictionary of arguments from the tool
|
|
@@ -370,7 +370,7 @@ class AstraDBToolComponent(LCToolComponent):
|
|
|
370
370
|
return filters
|
|
371
371
|
|
|
372
372
|
def run_model(self, **args) -> Data | list[Data]:
|
|
373
|
-
"""Run the query to get the data from the
|
|
373
|
+
"""Run the query to get the data from the Astra DB collection."""
|
|
374
374
|
collection = self._build_collection()
|
|
375
375
|
sort = {}
|
|
376
376
|
|
|
@@ -13,28 +13,28 @@ class CassandraChatMemory(LCChatMemoryComponent):
|
|
|
13
13
|
MessageTextInput(
|
|
14
14
|
name="database_ref",
|
|
15
15
|
display_name="Contact Points / Astra Database ID",
|
|
16
|
-
info="Contact points for the database (or
|
|
16
|
+
info="Contact points for the database (or Astra DB database ID)",
|
|
17
17
|
required=True,
|
|
18
18
|
),
|
|
19
19
|
MessageTextInput(
|
|
20
|
-
name="username", display_name="Username", info="Username for the database (leave empty for
|
|
20
|
+
name="username", display_name="Username", info="Username for the database (leave empty for Astra DB)."
|
|
21
21
|
),
|
|
22
22
|
SecretStrInput(
|
|
23
23
|
name="token",
|
|
24
|
-
display_name="Password /
|
|
25
|
-
info="User password for the database (or
|
|
24
|
+
display_name="Password / Astra DB Token",
|
|
25
|
+
info="User password for the database (or Astra DB token).",
|
|
26
26
|
required=True,
|
|
27
27
|
),
|
|
28
28
|
MessageTextInput(
|
|
29
29
|
name="keyspace",
|
|
30
30
|
display_name="Keyspace",
|
|
31
|
-
info="Table Keyspace (or
|
|
31
|
+
info="Table Keyspace (or Astra DB namespace).",
|
|
32
32
|
required=True,
|
|
33
33
|
),
|
|
34
34
|
MessageTextInput(
|
|
35
35
|
name="table_name",
|
|
36
36
|
display_name="Table Name",
|
|
37
|
-
info="The name of the table (or
|
|
37
|
+
info="The name of the table (or Astra DB collection) where vectors will be stored.",
|
|
38
38
|
required=True,
|
|
39
39
|
),
|
|
40
40
|
MessageTextInput(
|
|
@@ -7,20 +7,20 @@ from langflow.template.field.base import Output
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class GetEnvVar(Component):
|
|
10
|
-
display_name = "Get
|
|
11
|
-
description = "
|
|
10
|
+
display_name = "Get Environment Variable"
|
|
11
|
+
description = "Gets the value of an environment variable from the system."
|
|
12
12
|
icon = "AstraDB"
|
|
13
13
|
|
|
14
14
|
inputs = [
|
|
15
15
|
StrInput(
|
|
16
16
|
name="env_var_name",
|
|
17
|
-
display_name="
|
|
17
|
+
display_name="Environment Variable Name",
|
|
18
18
|
info="Name of the environment variable to get",
|
|
19
19
|
)
|
|
20
20
|
]
|
|
21
21
|
|
|
22
22
|
outputs = [
|
|
23
|
-
Output(display_name="
|
|
23
|
+
Output(display_name="Environment Variable Value", name="env_var_value", method="process_inputs"),
|
|
24
24
|
]
|
|
25
25
|
|
|
26
26
|
def process_inputs(self) -> Message:
|
|
@@ -6,8 +6,8 @@ from langflow.schema.data import Data
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class FirecrawlCrawlApi(Component):
|
|
9
|
-
display_name: str = "
|
|
10
|
-
description: str = "
|
|
9
|
+
display_name: str = "Firecrawl Crawl API"
|
|
10
|
+
description: str = "Crawls a URL and returns the results."
|
|
11
11
|
name = "FirecrawlCrawlApi"
|
|
12
12
|
|
|
13
13
|
documentation: str = "https://docs.firecrawl.dev/v1/api-reference/endpoint/crawl-post"
|
|
@@ -12,8 +12,8 @@ from langflow.schema.data import Data
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class FirecrawlExtractApi(Component):
|
|
15
|
-
display_name: str = "
|
|
16
|
-
description: str = "
|
|
15
|
+
display_name: str = "Firecrawl Extract API"
|
|
16
|
+
description: str = "Extracts data from a URL."
|
|
17
17
|
name = "FirecrawlExtractApi"
|
|
18
18
|
|
|
19
19
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/extract"
|
|
@@ -9,8 +9,8 @@ from langflow.schema.data import Data
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class FirecrawlMapApi(Component):
|
|
12
|
-
display_name: str = "
|
|
13
|
-
description: str = "
|
|
12
|
+
display_name: str = "Firecrawl Map API"
|
|
13
|
+
description: str = "Maps a URL and returns the results."
|
|
14
14
|
name = "FirecrawlMapApi"
|
|
15
15
|
|
|
16
16
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/map"
|
|
@@ -10,8 +10,8 @@ from langflow.schema.data import Data
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class FirecrawlScrapeApi(Component):
|
|
13
|
-
display_name: str = "
|
|
14
|
-
description: str = "
|
|
13
|
+
display_name: str = "Firecrawl Scrape API"
|
|
14
|
+
description: str = "Scrapes a URL and returns the results."
|
|
15
15
|
name = "FirecrawlScrapeApi"
|
|
16
16
|
|
|
17
17
|
documentation: str = "https://docs.firecrawl.dev/api-reference/endpoint/scrape"
|
|
@@ -24,7 +24,7 @@ class GoogleGenerativeAIEmbeddingsComponent(Component):
|
|
|
24
24
|
"found in the langchain-google-genai package."
|
|
25
25
|
)
|
|
26
26
|
documentation: str = "https://python.langchain.com/v0.2/docs/integrations/text_embedding/google_generative_ai/"
|
|
27
|
-
icon = "
|
|
27
|
+
icon = "GoogleGenerativeAI"
|
|
28
28
|
name = "Google Generative AI Embeddings"
|
|
29
29
|
|
|
30
30
|
inputs = [
|
|
@@ -12,7 +12,7 @@ from langflow.schema.data import Data
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ListHomeAssistantStates(LCToolComponent):
|
|
15
|
-
display_name: str = "List
|
|
15
|
+
display_name: str = "List Home Assistant States"
|
|
16
16
|
description: str = (
|
|
17
17
|
"Retrieve states from Home Assistant. "
|
|
18
18
|
"The agent only needs to specify 'filter_domain' (optional). "
|
|
@@ -16,7 +16,7 @@ DEFAULT_MODEL = "meta-llama/Llama-3.3-70B-Instruct"
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class HuggingFaceEndpointsComponent(LCModelComponent):
|
|
19
|
-
display_name: str = "
|
|
19
|
+
display_name: str = "Hugging Face"
|
|
20
20
|
description: str = "Generate text using Hugging Face Inference APIs."
|
|
21
21
|
icon = "HuggingFace"
|
|
22
22
|
name = "HuggingFaceModel"
|
|
@@ -26,7 +26,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
|
|
26
26
|
DropdownInput(
|
|
27
27
|
name="model_id",
|
|
28
28
|
display_name="Model ID",
|
|
29
|
-
info="Select a model from
|
|
29
|
+
info="Select a model from Hugging Face Hub",
|
|
30
30
|
options=[
|
|
31
31
|
DEFAULT_MODEL,
|
|
32
32
|
"mistralai/Mixtral-8x7B-Instruct-v0.1",
|
|
@@ -44,7 +44,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
|
|
44
44
|
StrInput(
|
|
45
45
|
name="custom_model",
|
|
46
46
|
display_name="Custom Model ID",
|
|
47
|
-
info="Enter a custom model ID from
|
|
47
|
+
info="Enter a custom model ID from Hugging Face Hub",
|
|
48
48
|
value="",
|
|
49
49
|
show=False,
|
|
50
50
|
required=True,
|
|
@@ -191,7 +191,7 @@ class HuggingFaceEndpointsComponent(LCModelComponent):
|
|
|
191
191
|
repetition_penalty=repetition_penalty,
|
|
192
192
|
)
|
|
193
193
|
except Exception as e:
|
|
194
|
-
msg = "Could not connect to
|
|
194
|
+
msg = "Could not connect to Hugging Face Endpoints API."
|
|
195
195
|
raise ValueError(msg) from e
|
|
196
196
|
|
|
197
197
|
return llm
|
|
@@ -13,8 +13,8 @@ from langflow.io import MessageTextInput, Output, SecretStrInput
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
|
16
|
-
display_name = "
|
|
17
|
-
description = "Generate embeddings using
|
|
16
|
+
display_name = "Hugging Face Embeddings Inference"
|
|
17
|
+
description = "Generate embeddings using Hugging Face Text Embeddings Inference (TEI)"
|
|
18
18
|
documentation = "https://huggingface.co/docs/text-embeddings-inference/index"
|
|
19
19
|
icon = "HuggingFace"
|
|
20
20
|
name = "HuggingFaceInferenceAPIEmbeddings"
|
|
@@ -66,7 +66,7 @@ class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
|
|
66
66
|
raise ValueError(msg) from e
|
|
67
67
|
|
|
68
68
|
if response.status_code != requests.codes.ok:
|
|
69
|
-
msg = f"
|
|
69
|
+
msg = f"Hugging Face health check failed: {response.status_code}"
|
|
70
70
|
raise ValueError(msg)
|
|
71
71
|
# returning True to solve linting error
|
|
72
72
|
return True
|
|
@@ -102,5 +102,5 @@ class HuggingFaceInferenceAPIEmbeddingsComponent(LCEmbeddingsModel):
|
|
|
102
102
|
try:
|
|
103
103
|
return self.create_huggingface_embeddings(api_key, api_url, self.model_name)
|
|
104
104
|
except Exception as e:
|
|
105
|
-
msg = "Could not connect to
|
|
105
|
+
msg = "Could not connect to Hugging Face Inference API."
|
|
106
106
|
raise ValueError(msg) from e
|
|
@@ -8,7 +8,7 @@ from langflow.utils.util import unescape_string
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class CharacterTextSplitterComponent(LCTextSplitterComponent):
|
|
11
|
-
display_name = "
|
|
11
|
+
display_name = "Character Text Splitter"
|
|
12
12
|
description = "Split text by number of characters."
|
|
13
13
|
documentation = "https://docs.langflow.org/components/text-splitters#charactertextsplitter"
|
|
14
14
|
name = "CharacterTextSplitter"
|
|
@@ -14,7 +14,7 @@ from langflow.template.field.base import Output
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class CSVAgentComponent(LCAgentComponent):
|
|
17
|
-
display_name = "
|
|
17
|
+
display_name = "CSV Agent"
|
|
18
18
|
description = "Construct a CSV agent from a CSV and tools."
|
|
19
19
|
documentation = "https://python.langchain.com/docs/modules/agents/toolkits/csv"
|
|
20
20
|
name = "CSVAgent"
|
|
@@ -7,8 +7,8 @@ from langflow.inputs.inputs import DropdownInput, FloatInput, IntInput, SecretSt
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class MaritalkModelComponent(LCModelComponent):
|
|
10
|
-
display_name = "
|
|
11
|
-
description = "Generates text using
|
|
10
|
+
display_name = "MariTalk"
|
|
11
|
+
description = "Generates text using MariTalk LLMs."
|
|
12
12
|
icon = "Maritalk"
|
|
13
13
|
name = "Maritalk"
|
|
14
14
|
inputs = [
|
|
@@ -29,8 +29,8 @@ class MaritalkModelComponent(LCModelComponent):
|
|
|
29
29
|
),
|
|
30
30
|
SecretStrInput(
|
|
31
31
|
name="api_key",
|
|
32
|
-
display_name="
|
|
33
|
-
info="The
|
|
32
|
+
display_name="MariTalk API Key",
|
|
33
|
+
info="The MariTalk API Key to use for authentication.",
|
|
34
34
|
advanced=False,
|
|
35
35
|
),
|
|
36
36
|
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
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ScrapeGraphMarkdownifyApi(Component):
|
|
11
|
-
display_name: str = "
|
|
12
|
-
description: str = "
|
|
13
|
-
Given a URL, it will return the markdownified content of the website.
|
|
14
|
-
More info at https://docs.scrapegraphai.com/services/markdownify"""
|
|
11
|
+
display_name: str = "ScrapeGraph Markdownify API"
|
|
12
|
+
description: str = "Given a URL, it will return the markdownified content of the website."
|
|
15
13
|
name = "ScrapeGraphMarkdownifyApi"
|
|
16
14
|
|
|
17
15
|
output_types: list[str] = ["Document"]
|
|
18
|
-
documentation: str = "https://docs.scrapegraphai.com/
|
|
16
|
+
documentation: str = "https://docs.scrapegraphai.com/services/markdownify"
|
|
19
17
|
|
|
20
18
|
inputs = [
|
|
21
19
|
SecretStrInput(
|
|
@@ -8,13 +8,11 @@ from langflow.schema.data import Data
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ScrapeGraphSearchApi(Component):
|
|
11
|
-
display_name: str = "
|
|
12
|
-
description: str = "
|
|
13
|
-
Given a search prompt, it will return search results using ScrapeGraph's search functionality.
|
|
14
|
-
More info at https://docs.scrapegraphai.com/services/searchscraper"""
|
|
11
|
+
display_name: str = "ScrapeGraph Search API"
|
|
12
|
+
description: str = "Given a search prompt, it will return search results using ScrapeGraph's search functionality."
|
|
15
13
|
name = "ScrapeGraphSearchApi"
|
|
16
14
|
|
|
17
|
-
documentation: str = "https://docs.scrapegraphai.com/
|
|
15
|
+
documentation: str = "https://docs.scrapegraphai.com/services/searchscraper"
|
|
18
16
|
icon = "ScrapeGraph"
|
|
19
17
|
|
|
20
18
|
inputs = [
|
|
@@ -8,14 +8,12 @@ from langflow.schema.data import Data
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class ScrapeGraphSmartScraperApi(Component):
|
|
11
|
-
display_name: str = "
|
|
12
|
-
description: str = "
|
|
13
|
-
Given a URL, it will return the structured data of the website.
|
|
14
|
-
More info at https://docs.scrapegraphai.com/services/smartscraper"""
|
|
11
|
+
display_name: str = "ScrapeGraph Smart Scraper API"
|
|
12
|
+
description: str = "Given a URL, it will return the structured data of the website."
|
|
15
13
|
name = "ScrapeGraphSmartScraperApi"
|
|
16
14
|
|
|
17
15
|
output_types: list[str] = ["Document"]
|
|
18
|
-
documentation: str = "https://docs.scrapegraphai.com/
|
|
16
|
+
documentation: str = "https://docs.scrapegraphai.com/services/smartscraper"
|
|
19
17
|
|
|
20
18
|
inputs = [
|
|
21
19
|
SecretStrInput(
|
|
@@ -10,8 +10,8 @@ from langflow.schema.dataframe import DataFrame
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class SearchComponent(Component):
|
|
13
|
-
display_name: str = "
|
|
14
|
-
description: str = "
|
|
13
|
+
display_name: str = "SearchApi"
|
|
14
|
+
description: str = "Calls the SearchApi API with result limiting. Supports Google, Bing and DuckDuckGo."
|
|
15
15
|
documentation: str = "https://www.searchapi.io/docs/google"
|
|
16
16
|
icon = "SearchAPI"
|
|
17
17
|
|