Commit graph

11,619 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
78ecb4c341 Merge remote-tracking branch 'origin/dev' into celery 2023-09-22 12:53:05 -03:00
Gabriel Luiz Freitas Almeida
a64ee239de
Add env variables to set superuser on deploy (#943) 2023-09-22 12:48:33 -03:00
Gabriel Luiz Freitas Almeida
6151052b18
Merge branch 'dev' into add_cli_options_superuser 2023-09-22 12:48:26 -03:00
Gabriel Luiz Freitas Almeida
43df53363d Merge remote-tracking branch 'origin/main' into dev 2023-09-22 12:44:46 -03:00
Gabriel Luiz Freitas Almeida
416d294117 🐛 fix(basic_example.json): change value of "value" key from "abc" to null to remove hardcoded value and improve flexibility
 test(test_user.py): add test to create a super user for testing purposes and ensure it returns the correct response
🔥 chore(utils.py): remove unused functions run_post and poll_task_status to clean up code
2023-09-22 11:06:25 -03:00
Gabriel Luiz Freitas Almeida
59b62aae17 🔨 refactor(test_graph.py): remove unused imports and variables to improve code readability and maintainability
🔧 chore(test_graph.py): add missing imports for AgentVertex and VectorStoreVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.agents.AgentExecutor to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.graph.Graph to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.processing.process.get_result_and_thought to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.utils.payload.get_root_node to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.llms.fake.FakeListLLM to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.chains.base.Chain to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.edge.base.Edge to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.base.Vertex to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.types.ToolkitVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.types.FileToolVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.types.LLMVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.types.AgentVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.graph.vertex.types.VectorStoreVertex to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.agents.AgentExecutor to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.graph.Graph to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.processing.process.get_result_and_thought to fix NameError
🔧 chore(test_graph.py): add missing import for langflow.utils.payload.get_root_node to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.llms.fake.FakeListLLM to fix NameError
🔧 chore(test_graph.py): add missing import for langchain.chains.base.Chain to
2023-09-22 11:04:57 -03:00
Gabriel Luiz Freitas Almeida
1f720a665e 🔧 fix(test_endpoints.py): fix typo in test_process_flow_without_autologin function to improve code readability
 feat(test_endpoints.py): add helper functions run_post and poll_task_status to improve code modularity and reusability
🔧 fix(test_endpoints.py): fix typo in test_basic_chat_with_two_session_ids_and_names function to improve code readability
 feat(test_endpoints.py): add async_test marker to test_vector_store_in_process function to indicate it is an asynchronous test
 feat(test_endpoints.py): add distributed_client parameter to test_vector_store_in_process function to test distributed client functionality
 feat(test_endpoints.py): add async_test marker to test_async_task_processing function to indicate it is an asynchronous test
 feat(test_endpoints.py): add distributed_client parameter to test_async_task_processing function to test distributed client functionality
 feat(test_endpoints.py): add async_test marker to test_async_task_processing_vector_store function to indicate it is an asynchronous test
 feat(test_endpoints.py): add distributed_client parameter to test_async_task_processing_vector_store function to test distributed client functionality
2023-09-22 11:03:54 -03:00
Gabriel Luiz Freitas Almeida
c88f9bf8a0 🔧 chore(conftest.py): refactor client fixture to use dependency overrides for session and add session fixture for creating a session with an in-memory SQLite database
🔧 chore(conftest.py): add distributed_env fixture to set up environment variables for distributed testing
🔧 chore(conftest.py): add distributed_client fixture for distributed testing with Celery
🔧 chore(conftest.py): remove unused imports and fixtures
🔧 chore(test_cache.py): remove unused client fixture from test_build_graph
🔧 chore(test_creators.py): remove unused client fixture from test_lang_chain_type_creator_to_dict
🔧 chore(test_database.py): remove unused client fixture from test_download_file
2023-09-22 11:03:17 -03:00
Gabriel Luiz Freitas Almeida
f8b38ee162 🐛 fix(process.py): rename langchain_object variable to graph for better semantics
🐛 fix(process.py): rename langchain_object variable to built_object in generate_result function for better semantics
🐛 fix(process.py): update session with graph instead of langchain_object to reflect changes
 feat(manager.py): add reinitialize_services function to reinitialize all services
 feat(utils.py): initialize settings service if not already initialized before returning it
2023-09-22 11:00:57 -03:00
Gabriel Luiz Freitas Almeida
04fe2f6054 📝 chore(utils.py): add utility function to check if an object is a basic type
📝 chore(loading.py): refactor code to improve readability and maintainability
📝 chore(vector_store.py): refactor code to improve readability and maintainability
📝 chore(run.py): update return type hint for build_sorted_vertices function
2023-09-22 10:59:53 -03:00
Gabriel Luiz Freitas Almeida
bea1328a3e 🐛 fix(base.py): add __setstate__ method to Edge class to properly set state when unpickling
🐛 fix(base.py): add reset method to Edge class to reset source and target params when needed
🐛 fix(base.py): add __setstate__ method to Graph class to properly set state when unpickling
🐛 fix(base.py): add __eq__ method to Graph class to compare graphs based on their string representation
🐛 fix(types.py): add __getstate__ and __setstate__ methods to AgentVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to ToolVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to LLMVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to ToolkitVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to FileToolVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to DocumentLoaderVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to EmbeddingVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to VectorStoreVertex class to properly set and get state when pickling and unpickling
🐛 fix(types.py): add __getstate__ and __setstate__ methods to TextSplitterVertex class to properly set and get state when pickling and unpickling
 feat(types.py): add reset method to AgentVertex class to reset source and target params when needed
 feat(types.py): add reset method to ToolVertex class to reset source and target params when needed
 feat(types.py): add reset method to LLMVertex class to reset source and target params when needed
 feat(types.py):
2023-09-22 10:58:27 -03:00
Gabriel Luiz Freitas Almeida
2b10cfe96d 🐛 fix(base.py): add missing import statement for is_basic_type function
🐛 fix(base.py): add missing import statement for logger
🐛 fix(base.py): handle AttributeError when comparing Vertex objects for equality
🐛 fix(base.py): handle exception and log it when building node fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): reset params and rebuild built object when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object fails
🐛 fix(base.py): handle exception and log it when pickling built object
2023-09-22 10:54:30 -03:00
Gabriel Luiz Freitas Almeida
df19298637 🐛 fix(cache/manager.py): unpickle cached value before returning it to fix deserialization issue
🐛 fix(cache/manager.py): pickle value before caching it to mimic Redis behavior
🐛 fix(cache/manager.py): raise ValueError if RedisCache fails to set the value
🐛 fix(session/manager.py): generate key if it is None before checking cache
 feat(session/manager.py): add logging import to enable logging in the session manager
2023-09-22 10:48:13 -03:00
Gabriel Luiz Freitas Almeida
3412e8a92c 🔧 chore(celery_app.py): modify make_celery function signature to accept a config parameter
🔧 chore(celery_app.py): update celery_app.config_from_object argument to use the config parameter passed to make_celery function
2023-09-22 10:47:35 -03:00
Gabriel Luiz Freitas Almeida
358f5c9019 🐛 fix(endpoints.py): fix indentation issue in process_flow function and assign session_id correctly when result is a dictionary 2023-09-22 10:46:36 -03:00
Gabriel Luiz Freitas Almeida
8557a728d6 🐛 fix(docker-compose.override.yml): expose Redis port 6379 for the queue service
 feat(docker-compose.override.yml): add configuration for the celeryworker service to enable Traefik routing and expose port 7860 for API endpoints
🐛 fix(docker-compose.yml): remove parallel test execution flag from the command for the test service
2023-09-22 10:46:18 -03:00
Gabriel Luiz Freitas Almeida
d4f3640e5f 🐛 fix(Dockerfile): copy only necessary file to avoid unnecessary image rebuilding
 feat(Dockerfile): add support for copying app code and tests to the image to ensure they are included in the deployment
2023-09-22 10:46:01 -03:00
Gabriel Luiz Freitas Almeida
a64c7bea7f ⬆️ chore(pyproject.toml): add pytest-sugar as a development dependency to enhance test reporting 2023-09-22 10:45:40 -03:00
Gabriel Luiz Freitas Almeida
f01f4a809e 🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
🔨 refactor(worker.py): rename langchain_object variable to built_object to improve semantics
🔨 refactor(worker.py): rename langchain_object variable to graph for better clarity
2023-09-22 10:45:02 -03:00
anovazzi1
c9d7e72a08 clone deep to avoid ctrl-z bug on ungroup component 2023-09-21 21:35:23 -03:00
anovazzi1
f63a19578b update lock file 2023-09-21 21:28:19 -03:00
anovazzi1
795bf73752
Filter Menu Components on Click Edge (#932)
This branch implements the edge filtering feature.
2023-09-21 21:08:47 -03:00
anovazzi1
8275a9c2c1 chore(parameterComponent): remove unnecessary ts-ignore comments
fix(extraSidebarComponent): remove unnecessary if condition in handleBlur function
2023-09-21 21:00:17 -03:00
anovazzi1
0192d3461d fix(chatComponent): import processFlow function from reactflowUtils to fix reference error
fix(chatComponent): update validation check to use processFlow function to correctly count nodes
fix(formModal): remove unnecessary spread operator on processFlow function call
fix(reactflowUtils): update getGroupStatus function to correctly return status based on ssData
2023-09-21 20:43:02 -03:00
anovazzi1
a12a7fd1cc
New "more" nodeToolbar button (#952)
This PR introduces a new feature to enhance the editing capabilities of
nodes in our application. We've added a "More" button to the
nodeToolbar, which, when clicked, reveals additional options for editing
nodes.
2023-09-21 20:05:41 -03:00
anovazzi1
1796e349c2 fix(nodeToolbarComponent): fix indentation and formatting issues in the code
feat(nodeToolbarComponent): add support for minimal mode in the toolbar
feat(nodeToolbarComponent): add functionality to show/hide advanced options in the toolbar
2023-09-21 20:03:47 -03:00
anovazzi1
b18a91deb0 code format 2023-09-21 19:23:53 -03:00
anovazzi1
187724342f update message format to put api-key as header 2023-09-21 19:23:53 -03:00
igorrCarvalho
ac67fff000 Refactor: Make changes to api_key only show up in codetabs when authenticated 2023-09-21 19:23:53 -03:00
igorrCarvalho
b1ef10e79b Refactor: update Code Tabs PopUp with api_key 2023-09-21 19:23:53 -03:00
igorrCarvalho
7cead25c8b Remove console.log 2023-09-21 19:07:50 -03:00
igorrCarvalho
2c2197ecad Refactor: Make minimize button show up in the More button popup 2023-09-21 19:06:30 -03:00
igorrCarvalho
b7b7a93cdd formated code 2023-09-21 15:20:36 -03:00
igorrCarvalho
e4ba7364bb merge dev into feat-more 2023-09-21 15:17:08 -03:00
Gabriel Luiz Freitas Almeida
0555c6a371 🔀 refactor(base.py): process graph data before building the graph to ensure consistency and correctness
🔀 refactor(base.py): update nodes and edges after processing graph data to reflect changes in the graph structure
2023-09-21 14:51:13 -03:00
Gabriel Luiz Freitas Almeida
aaaa21b5cb 🐛 fix(test_prompts_template.py): set "dynamic" property to True for input_variables, output_parser, partial_variables, template, template_format, and validate_template to enable dynamic behavior in prompt templates 2023-09-21 14:45:27 -03:00
Gabriel Luiz Freitas Almeida
3ea079e562 🚀 feat: add Basic Chat with Prompt and History node
ℹ️ This commit adds a new node called "Basic Chat with Prompt and History" to the project. This node is a simple chat implementation with a custom prompt template and a conversational memory buffer.

The node has the following properties:
- Width: 384
- Height: 621
- ID: ChatOpenAI-N0ogT
- Type: genericNode
- Position: {x: 148.32546232493678, y: 675.5574028128048}

The node contains various configuration options for the ChatOpenAI component, including:
- Callbacks: A list of callback handlers
- Cache: A boolean indicating whether to use caching
- Client: An optional client object
- Max retries: The maximum number of retries
- Max tokens: The maximum number of tokens for the chat response (password field)
- Metadata: Additional metadata for the chat
- Model kwargs: Advanced model configuration options
- Model name: The name of the model to use (options: gpt-3.5-turbo-0613, gpt-3.5-turbo, gpt-3.5-turbo-16k-0613, gpt-3.5-turbo-16k, gpt-4-0613, gpt-4-32k-0613, gpt-4, gpt-4-32k)
- N: The number of chat responses to generate
- OpenAI API Base: The base URL of the OpenAI API
- OpenAI API Key: The API key for the OpenAI API

This node allows for creating a basic chat interface with customizable prompts and a history buffer for maintaining conversation context.

🔧 chore: update OpenAI Chat large language models API configuration
📝 docs: update documentation link for OpenAI Chat large language models API

🔧 chore: update prompt template for language model to fix formatting issue

📝 chore(grouped_chat.json): add grouped_chat.json test data file

The grouped_chat.json file is added to the tests/data directory. This file contains a large JSON object representing a grouped chat. It is used for testing purposes.

🚀 feat(test_graph.py): add new tests and fixtures to improve test coverage and ensure correctness of graph module functions
🐛 fix(test_graph.py): fix incorrect function name in test_find_last_node
🔧 chore(test_graph.py): refactor test_get_node_neighbors_complex to be commented out for now, as it is incomplete and causing test failures
2023-09-21 14:45:16 -03:00
Gabriel Luiz Freitas Almeida
7b90c6a61f 📦 chore(conftest.py): add fixture and example file for grouped chat JSON data
🔧 refactor(conftest.py): rename fixture `json_flow` to `openapi_json_flow` for better clarity and consistency
2023-09-21 14:44:34 -03:00
Gabriel Luiz Freitas Almeida
72f64caa41 🐛 fix(base.py): import process_flow function to fix NameError in Graph class
 feat(utils.py): add process_flow function to recursively process and ungroup nodes in a flow object
2023-09-21 14:44:10 -03:00
Gabriel Luiz Freitas Almeida
6ec51a0d22 🔀 refactor(endpoints.py): rename process_flow function to process for better naming consistency and clarity 2023-09-21 14:43:47 -03:00
Gabriel Luiz Freitas Almeida
ddd480fb23 🐛 fix(tabsContext.tsx): handle null or undefined flow.description to prevent potential errors 2023-09-21 12:57:08 -03:00
Cristhian Zanforlin Lousa
610e94759a 🐛 fix(api.tsx): update Authorization header to use access_token from cookies instead of accessToken variable to fix authentication issue 2023-09-21 11:50:01 -03:00
anovazzi1
8f01f5c838 chore(example.spec.ts): remove example.spec.ts test file
The example.spec.ts test file was removed as it is no longer needed.
2023-09-21 11:02:37 -03:00
anovazzi1
d9073aba39 refactor(tabsContext.tsx): rename processFlowEdges and processFlowNodes functions to processDataFromFlow to improve clarity and consistency
refactor(tabsContext.tsx): remove console.log statement for old edges
refactor(tabsContext.tsx): add comments to indicate updating edges colors and baseclasses in edges
refactor(tabsContext.tsx): add comments to indicate updating baseclasses in edges
refactor(tabsContext.tsx): add comments to indicate adding animation to text type edges
refactor(tabsContext.tsx): update updateIds function to handle GroupNode type nodes
refactor(reactflowUtils.ts): update updateIds function to handle GroupNode type nodes
refactor(reactflowUtils.ts): update updateIds function to handle sourceHandle and targetHandle ids in edges
2023-09-21 10:56:50 -03:00
igorrCarvalho
3cbe046e08 Refactor: Disable signUp button when form is invalid 2023-09-21 10:54:20 -03:00
anovazzi1
bf1597a9f4 refactor(tabsContext.tsx): simplify code in TabsProvider component
The changes in this commit simplify the code in the TabsProvider component in the tabsContext.tsx file. Here's a summary of the changes:

- In the `createNewFlow` function, the `flowData` parameter is now of type `ReactFlowJsonObject | null` instead of `{ data: ReactFlowJsonObject | null; description: string }`. This simplifies the function signature and removes the need for destructuring the `flowData` object.
- The `extractDataFromFlow` function has been renamed to `processDataFromFlow` to better reflect its purpose. The function now returns only the `data` property from the `flow` object instead of an object with `data` and `description` properties.
- The `description` property in the `createNewFlow` function is now set to `flow.description ?? getRandomDescription()`. This ensures that if the `flow` object has a `description` property, it is used, otherwise a random description is generated.
- The `processFlowEdges` and `processFlowNodes` functions are no longer called in the `createNewFlow` function. It seems that these functions are defined elsewhere and are not necessary in this context.

These changes simplify the code and improve readability by removing unnecessary checks and simplifying function signatures.
2023-09-21 10:30:59 -03:00
anovazzi1
577046523a fix(tabsContext.tsx): change parameter type of newProject in uploadFlow function from optional boolean to required boolean to improve clarity and prevent potential bugs
fix(tabsContext.tsx): change parameter type of newProject in addFlow function from optional Boolean to required Boolean to improve clarity and prevent potential bugs
fix(extraSidebarComponent/index.tsx): change argument of uploadFlow function from undefined to false to fix a bug where uploadFlow was not being called correctly
fix(tabs/index.ts): change parameter type of newFlow in uploadFlow function from optional boolean to required boolean to improve clarity and prevent potential bugs
2023-09-21 10:08:12 -03:00
Gabriel Luiz Freitas Almeida
c10b9927e1
Release 0.4.21 (#950) 2023-09-21 10:05:31 -03:00
Gabriel Luiz Freitas Almeida
1bb9b1c363
Bump version to 0.4.21 (#949) 2023-09-21 10:02:40 -03:00
Gabriel Luiz Freitas Almeida
f6ea541477 🔧 chore(Makefile): update mypy command to exclude .venv folder and only check files in ./src/backend/langflow directory 2023-09-21 10:01:37 -03:00