Merge remote-tracking branch 'origin/cz/mergeAll' into fix/edited_component

This commit is contained in:
Lucas Oliveira 2024-06-07 11:58:56 -03:00
commit 2232c2106e
145 changed files with 1837 additions and 2109 deletions

View file

@ -4,12 +4,12 @@ Langflow's Command Line Interface (CLI) is a powerful tool that allows you to in
The available commands are below. Navigate to their individual sections of this page to see the parameters.
* [langflow](#overview)
* [langflow api-key](#langflow-api-key)
* [langflow copy-db](#langflow-copy-db)
* [langflow migration](#langflow-migration)
* [langflow run](#langflow-run)
* [langflow superuser](#langflow-superuser)
- [langflow](#overview)
- [langflow api-key](#langflow-api-key)
- [langflow copy-db](#langflow-copy-db)
- [langflow migration](#langflow-migration)
- [langflow run](#langflow-run)
- [langflow superuser](#langflow-superuser)
## Overview
@ -23,21 +23,21 @@ langflow --help
python -m langflow
```
| Command | Description |
| ------- | ----------- |
| `api-key` | Creates an API key for the default superuser if AUTO_LOGIN is enabled. |
| `copy-db` | Copy the database files to the current directory (`which langflow`). |
| `migration` | Run or test migrations. |
| `run` | Run the Langflow. |
| `superuser` | Create a superuser. |
| Command | Description |
| ----------- | ---------------------------------------------------------------------- |
| `api-key` | Creates an API key for the default superuser if AUTO_LOGIN is enabled. |
| `copy-db` | Copy the database files to the current directory (`which langflow`). |
| `migration` | Run or test migrations. |
| `run` | Run the Langflow. |
| `superuser` | Create a superuser. |
### Options
| Option | Description |
| ------ | ----------- |
| `--install-completion` | Install completion for the current shell. |
| `--show-completion` | Show completion for the current shell, to copy it or customize the installation. |
| `--help` | Show this message and exit. |
| Option | Description |
| ---------------------- | -------------------------------------------------------------------------------- |
| `--install-completion` | Install completion for the current shell. |
| `--show-completion` | Show completion for the current shell, to copy it or customize the installation. |
| `--help` | Show this message and exit. |
## langflow api-key
@ -61,10 +61,10 @@ python -m langflow api-key
### Options
| Option | Type | Description |
|------------------|------|-------------------------------------------------------------|
| --log-level | TEXT | Logging level. [env var: LANGFLOW_LOG_LEVEL] [default: error] |
| --help | | Show this message and exit. |
| Option | Type | Description |
| ----------- | ---- | ------------------------------------------------------------- |
| --log-level | TEXT | Logging level. [env var: LANGFLOW_LOG_LEVEL] [default: error] |
| --help | | Show this message and exit. |
## langflow copy-db
@ -87,12 +87,12 @@ python -m langflow migration
```
### Options
| Option | Description |
|-----------------|-------------------------------------------------------------|
| `--test, --no-test` | Run migrations in test mode. [default: test] |
| `--fix, --no-fix` | Fix migrations. This is a destructive operation, and should only be used if you know what you are doing. [default: no-fix] |
| `--help` | Show this message and exit. |
| Option | Description |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `--test, --no-test` | Run migrations in test mode. [default: test] |
| `--fix, --no-fix` | Fix migrations. This is a destructive operation, and should only be used if you know what you are doing. [default: no-fix] |
| `--help` | Show this message and exit. |
## langflow run
@ -106,26 +106,26 @@ python -m langflow run
### Options
| Option | Description |
|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `--help` | Displays all available options. |
| `--host` | Defines the host to bind the server to. Can be set using the `LANGFLOW_HOST` environment variable. The default is `127.0.0.1`. |
| `--workers` | Sets the number of worker processes. Can be set using the `LANGFLOW_WORKERS` environment variable. The default is `1`. |
| `--timeout` | Sets the worker timeout in seconds. The default is `60`. |
| `--port` | Sets the port to listen on. Can be set using the `LANGFLOW_PORT` environment variable. The default is `7860`. |
| `--env-file` | Specifies the path to the .env file containing environment variables. The default is `.env`. |
| `--log-level` | Defines the logging level. Can be set using the `LANGFLOW_LOG_LEVEL` environment variable. The default is `critical`. |
| `--components-path` | Specifies the path to the directory containing custom components. Can be set using the `LANGFLOW_COMPONENTS_PATH` environment variable. The default is `langflow/components`. |
| `--log-file` | Specifies the path to the log file. Can be set using the `LANGFLOW_LOG_FILE` environment variable. The default is `logs/langflow.log`. |
| `--cache` | Select the type of cache to use. Options are `InMemoryCache` and `SQLiteCache`. Can be set using the `LANGFLOW_LANGCHAIN_CACHE` environment variable. The default is `SQLiteCache`. |
| `--dev`/`--no-dev` | Toggles the development mode. The default is `no-dev`. |
| `--path` | Specifies the path to the frontend directory containing build files. This option is for development purposes only. Can be set using the `LANGFLOW_FRONTEND_PATH` environment variable. |
| `--open-browser`/`--no-open-browser`| Toggles the option to open the browser after starting the server. Can be set using the `LANGFLOW_OPEN_BROWSER` environment variable. The default is `open-browser`. |
| `--remove-api-keys`/`--no-remove-api-keys`| Toggles the option to remove API keys from the projects saved in the database. Can be set using the `LANGFLOW_REMOVE_API_KEYS` environment variable. The default is `no-remove-api-keys`. |
| `--install-completion [bash\|zsh\|fish\|powershell\|pwsh]`| Installs completion for the specified shell. |
| `--show-completion [bash\|zsh\|fish\|powershell\|pwsh]` | Shows completion for the specified shell, allowing you to copy it or customize the installation. |
| `--backend-only` | This parameter, with a default value of `False`, allows running only the backend server without the frontend. It can also be set using the `LANGFLOW_BACKEND_ONLY` environment variable. For more, see [Backend-only](../deployment/backend-only.md).|
| `--store` | This parameter, with a default value of `True`, enables the store features, use `--no-store` to deactivate it. It can be configured using the `LANGFLOW_STORE` environment variable. |
| Option | Description |
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--help` | Displays all available options. |
| `--host` | Defines the host to bind the server to. Can be set using the `LANGFLOW_HOST` environment variable. The default is `127.0.0.1`. |
| `--workers` | Sets the number of worker processes. Can be set using the `LANGFLOW_WORKERS` environment variable. The default is `1`. |
| `--timeout` | Sets the worker timeout in seconds. The default is `60`. |
| `--port` | Sets the port to listen on. Can be set using the `LANGFLOW_PORT` environment variable. The default is `7860`. |
| `--env-file` | Specifies the path to the .env file containing environment variables. The default is `.env`. |
| `--log-level` | Defines the logging level. Can be set using the `LANGFLOW_LOG_LEVEL` environment variable. The default is `critical`. |
| `--components-path` | Specifies the path to the directory containing custom components. Can be set using the `LANGFLOW_COMPONENTS_PATH` environment variable. The default is `langflow/components`. |
| `--log-file` | Specifies the path to the log file. Can be set using the `LANGFLOW_LOG_FILE` environment variable. The default is `logs/langflow.log`. |
| `--cache` | Select the type of cache to use. Options are `InMemoryCache` and `SQLiteCache`. Can be set using the `LANGFLOW_LANGCHAIN_CACHE` environment variable. The default is `SQLiteCache`. |
| `--dev`/`--no-dev` | Toggles the development mode. The default is `no-dev`. |
| `--path` | Specifies the path to the frontend directory containing build files. This option is for development purposes only. Can be set using the `LANGFLOW_FRONTEND_PATH` environment variable. |
| `--open-browser`/`--no-open-browser` | Toggles the option to open the browser after starting the server. Can be set using the `LANGFLOW_OPEN_BROWSER` environment variable. The default is `open-browser`. |
| `--remove-api-keys`/`--no-remove-api-keys` | Toggles the option to remove API keys from the projects saved in the database. Can be set using the `LANGFLOW_REMOVE_API_KEYS` environment variable. The default is `no-remove-api-keys`. |
| `--install-completion [bash\|zsh\|fish\|powershell\|pwsh]` | Installs completion for the specified shell. |
| `--show-completion [bash\|zsh\|fish\|powershell\|pwsh]` | Shows completion for the specified shell, allowing you to copy it or customize the installation. |
| `--backend-only` | This parameter, with a default value of `False`, allows running only the backend server without the frontend. It can also be set using the `LANGFLOW_BACKEND_ONLY` environment variable. For more, see [Backend-only](../deployment/backend-only.md). |
| `--store` | This parameter, with a default value of `True`, enables the store features, use `--no-store` to deactivate it. It can be configured using the `LANGFLOW_STORE` environment variable. |
#### Environment Variables
@ -145,10 +145,9 @@ python -m langflow superuser
### Options
| Option | Type | Description |
|----------------|-------|-------------------------------------------------------------|
| `--username` | TEXT | Username for the superuser. [default: None] [required] |
| `--password` | TEXT | Password for the superuser. [default: None] [required] |
| `--log-level` | TEXT | Logging level. [env var: LANGFLOW_LOG_LEVEL] [default: error] |
| `--help` | | Show this message and exit. |
| Option | Type | Description |
| ------------- | ---- | ------------------------------------------------------------- |
| `--username` | TEXT | Username for the superuser. [default: None] [required] |
| `--password` | TEXT | Password for the superuser. [default: None] [required] |
| `--log-level` | TEXT | Logging level. [env var: LANGFLOW_LOG_LEVEL] [default: error] |
| `--help` | | Show this message and exit. |

View file

@ -1,4 +1,5 @@
# Backend-only
You can run Langflow in `--backend-only` mode to expose your Langflow app as an API, without running the frontend UI.
Start langflow in backend-only mode with `python3 -m langflow run --backend-only`.
@ -8,17 +9,18 @@ Langflow will now serve requests to its API without the frontend running.
## Prerequisites
* [Langflow installed](../getting-started/install-langflow.mdx)
- [Langflow installed](../getting-started/install-langflow.mdx)
* [OpenAI API key](https://platform.openai.com)
- [OpenAI API key](https://platform.openai.com)
* [A Langflow flow created](../starter-projects/basic-prompting.mdx)
- [A Langflow flow created](../starter-projects/basic-prompting.mdx)
## Download your flow's curl call
1. Click API.
2. Click **curl** > **Copy code** and save the code to your local machine.
It will look something like this:
It will look something like this:
```curl
curl -X POST \
"http://127.0.0.1:7864/api/v1/run/ef7e0554-69e5-4e3e-ab29-ee83bcd8d9ef?stream=false" \
@ -33,19 +35,22 @@ curl -X POST \
"ChatInput-xXC4F": {}
}}'
```
Note the flow ID of `ef7e0554-69e5-4e3e-ab29-ee83bcd8d9ef`. You can find this ID in the UI as well to ensure you're querying the right flow.
## Start Langflow in backend-only mode
1. Stop Langflow with Ctrl+C.
2. Start langflow in backend-only mode with `python3 -m langflow run --backend-only`.
The terminal prints ` Welcome to ⛓ Langflow `, and a blank window opens at `http://127.0.0.1:7864/all`.
Langflow will now serve requests to its API.
The terminal prints ` Welcome to ⛓ Langflow `, and a blank window opens at `http://127.0.0.1:7864/all`.
Langflow will now serve requests to its API.
3. Run the curl code you copied from the UI.
You should get a result like this:
You should get a result like this:
```bash
{"session_id":"ef7e0554-69e5-4e3e-ab29-ee83bcd8d9ef:bf81d898868ac87e1b4edbd96c131c5dee801ea2971122cc91352d144a45b880","outputs":[{"inputs":{"input_value":"hi, are you there?"},"outputs":[{"results":{"result":"Arrr, ahoy matey! Aye, I be here. What be ye needin', me hearty?"},"artifacts":{"message":"Arrr, ahoy matey! Aye, I be here. What be ye needin', me hearty?","sender":"Machine","sender_name":"AI"},"messages":[{"message":"Arrr, ahoy matey! Aye, I be here. What be ye needin', me hearty?","sender":"Machine","sender_name":"AI","component_id":"ChatOutput-ktwdw"}],"component_display_name":"Chat Output","component_id":"ChatOutput-ktwdw","used_frozen_result":false}]}]}%
```
Again, note that the flow ID matches.
Langflow is receiving your POST request, running the flow, and returning the result, all without running the frontend. Cool!
@ -55,7 +60,8 @@ Instead of using curl, you can download your flow as a Python API call instead.
1. Click API.
2. Click **Python API** > **Copy code** and save the code to your local machine.
The code will look something like this:
The code will look something like this:
```python
import requests
from typing import Optional
@ -99,15 +105,19 @@ message = "message"
print(run_flow(message=message, flow_id=FLOW_ID))
```
3. Run your Python app:
```python
python3 app.py
```
The result is similar to the curl call:
```bash
{'session_id': 'ef7e0554-69e5-4e3e-ab29-ee83bcd8d9ef:bf81d898868ac87e1b4edbd96c131c5dee801ea2971122cc91352d144a45b880', 'outputs': [{'inputs': {'input_value': 'message'}, 'outputs': [{'results': {'result': "Arrr matey! What be yer message for this ol' pirate? Speak up or walk the plank!"}, 'artifacts': {'message': "Arrr matey! What be yer message for this ol' pirate? Speak up or walk the plank!", 'sender': 'Machine', 'sender_name': 'AI'}, 'messages': [{'message': "Arrr matey! What be yer message for this ol' pirate? Speak up or walk the plank!", 'sender': 'Machine', 'sender_name': 'AI', 'component_id': 'ChatOutput-ktwdw'}], 'component_display_name': 'Chat Output', 'component_id': 'ChatOutput-ktwdw', 'used_frozen_result': False}]}]}
```
Your Python app POSTs to your Langflow server, and the server runs the flow and returns the result.
See [API](../administration/api.mdx) for more ways to interact with your headless Langflow server.
See [API](../administration/api.mdx) for more ways to interact with your headless Langflow server.

View file

@ -113,7 +113,8 @@ module.exports = {
type: "category",
label: "Deployment",
collapsed: true,
items: ["deployment/docker",
items: [
"deployment/docker",
"deployment/backend-only",
"deployment/gcp-deployment",
],

View file

@ -1,5 +1,7 @@
from typing import List
from langflow.helpers.flow import generate_unique_flow_name
from langflow.helpers.folders import generate_unique_folder_name
import orjson
from fastapi import APIRouter, Depends, File, HTTPException, Response, UploadFile, status
from sqlalchemy import or_, update
@ -203,16 +205,9 @@ async def upload_file(
if not data:
raise HTTPException(status_code=400, detail="No flows found in the file")
folder_results = session.exec(
select(Folder).where(
Folder.name == data["folder_name"],
Folder.user_id == current_user.id,
)
)
existing_folder_names = [folder.name for folder in folder_results]
folder_name = generate_unique_folder_name(data["folder_name"], current_user.id, session)
if existing_folder_names:
data["folder_name"] = f"{data['folder_name']} ({len(existing_folder_names) + 1})"
data["folder_name"] = folder_name
folder = FolderCreate(name=data["folder_name"], description=data["folder_description"])
@ -232,6 +227,8 @@ async def upload_file(
raise HTTPException(status_code=400, detail="No flows found in the data")
# Now we set the user_id for all flows
for flow in flow_list.flows:
flow_name = generate_unique_flow_name(flow.name, current_user.id, session)
flow.name = flow_name
flow.user_id = current_user.id
flow.folder_id = new_folder.id

View file

@ -259,3 +259,24 @@ def get_flow_by_id_or_endpoint_name(
raise HTTPException(status_code=404, detail=f"Flow identifier {flow_id_or_name} not found")
return flow
def generate_unique_flow_name(flow_name, user_id, session):
original_name = flow_name
n = 1
while True:
# Check if a flow with the given name exists
existing_flow = session.exec(
select(Flow).where(
Flow.name == flow_name,
Flow.user_id == user_id,
)
).first()
# If no flow with the given name exists, return the name
if not existing_flow:
return flow_name
# If a flow with the name already exists, append (n) to the name and increment n
flow_name = f"{original_name} ({n})"
n += 1

View file

@ -0,0 +1,23 @@
from langflow.services.database.models.folder.model import Folder
from sqlalchemy import select
def generate_unique_folder_name(folder_name, user_id, session):
original_name = folder_name
n = 1
while True:
# Check if a folder with the given name exists
existing_folder = session.exec(
select(Folder).where(
Folder.name == folder_name,
Folder.user_id == user_id,
)
).first()
# If no folder with the given name exists, return the name
if not existing_folder:
return folder_name
# If a folder with the name already exists, append (n) to the name and increment n
folder_name = f"{original_name} ({n})"
n += 1

View file

@ -45,9 +45,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -86,22 +84,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"object",
"str",
"Text"
],
"base_classes": ["object", "str", "Text"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"user_input"
]
"template": ["user_input"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -150,9 +140,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -235,9 +223,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -256,9 +242,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -277,9 +261,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": true,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "OPENAI_API_KEY"
},
"stream": {
@ -318,9 +300,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -351,11 +331,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"object",
"Text",
"str"
],
"base_classes": ["object", "Text", "str"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -369,9 +345,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -442,9 +416,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -468,9 +440,7 @@
"info": "In case of Message being a Record, this template will be used to convert it to text.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"return_record": {
"type": "bool",
@ -502,10 +472,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -513,9 +480,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -535,9 +500,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -556,20 +519,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"Record",
"Text",
"str",
"object"
],
"base_classes": ["Record", "Text", "str", "object"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -580,10 +536,7 @@
"return_record": null,
"record_template": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -679,10 +632,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -690,9 +640,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -712,9 +660,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -733,20 +679,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Get chat inputs from the Playground.",
"icon": "ChatInput",
"base_classes": [
"object",
"Record",
"str",
"Text"
],
"base_classes": ["object", "Record", "str", "Text"],
"display_name": "Chat Input",
"documentation": "",
"custom_fields": {
@ -756,10 +695,7 @@
"session_id": null,
"return_record": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -787,17 +723,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-njtka",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"Text",
"str"
],
"baseClasses": ["object", "Text", "str"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-k39HS"
}
@ -817,17 +747,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-k39HS",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-uxBqP"
}
@ -847,21 +771,11 @@
"targetHandle": {
"fieldName": "user_input",
"id": "Prompt-uxBqP",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"Record",
"str",
"Text"
],
"baseClasses": ["object", "Record", "str", "Text"],
"dataType": "ChatInput",
"id": "ChatInput-P3fgL"
}
@ -883,4 +797,4 @@
"name": "Basic Prompting (Hello, World)",
"last_tested_version": "1.0.0a4",
"is_component": false
}
}

View file

@ -45,9 +45,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -138,24 +136,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"object",
"Text",
"str"
],
"base_classes": ["object", "Text", "str"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"reference_1",
"reference_2",
"instructions"
]
"template": ["reference_1", "reference_2", "instructions"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -222,9 +210,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": [
"https://www.promptingguide.ai/techniques/prompt_chaining"
]
@ -233,17 +219,13 @@
},
"description": "Fetch content from one or more URLs.",
"icon": "layout-template",
"base_classes": [
"Record"
],
"base_classes": ["Record"],
"display_name": "URL",
"documentation": "",
"custom_fields": {
"urls": null
},
"output_types": [
"Record"
],
"output_types": ["Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -302,9 +284,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -328,9 +308,7 @@
"info": "In case of Message being a Record, this template will be used to convert it to text.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"return_record": {
"type": "bool",
@ -362,10 +340,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -373,9 +348,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -395,9 +368,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -416,20 +387,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"Text",
"Record",
"object",
"str"
],
"base_classes": ["Text", "Record", "object", "str"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -440,10 +404,7 @@
"return_record": null,
"record_template": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -483,9 +444,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -568,9 +527,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -589,9 +546,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -610,9 +565,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "OPENAI_API_KEY"
},
"stream": {
@ -651,9 +604,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -684,11 +635,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -702,9 +649,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -777,28 +722,20 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"value": [
"https://www.promptingguide.ai/introduction/basics"
]
"input_types": ["Text"],
"value": ["https://www.promptingguide.ai/introduction/basics"]
},
"_type": "CustomComponent"
},
"description": "Fetch content from one or more URLs.",
"icon": "layout-template",
"base_classes": [
"Record"
],
"base_classes": ["Record"],
"display_name": "URL",
"documentation": "",
"custom_fields": {
"urls": null
},
"output_types": [
"Record"
],
"output_types": ["Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -858,10 +795,7 @@
"name": "input_value",
"display_name": "Value",
"advanced": false,
"input_types": [
"Record",
"Text"
],
"input_types": ["Record", "Text"],
"dynamic": false,
"info": "Text or Record to be passed as input.",
"load_from_db": false,
@ -885,28 +819,20 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Get text inputs from the Playground.",
"icon": "type",
"base_classes": [
"object",
"Text",
"str"
],
"base_classes": ["object", "Text", "str"],
"display_name": "Instructions",
"documentation": "",
"custom_fields": {
"input_value": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -935,18 +861,11 @@
"targetHandle": {
"fieldName": "reference_2",
"id": "Prompt-Rse03",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"Record"
],
"baseClasses": ["Record"],
"dataType": "URL",
"id": "URL-HYPkR"
}
@ -966,17 +885,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-JPlxl",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-gi29P"
}
@ -996,18 +909,11 @@
"targetHandle": {
"fieldName": "reference_1",
"id": "Prompt-Rse03",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"Record"
],
"baseClasses": ["Record"],
"dataType": "URL",
"id": "URL-2cX90"
}
@ -1027,20 +933,11 @@
"targetHandle": {
"fieldName": "instructions",
"id": "Prompt-Rse03",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"Text",
"str"
],
"baseClasses": ["object", "Text", "str"],
"dataType": "TextInput",
"id": "TextInput-og8Or"
}
@ -1060,17 +957,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-gi29P",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"Text",
"str"
],
"baseClasses": ["object", "Text", "str"],
"dataType": "Prompt",
"id": "Prompt-Rse03"
}
@ -1093,4 +984,4 @@
"name": "Blog Writer",
"last_tested_version": "1.0.0a0",
"is_component": false
}
}

View file

@ -45,9 +45,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -112,23 +110,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"object",
"str",
"Text"
],
"base_classes": ["object", "str", "Text"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"Document",
"Question"
]
"template": ["Document", "Question"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -231,18 +220,14 @@
"_type": "CustomComponent"
},
"description": "A generic file loader.",
"base_classes": [
"Record"
],
"base_classes": ["Record"],
"display_name": "Files",
"documentation": "",
"custom_fields": {
"path": null,
"silent_errors": null
},
"output_types": [
"Record"
],
"output_types": ["Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -338,10 +323,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -349,9 +331,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -371,9 +351,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -392,20 +370,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Get chat inputs from the Playground.",
"icon": "ChatInput",
"base_classes": [
"str",
"Record",
"Text",
"object"
],
"base_classes": ["str", "Record", "Text", "object"],
"display_name": "Chat Input",
"documentation": "",
"custom_fields": {
@ -415,10 +386,7 @@
"session_id": null,
"return_record": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -477,9 +445,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -515,10 +481,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -526,9 +489,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -548,9 +509,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -569,20 +528,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"str",
"Record",
"Text",
"object"
],
"base_classes": ["str", "Record", "Text", "object"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -592,10 +544,7 @@
"session_id": null,
"return_record": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -640,9 +589,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -725,9 +672,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -746,9 +691,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -767,9 +710,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "OPENAI_API_KEY"
},
"stream": {
@ -808,9 +749,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -841,11 +780,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"object",
"str",
"Text"
],
"base_classes": ["object", "str", "Text"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -859,9 +794,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -899,21 +832,11 @@
"targetHandle": {
"fieldName": "Question",
"id": "Prompt-tHwPf",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Record",
"Text",
"object"
],
"baseClasses": ["str", "Record", "Text", "object"],
"dataType": "ChatInput",
"id": "ChatInput-MsSJ9"
}
@ -933,18 +856,11 @@
"targetHandle": {
"fieldName": "Document",
"id": "Prompt-tHwPf",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"Record"
],
"baseClasses": ["Record"],
"dataType": "File",
"id": "File-6TEsD"
}
@ -964,17 +880,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-Bt067",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-tHwPf"
}
@ -994,17 +904,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-F5Awj",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-Bt067"
}
@ -1026,4 +930,4 @@
"name": "Document QA",
"last_tested_version": "1.0.0a0",
"is_component": false
}
}

View file

@ -83,10 +83,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -94,9 +91,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -116,9 +111,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -137,21 +130,14 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "MySessionID"
},
"_type": "CustomComponent"
},
"description": "Get chat inputs from the Playground.",
"icon": "ChatInput",
"base_classes": [
"Text",
"object",
"Record",
"str"
],
"base_classes": ["Text", "object", "Record", "str"],
"display_name": "Chat Input",
"documentation": "",
"custom_fields": {
@ -161,10 +147,7 @@
"session_id": null,
"return_record": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -223,9 +206,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -261,10 +242,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -272,9 +250,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -294,9 +270,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -315,21 +289,14 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "MySessionID"
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"Text",
"object",
"Record",
"str"
],
"base_classes": ["Text", "object", "Record", "str"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -339,10 +306,7 @@
"session_id": null,
"return_record": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -418,10 +382,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Ascending",
"Descending"
],
"options": ["Ascending", "Descending"],
"name": "order",
"display_name": "Order",
"advanced": true,
@ -429,9 +390,7 @@
"info": "Order of the messages.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"record_template": {
"type": "str",
@ -451,9 +410,7 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender": {
"type": "str",
@ -466,11 +423,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User",
"Machine and User"
],
"options": ["Machine", "User", "Machine and User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": false,
@ -478,9 +431,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -499,9 +450,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -516,9 +465,7 @@
"name": "session_id",
"display_name": "Session ID",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "Session ID of the chat history.",
"load_from_db": false,
@ -529,11 +476,7 @@
},
"description": "Retrieves stored chat messages given a specific Session ID.",
"icon": "history",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "Chat Memory",
"documentation": "",
"custom_fields": {
@ -544,9 +487,7 @@
"order": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -608,9 +549,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -675,23 +614,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"Text",
"str",
"object"
],
"base_classes": ["Text", "str", "object"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"context",
"user_message"
]
"template": ["context", "user_message"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -740,9 +670,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -825,9 +753,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -846,9 +772,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -867,9 +791,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "OPENAI_API_KEY"
},
"stream": {
@ -908,9 +830,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -941,11 +861,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"str",
"object",
"Text"
],
"base_classes": ["str", "object", "Text"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -959,9 +875,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -1013,10 +927,7 @@
"name": "input_value",
"display_name": "Value",
"advanced": false,
"input_types": [
"Record",
"Text"
],
"input_types": ["Record", "Text"],
"dynamic": false,
"info": "Text or Record to be passed as output.",
"load_from_db": false,
@ -1058,28 +969,20 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a text output in the Playground.",
"icon": "type",
"base_classes": [
"str",
"object",
"Text"
],
"base_classes": ["str", "object", "Text"],
"display_name": "Inspect Memory",
"documentation": "",
"custom_fields": {
"input_value": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -1108,19 +1011,10 @@
"fieldName": "context",
"type": "str",
"id": "Prompt-ODkUx",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
]
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"]
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "MemoryComponent",
"id": "MemoryComponent-cdA1J"
}
@ -1142,20 +1036,10 @@
"fieldName": "user_message",
"type": "str",
"id": "Prompt-ODkUx",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
]
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"]
},
"sourceHandle": {
"baseClasses": [
"Text",
"object",
"Record",
"str"
],
"baseClasses": ["Text", "object", "Record", "str"],
"dataType": "ChatInput",
"id": "ChatInput-t7F8v"
}
@ -1176,17 +1060,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-9RykF",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"Text",
"str",
"object"
],
"baseClasses": ["Text", "str", "object"],
"dataType": "Prompt",
"id": "Prompt-ODkUx"
}
@ -1206,17 +1084,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-P1jEe",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"object",
"Text"
],
"baseClasses": ["str", "object", "Text"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-9RykF"
}
@ -1236,18 +1108,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "TextOutput-vrs6T",
"inputTypes": [
"Record",
"Text"
],
"inputTypes": ["Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "MemoryComponent",
"id": "MemoryComponent-cdA1J"
}
@ -1269,4 +1134,4 @@
"name": "Memory Chatbot",
"last_tested_version": "1.0.0a0",
"is_component": false
}
}

View file

@ -45,9 +45,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -86,22 +84,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"object",
"str",
"Text"
],
"base_classes": ["object", "str", "Text"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"document"
]
"template": ["document"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -165,9 +155,7 @@
"name": "template",
"display_name": "Template",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -206,22 +194,14 @@
"is_input": null,
"is_output": null,
"is_composition": null,
"base_classes": [
"object",
"str",
"Text"
],
"base_classes": ["object", "str", "Text"],
"name": "",
"display_name": "Prompt",
"documentation": "",
"custom_fields": {
"template": [
"summary"
]
"template": ["summary"]
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"full_path": null,
"field_formatters": {},
"frozen": false,
@ -280,9 +260,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -306,9 +284,7 @@
"info": "In case of Message being a Record, this template will be used to convert it to text.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"return_record": {
"type": "bool",
@ -340,10 +316,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -351,9 +324,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -373,9 +344,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -394,20 +363,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"object",
"Record",
"Text",
"str"
],
"base_classes": ["object", "Record", "Text", "str"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -418,10 +380,7 @@
"return_record": null,
"record_template": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -476,9 +435,7 @@
"name": "input_value",
"display_name": "Message",
"advanced": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"dynamic": false,
"info": "",
"load_from_db": false,
@ -502,9 +459,7 @@
"info": "In case of Message being a Record, this template will be used to convert it to text.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"return_record": {
"type": "bool",
@ -536,10 +491,7 @@
"fileTypes": [],
"file_path": "",
"password": false,
"options": [
"Machine",
"User"
],
"options": ["Machine", "User"],
"name": "sender",
"display_name": "Sender Type",
"advanced": true,
@ -547,9 +499,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"sender_name": {
"type": "str",
@ -569,9 +519,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"session_id": {
"type": "str",
@ -590,20 +538,13 @@
"info": "If provided, the message will be stored in the memory.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a chat message in the Playground.",
"icon": "ChatOutput",
"base_classes": [
"object",
"Record",
"Text",
"str"
],
"base_classes": ["object", "Record", "Text", "str"],
"display_name": "Chat Output",
"documentation": "",
"custom_fields": {
@ -614,10 +555,7 @@
"return_record": null,
"record_template": null
},
"output_types": [
"Text",
"Record"
],
"output_types": ["Text", "Record"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -672,10 +610,7 @@
"name": "input_value",
"display_name": "Value",
"advanced": false,
"input_types": [
"Record",
"Text"
],
"input_types": ["Record", "Text"],
"dynamic": false,
"info": "Text or Record to be passed as input.",
"load_from_db": false,
@ -699,28 +634,20 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Get text inputs from the Playground.",
"icon": "type",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "Text Input",
"documentation": "",
"custom_fields": {
"input_value": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -762,10 +689,7 @@
"name": "input_value",
"display_name": "Value",
"advanced": false,
"input_types": [
"Record",
"Text"
],
"input_types": ["Record", "Text"],
"dynamic": false,
"info": "Text or Record to be passed as output.",
"load_from_db": false,
@ -807,28 +731,20 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a text output in the Playground.",
"icon": "type",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "First Prompt",
"documentation": "",
"custom_fields": {
"input_value": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -873,9 +789,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -958,9 +872,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -979,9 +891,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -1000,9 +910,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": "OPENAI_API_KEY"
},
"stream": {
@ -1041,9 +949,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -1074,11 +980,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -1092,9 +994,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -1146,10 +1046,7 @@
"name": "input_value",
"display_name": "Value",
"advanced": false,
"input_types": [
"Record",
"Text"
],
"input_types": ["Record", "Text"],
"dynamic": false,
"info": "Text or Record to be passed as output.",
"load_from_db": false,
@ -1191,28 +1088,20 @@
"info": "Template to convert Record to Text. If left empty, it will be dynamically set to the Record's text key.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"_type": "CustomComponent"
},
"description": "Display a text output in the Playground.",
"icon": "type",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "Second Prompt",
"documentation": "",
"custom_fields": {
"input_value": null,
"record_template": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [],
@ -1257,9 +1146,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"code": {
"type": "code",
@ -1342,9 +1229,7 @@
"info": "",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_base": {
"type": "str",
@ -1363,9 +1248,7 @@
"info": "The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.\n\nYou can change this to use other APIs like JinaChat, LocalAI and Prem.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"openai_api_key": {
"type": "str",
@ -1384,9 +1267,7 @@
"info": "The OpenAI API Key to use for the OpenAI model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
],
"input_types": ["Text"],
"value": ""
},
"stream": {
@ -1425,9 +1306,7 @@
"info": "System message to pass to the model.",
"load_from_db": false,
"title_case": false,
"input_types": [
"Text"
]
"input_types": ["Text"]
},
"temperature": {
"type": "float",
@ -1458,11 +1337,7 @@
},
"description": "Generates text using OpenAI LLMs.",
"icon": "OpenAI",
"base_classes": [
"str",
"Text",
"object"
],
"base_classes": ["str", "Text", "object"],
"display_name": "OpenAI",
"documentation": "",
"custom_fields": {
@ -1476,9 +1351,7 @@
"stream": null,
"system_message": null
},
"output_types": [
"Text"
],
"output_types": ["Text"],
"field_formatters": {},
"frozen": false,
"field_order": [
@ -1516,20 +1389,11 @@
"targetHandle": {
"fieldName": "document",
"id": "Prompt-amqBu",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "TextInput",
"id": "TextInput-sptaH"
}
@ -1549,18 +1413,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "TextOutput-2MS4a",
"inputTypes": [
"Record",
"Text"
],
"inputTypes": ["Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-amqBu"
}
@ -1580,17 +1437,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-uYXZJ",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-amqBu"
}
@ -1610,20 +1461,11 @@
"targetHandle": {
"fieldName": "summary",
"id": "Prompt-gTNiz",
"inputTypes": [
"Document",
"BaseOutputParser",
"Record",
"Text"
],
"inputTypes": ["Document", "BaseOutputParser", "Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-uYXZJ"
}
@ -1643,17 +1485,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-EJkG3",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-uYXZJ"
}
@ -1673,18 +1509,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "TextOutput-MUDOR",
"inputTypes": [
"Record",
"Text"
],
"inputTypes": ["Record", "Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-gTNiz"
}
@ -1704,17 +1533,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "OpenAIModel-XawYB",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"object",
"str",
"Text"
],
"baseClasses": ["object", "str", "Text"],
"dataType": "Prompt",
"id": "Prompt-gTNiz"
}
@ -1734,17 +1557,11 @@
"targetHandle": {
"fieldName": "input_value",
"id": "ChatOutput-DNmvg",
"inputTypes": [
"Text"
],
"inputTypes": ["Text"],
"type": "str"
},
"sourceHandle": {
"baseClasses": [
"str",
"Text",
"object"
],
"baseClasses": ["str", "Text", "object"],
"dataType": "OpenAIModel",
"id": "OpenAIModel-XawYB"
}
@ -1766,4 +1583,4 @@
"name": "Prompt Chaining",
"last_tested_version": "1.0.0a0",
"is_component": false
}
}

View file

@ -29,10 +29,10 @@ export default function App() {
useTrackLastVisitedPath();
const removeFromTempNotificationList = useAlertStore(
(state) => state.removeFromTempNotificationList
(state) => state.removeFromTempNotificationList,
);
const tempNotificationList = useAlertStore(
(state) => state.tempNotificationList
(state) => state.tempNotificationList,
);
const [fetchError, setFetchError] = useState(false);
const isLoading = useFlowsManagerStore((state) => state.isLoading);
@ -50,7 +50,7 @@ export default function App() {
const refreshVersion = useDarkStore((state) => state.refreshVersion);
const refreshStars = useDarkStore((state) => state.refreshStars);
const setGlobalVariables = useGlobalVariablesStore(
(state) => state.setGlobalVariables
(state) => state.setGlobalVariables,
);
const checkHasStore = useStoreStore((state) => state.checkHasStore);
const navigate = useNavigate();

View file

@ -98,7 +98,7 @@ export default function ParameterComponent({
debouncedHandleUpdateValues,
setNode,
renderTooltips,
setIsLoading
setIsLoading,
);
const { handleNodeClass: handleNodeClassHook } = useHandleNodeClass(
@ -107,7 +107,7 @@ export default function ParameterComponent({
takeSnapshot,
setNode,
updateNodeInternals,
renderTooltips
renderTooltips,
);
const { handleRefreshButtonPress: handleRefreshButtonPressHook } =
@ -116,7 +116,7 @@ export default function ParameterComponent({
let disabled =
edges.some(
(edge) =>
edge.targetHandle === scapedJSONStringfy(proxy ? { ...id, proxy } : id)
edge.targetHandle === scapedJSONStringfy(proxy ? { ...id, proxy } : id),
) ?? false;
const handleRefreshButtonPress = async (name, data) => {
@ -129,12 +129,12 @@ export default function ParameterComponent({
handleUpdateValues,
setNode,
renderTooltips,
setIsLoading
setIsLoading,
);
const handleOnNewValue = async (
newValue: string | string[] | boolean | Object[],
skipSnapshot: boolean | undefined = false
skipSnapshot: boolean | undefined = false,
): Promise<void> => {
handleOnNewValueHook(newValue, skipSnapshot);
};
@ -216,7 +216,7 @@ export default function ParameterComponent({
className={classNames(
left ? "my-12 -ml-0.5 " : " my-12 -mr-0.5 ",
"h-3 w-3 rounded-full border-2 bg-background",
!showNode ? "mt-0" : ""
!showNode ? "mt-0" : "",
)}
style={{
borderColor: color ?? nodeColors.unknown,
@ -284,7 +284,7 @@ export default function ParameterComponent({
"h-5 w-5 rounded-md",
displayOutputPreview && !unknownOutput
? " hover:bg-secondary-foreground/5 hover:text-medium-indigo"
: " cursor-not-allowed text-muted-foreground"
: " cursor-not-allowed text-muted-foreground",
)}
name={"ScanEye"}
/>
@ -334,7 +334,7 @@ export default function ParameterComponent({
}
className={classNames(
left ? "-ml-0.5" : "-mr-0.5",
"h-3 w-3 rounded-full border-2 bg-background"
"h-3 w-3 rounded-full border-2 bg-background",
)}
style={{ borderColor: color ?? nodeColors.unknown }}
onClick={() => setFilterEdge(groupedEdge.current)}

View file

@ -24,7 +24,7 @@ const TooltipRenderComponent = ({ item, index, left }) => {
<span
key={index}
className={classNames(
index > 0 ? "mt-2 flex items-center" : "mt-3 flex items-center"
index > 0 ? "mt-2 flex items-center" : "mt-3 flex items-center",
)}
>
<div

View file

@ -1,3 +1,4 @@
import emojiRegex from "emoji-regex";
import { useEffect, useMemo, useState } from "react";
import { NodeToolbar, useUpdateNodeInternals } from "reactflow";
import IconComponent from "../../components/genericIconComponent";
@ -54,10 +55,10 @@ export default function GenericNode({
const setErrorData = useAlertStore((state) => state.setErrorData);
const isDark = useDarkStore((state) => state.dark);
const buildStatus = useFlowStore(
(state) => state.flowBuildStatus[data.id]?.status
(state) => state.flowBuildStatus[data.id]?.status,
);
const lastRunTime = useFlowStore(
(state) => state.flowBuildStatus[data.id]?.timestamp
(state) => state.flowBuildStatus[data.id]?.timestamp,
);
const takeSnapshot = useFlowsManagerStore((state) => state.takeSnapshot);
@ -65,7 +66,7 @@ export default function GenericNode({
const [nodeName, setNodeName] = useState(data.node!.display_name);
const [inputDescription, setInputDescription] = useState(false);
const [nodeDescription, setNodeDescription] = useState(
data.node?.description!
data.node?.description!,
);
const [isOutdated, setIsOutdated] = useState(false);
const [validationStatus, setValidationStatus] =
@ -83,7 +84,7 @@ export default function GenericNode({
data.node!,
setNode,
setIsOutdated,
updateNodeInternals
updateNodeInternals,
);
const name = nodeIconsLucide[data.type] ? data.type : types[data.type];
@ -114,12 +115,12 @@ export default function GenericNode({
selected: boolean,
showNode: boolean,
buildStatus: BuildStatus | undefined,
validationStatus: VertexBuildTypeAPI | null
validationStatus: VertexBuildTypeAPI | null,
) => {
const specificClassFromBuildStatus = getSpecificClassFromBuildStatus(
buildStatus,
validationStatus,
isDark
isDark,
);
const baseBorderClass = getBaseBorderClass(selected);
@ -128,7 +129,7 @@ export default function GenericNode({
baseBorderClass,
nodeSizeClass,
"generic-node-div group/node",
specificClassFromBuildStatus
specificClassFromBuildStatus,
);
return names;
};
@ -143,8 +144,7 @@ export default function GenericNode({
showNode ? "w-96 rounded-lg" : "w-26 h-26 rounded-full";
const nameEditable = true;
const emojiRegex = /\p{Emoji}/u;
const isEmoji = emojiRegex.test(data?.node?.icon!);
const isEmoji = emojiRegex().test(data?.node?.icon!);
if (!data.node!.template) {
setErrorData({
@ -170,7 +170,7 @@ export default function GenericNode({
showNode,
isEmoji,
nodeIconFragment,
checkNodeIconFragment
checkNodeIconFragment,
);
function countHandles(): void {
@ -247,7 +247,7 @@ export default function GenericNode({
selected,
showNode,
buildStatus,
validationStatus
validationStatus,
)}
>
{data.node?.beta && showNode && (
@ -378,7 +378,7 @@ export default function GenericNode({
}
title={getFieldTitle(
data.node?.template!,
templateField
templateField,
)}
info={data.node?.template[templateField].info}
name={templateField}
@ -406,7 +406,7 @@ export default function GenericNode({
proxy={data.node?.template[templateField].proxy}
showNode={showNode}
/>
)
),
)}
<ParameterComponent
key={scapedJSONStringfy({
@ -552,7 +552,7 @@ export default function GenericNode({
!data.node?.description) &&
nameEditable
? "font-light italic"
: ""
: "",
)}
onClick={(e) => {
setInputDescription(true);
@ -614,13 +614,13 @@ export default function GenericNode({
}
title={getFieldTitle(
data.node?.template!,
templateField
templateField,
)}
info={data.node?.template[templateField].info}
name={templateField}
tooltipTitle={
data.node?.template[templateField].input_types?.join(
"\n"
"\n",
) ?? data.node?.template[templateField].type
}
required={data.node!.template[templateField].required}
@ -647,7 +647,7 @@ export default function GenericNode({
<div
className={classNames(
Object.keys(data.node!.template).length < 1 ? "hidden" : "",
"flex-max-width justify-center"
"flex-max-width justify-center",
)}
>
{" "}

View file

@ -6,7 +6,7 @@ const useCheckCodeValidity = (
data: NodeDataType,
templates: { [key: string]: any },
setIsOutdated: (value: boolean) => void,
types
types,
) => {
useEffect(() => {
// This one should run only once

View file

@ -9,7 +9,7 @@ const useFetchDataOnMount = (
handleUpdateValues,
setNode,
renderTooltips,
setIsLoading
setIsLoading,
) => {
const setErrorData = useAlertStore((state) => state.setErrorData);

View file

@ -10,7 +10,7 @@ const useHandleOnNewValue = (
debouncedHandleUpdateValues,
setNode,
renderTooltips,
setIsLoading
setIsLoading,
) => {
const setErrorData = useAlertStore((state) => state.setErrorData);

View file

@ -6,7 +6,7 @@ const useHandleNodeClass = (
takeSnapshot,
setNode,
updateNodeInternals,
renderTooltips
renderTooltips,
) => {
const handleNodeClass = (newNodeClass, code) => {
if (!data.node) return;

Some files were not shown because too many files have changed in this diff Show more