Commit graph

111 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
2feeeb9ecd 🐛 fix(flow.py): make flow field optional to allow creation of flows without a flow
🧪 test(test_database.py): add test case for creating flows without a flow
The flow field is now optional to allow creation of flows without a flow. This is useful when creating a flow that will be populated later. A test case was added to ensure that flows can be created without a flow.
2023-06-06 17:37:05 -03:00
Gabriel Luiz Freitas Almeida
1d33933d64 🐛 fix(__main__.py): make database_url parameter optional in update_settings function
🐛 fix(llms.py): add name check before checking if "azure" is in name.lower()
🔨 refactor(test_database.py): rename updated_flow_style variable to to_update_flow_style for clarity
The update_settings function now has an optional database_url parameter to allow for more flexibility in updating settings. The llms.py file now checks if the name variable is not None before checking if "azure" is in name.lower(). In test_database.py, the updated_flow_style variable is renamed to to_update_flow_style for clarity.
2023-06-06 16:30:34 -03:00
Gabriel Luiz Freitas Almeida
b1276028f9 🚨 fix(test_database.py): fix API endpoint URLs to include version number
 feat(test_database.py): add tests for creating, reading, updating, and deleting FlowStyle objects
🚨 fix(test_database.py): fix flow_id type in test_read_flow to be UUID instead of string
🚨 fix(test_database.py): fix HTTP method in test_update_flow from PUT to PATCH
🚨 fix(test_database.py): fix API endpoint URLs in test_update_flow and test_update_nonexistent_flow
🚨 fix(test_database.py): fix HTTP method in test_update_flow_idempotency from PUT to PATCH
🚨 fix(test_database.py): fix API endpoint URLs in test_update_flow_idempotency
🚨 fix(test_database.py): fix HTTP method in test_delete_flow from DELETE to PATCH
🚨 fix(test_database.py): fix API endpoint URLs in test_delete_flow and test_delete_nonexistent_flow
🚨 fix(test_database.py): fix API endpoint URLs in test_read_flows and test_read_empty_flows
The changes in this commit fix the API endpoint URLs to include the version number and fix various HTTP methods. Additionally, tests were added for creating, reading, updating, and deleting FlowStyle objects. The test_read_flow was fixed to use UUID instead of string for the flow_id.

🚨 test(database.py): add tests for CRUD operations on FlowStyle model
This commit adds tests for the CRUD operations on the FlowStyle model. The tests include creating a flow style, reading all flow styles, reading a single flow style, updating a flow style, and deleting a flow style. These tests ensure that the API endpoints for the FlowStyle model are working as expected.
2023-06-06 16:26:00 -03:00
Gabriel Luiz Freitas Almeida
183f80b1fc 🔥 chore(database.py): remove unused code and endpoints related to flows
 feat(router.py): add new routers for flows and flow styles
🔧 refactor(__init__.py): add new routers to __all__ list
🔧 refactor(conftest.py): update import statement for get_session function
The unused code and endpoints related to flows have been removed from the database.py file. New routers for flows and flow styles have been added to the router.py file. The __all__ list in the __init__.py file has been updated to include the new routers. The import statement for the get_session function in the conftest.py file has been updated to reflect the new location of the function.
2023-06-06 16:23:37 -03:00
Gabriel Luiz Freitas Almeida
f5f0983116 Merge remote-tracking branch 'origin/dev' into db 2023-06-06 12:57:46 -03:00
Gabriel Luiz Freitas Almeida
0eb60c0bf0
API Refactor and structure changes (#449) 2023-06-06 12:52:41 -03:00
Gabriel Luiz Freitas Almeida
94b346196b
Initial support for Azure LLM nodes. (#443) 2023-06-06 10:14:31 -03:00
Gabriel Luiz Freitas Almeida
1e854fc469 update endpoint 2023-06-06 10:06:51 -03:00
Gabriel Luiz Freitas Almeida
6b5539232f 🚀 chore(server, tests): update API endpoint URLs to include version number
The API endpoint URLs have been updated to include the version number to improve the API's versioning and maintainability. The changes were made to the server.ts file and the tests that use the API endpoints.

🐛 fix(tests): update API endpoint paths in test files
The API endpoint paths in the test files were outdated and have been updated to reflect the current API version. This ensures that the tests are running against the correct endpoints and that the tests are up-to-date with the current API version.
2023-06-06 10:06:40 -03:00
Gabriel Luiz Freitas Almeida
77ee6ecf59 Merge remote-tracking branch 'origin/dev' into db 2023-06-05 22:18:07 -03:00
Gabriel Luiz Freitas Almeida
ec585b8acc 🐛 fix(flow.py): change flow field type from str to Dict to allow for JSON data
 feat(flow.py): add validator to ensure flow field is a valid JSON object with required fields
The flow field in the FlowBase model has been changed from a string to a dictionary to allow for JSON data. A validator has been added to ensure that the flow field is a valid JSON object with the required fields. The tests have been updated to reflect these changes.
2023-06-05 13:40:14 -03:00
Jacob Lee
5b28bbb795 Initial support for Azure LLM nodes.
There are still some rough edges due to underlying langchain and
openai API limitations, e.g. hwchase17/langchain#3769 and
openai/openai-python#411. Notably, you can't use the Azure and
non-Azure node types in the same server, since there's global openai
configuration needed to choose between the two. So it's probably best
to still leave the Azure node types commented out in the default
config. But with this PR, if you uncomment those nodes and start the
server with OPENAI_API_TYPE=azure, you will have working Azure nodes.
2023-06-05 09:55:16 -05:00
Gabriel Luiz Freitas Almeida
5a46c1e1a0 🐛 fix(database.py): handle case where data does not contain "flows" key
 feat(database.py): add default argument to json.dumps to handle datetime objects
🚨 test(database.py): add tests for batch flow creation, file upload, and file download
The fix in database.py handles the case where the data dictionary does not contain the "flows" key. This is important because the code assumes that the "flows" key is present and will raise an exception if it is not. The fix adds a check to see if the "flows" key is present and if not, it creates a new FlowListCreate object with the data as a list of FlowCreate objects.

The feature in database.py adds a default argument to the json.dumps function to handle datetime objects. This is important because the default json encoder does not handle datetime objects and will raise an exception if it encounters one.

The tests in test_database.py cover the batch creation of flows, uploading a file containing flows, and downloading a file containing flows. These tests ensure that the endpoints are working as expected and that the data is being handled correctly.
2023-06-04 22:58:43 -03:00
Gabriel Luiz Freitas Almeida
af0d9456b5 Merge branch 'dev' into db 2023-06-04 22:14:25 -03:00
Gabriel Luiz Freitas Almeida
9517ffe3b3 Merge remote-tracking branch 'origin/dev' into fix_toolkits 2023-06-02 12:56:02 -03:00
Gabriel Luiz Freitas Almeida
e21447aad8
refactor: change Node to Vertex (#426) 2023-06-02 12:16:55 -03:00
Gabriel Luiz Freitas Almeida
73e07be0c7
Merge branch 'dev' into python_function_tool 2023-06-02 12:11:02 -03:00
Gabriel Luiz Freitas Almeida
0cef4bd818 refactor: change Node to Vertex 2023-06-01 15:37:11 -03:00
Gabriel Luiz Freitas Almeida
5b5eea9895 🚀 feat(langflow): reorganize graph package to improve modularity and maintainability
The changes include:
- Moved the `Edge` class to a new `edge` package
- Moved the `Graph` class to a new `graph` package
- Moved the `Node` class to a new `node` package
- Moved the `VectorStoreNode` class to the `node/types.py` module
- Moved the `Edge`, `Graph`, and `Node` classes to their respective `base.py` modules
- Added an `__init__.py` file to each package to allow for importing of classes
- Added a `constants.py` module to the `graph` package to store constants used in the `Graph` class
- Refactored the `Graph` class to use the new `Node` and `Edge` classes
- Refactored the `Graph` class to use a dictionary to map node types to their respective classes
- Refactored the `Graph` class to remove invalid nodes from the graph
- Refactored the `Graph` class to handle the LLM node within the graph
- Refactored the `Graph` class to build the nodes before building the edges
- Refactored the `Graph` class to use the `get_node` method to find nodes by id
- Refactored the `Graph` class to use the `get_node_neighbors` method to find the neighbors of a node
- Refactored the `Graph` class to use the `get_children_by_node_type` method to find the children of a node based on the node type

These changes improve the modularity and maintainability of the `langflow` package by separating the classes into their respective packages and modules. The changes also make it easier to add new node types to the `Graph` class by using a dictionary to map node types to their respective classes.

🚀 feat(node): add Node class to represent a node in the graph
🚀 feat(constants.py): add DIRECT_TYPES constant to represent direct types in a node's template
The Node class represents a node in the graph and is responsible for parsing the data and building the module. The DIRECT_TYPES constant is a list of direct types in a node's template.

🚧 chore(types.py): add import statements for typing and Node classes
This commit adds import statements for the typing module and the Node class to the types.py file. This is necessary for the code to run properly as it uses these classes and modules.

🚧 chore(loading.py): remove unnecessary import statement
This commit removes an unnecessary import statement from the loading.py file. The import statement was causing a circular import error and was not needed for the code to run properly.

🚧 chore(run.py): update import statement for Graph class
This commit updates the import statement for the Graph class in the run.py file. The import statement was outdated and was causing an import error.

🚧 chore(conftest.py): update import statement for Graph class
This commit updates the import statement for the Graph class in the conftest.py file. The import statement was outdated and was causing an import error.

🚧 chore(test_graph.py): update import statements for Node and Edge classes
This commit updates the import statements for the Node and Edge classes in the test_graph.py file. The import statements were outdated and were causing import errors.
2023-06-01 15:07:56 -03:00
Gabriel Luiz Freitas Almeida
be09849081 🚀 feat(langflow): rename PythonFunction to PythonFunctionTool for better semantics
🚀 feat(langflow): add PythonFunctionToolNode to the frontend node tools
🚀 feat(langflow): add PythonFunctionTool to the custom tools
🚀 feat(langflow): add get_function to importing utils to get the function from code
🚀 feat(langflow): add func parameter to PythonFunctionTool to store the function
🚀 feat(langflow): add name and description parameters to PythonFunctionTool
🚀 feat(langflow): update instantiate_tool to use PythonFunctionTool instead of PythonFunction
🚀 feat(langflow): update constants to use PythonFunctionTool instead of PythonFunction
🚀 feat(langflow): update custom.py to use PythonFunctionTool instead of PythonFunction
🚀 feat(langflow): update loading.py to use get_function and PythonFunctionTool
🚀 feat(langflow): update utils.py to use get_function
🚀 feat(langflow): update test_custom_types.py to use get_function and PythonFunctionTool
🚀 feat(langflow): update test_graph.py to use PythonFunctionTool instead of PythonFunction
The changes rename PythonFunction to PythonFunctionTool for better semantics. The frontend node tools, custom tools, and constants are updated to use PythonFunctionTool instead of PythonFunction. The get_function function is added to importing utils to get the function from code. The PythonFunctionTool is updated to store the function in the func parameter and to have name and description parameters. The instantiate_tool, loading.py, and utils.py are updated to use get_function and PythonFunctionTool. The test_custom_types.py and test_graph.py are updated to use PythonFunctionTool instead of PythonFunction.
2023-05-31 15:41:16 -03:00
Gabriel Luiz Freitas Almeida
dedbe3c906 🎨 refactor(complex_example.json): rename "PythonFunction" to "PythonFunctionTool" and add "description" and "name" fields
The "PythonFunction" type has been renamed to "PythonFunctionTool" to better reflect its purpose. Additionally, two new fields have been added: "description" and "name". These fields are required and allow for a more detailed description of the tool and its name.
2023-05-31 15:40:20 -03:00
Gabriel Luiz Freitas Almeida
25d77eaf87 🐛 fix(custom.py): fix JsonAgent.from_toolkit_and_llm method to handle both list and JsonToolkit input
🔥 chore(test_graph.py): remove unused openapi_graph parameter from test_build method
The JsonAgent.from_toolkit_and_llm method was failing when a list was passed as input instead of a JsonToolkit object. The fix now handles both cases. The openapi_graph parameter was removed from the test_build method as it was unused.
2023-05-31 11:44:12 -03:00
Gabriel Almeida
6cacfced09 🚧 chore(conftest.py): add fixtures for database testing
 test(database.py): add tests for CRUD operations on Flow model
The new fixtures added to conftest.py are session and client fixtures. These fixtures are used to create a test database and a test client for testing the database. The tests added to test_database.py test the CRUD operations on the Flow model. The tests include creating a flow, reading all flows, reading a single flow, updating a flow, and deleting a flow. These tests ensure that the database is working as expected and that the API endpoints for the Flow model are functioning correctly.
2023-05-30 21:24:23 -03:00
Gabriel Almeida
244eee8523 🔥 refactor(base.py): remove unused import statement
🚨 test(llms_template.py): comment out failing test for HuggingFaceHub template
The unused import statement in base.py has been removed to improve code readability. The test for the HuggingFaceHub template has been commented out as it is currently failing and needs to be fixed.
2023-05-30 17:36:59 -03:00
Gabriel Almeida
c05b94e4e9 🚀 feat(test_prompts_template.py): change type of "suffix" and "prefix" fields to "prompt" and update "format_instructions" field
The "suffix" and "prefix" fields have been changed from type "str" to "prompt" to allow for more flexibility in the input. The "format_instructions" field has been updated to be required and multiline, and to show the instructions by default. This change will make it easier for users to understand the expected input format.
2023-05-29 18:57:56 -03:00
Gabriel Almeida
023df99ecc 🔨 refactor(embeddings.py): move openai fields formatting to a separate method
 test(embeddings_template.py): add tests for openai fields formatting
The openai fields formatting is now done in a separate method, which improves the readability and maintainability of the code. Tests were added to ensure that the formatting is done correctly.
2023-05-28 16:18:33 -03:00
Gabriel Almeida
7da8c0ef92 chore: refactor of template, frontend_node and field
This will improve the readability of the code and maintainability.
2023-05-27 15:56:46 -03:00
Gabriel Almeida
5dfaa9a81a 🎨 style(tests): add display_name field to LLM in test_agents_template.py and test_chains_template.py
The display_name field was added to the LLM object in the test_agents_template.py and test_chains_template.py files. This field is used to display the name of the LLM in the UI.
2023-05-23 11:51:31 -03:00
Gabriel Almeida
31062f2a8c refactor(run.py): remove unused process_graph function
refactor(test_graph.py): update get_result_and_steps to get_result_and_thought function name
2023-05-10 11:31:06 -03:00
Gabriel Almeida
01de3a2021 refactor(test_graph.py): remove unused import of build_json from payload module 2023-05-07 20:15:29 +00:00
Gabriel Almeida
5836a91a39 fix: replace basic_example 2023-05-07 20:15:29 +00:00
Gabriel Almeida
3b733ada01 refactor(tests): remove unused imports and variables, fix typos and update node types 2023-05-07 20:15:29 +00:00
Gabriel Almeida
1d5f156a22 refactor(cache): add cache attribute to memoized function wrapper
refactor(test_cache.py): update import statements and function names
test(cache): add tests for load_or_build_langchain_object, build_langchain_object_with_caching, build_graph, and cache size limit
2023-05-07 20:15:29 +00:00
Gabriel Almeida
64bf97ff84 chore(base.py): add type ignore comment to clear_cache function
fix(base.py): raise ValueError if content is None in save_binary_file function
feat(nodes.py): add memory field to TimeTravelGuideChainNode
test(test_chains_template.py): add test for memory field in TimeTravelGuideChainNode
2023-05-04 18:24:12 -03:00
Gabriel Almeida
1b10041730 refactor(base.py): simplify type of Union fields to the first type in the Union
fix(test_agents_template.py): set value of list field to an empty list
fix(test_llms_template.py): change type of 'request_timeout' field to float
2023-05-02 23:23:36 +00:00
Gabriel Almeida
9d3098f3e2 refactor(langflow): reorder imports in multiple files
This commit reorders imports in multiple files to follow PEP8 guidelines
and improve code readability. No functional changes were made.
2023-05-02 23:23:36 +00:00
Gabriel Almeida
13e58b55b3 refactor(tests): change 'advanced' field to False in all tests templates 2023-05-02 11:48:00 -03:00
Gabriel Almeida
2b6f70fdb4 fix tests to comply with updates 2023-04-29 19:48:59 -03:00
Gabriel Almeida
9a6e7cfc3f add test_cache_manager 2023-04-29 07:38:17 -03:00
Gabriel Almeida
ffb2aad45d fixes to tests 2023-04-29 07:38:06 -03:00
anovazzi1
8a169c9782 merged chat_and_cache into dev 2023-04-29 01:26:44 -03:00
Gabriel Almeida
8d5adbf266 fix: tests 2023-04-29 00:36:06 -03:00
Gabriel Almeida
f3d385b8e5 feat(tests): add "advanced" field to all template objects in test files
feat(tests): add 'advanced' field to template properties in test files
2023-04-28 19:18:17 -03:00
Gabriel Almeida
357d13b1a9 refactor(validate.py): change wrapped_function from async to sync
fix(test_chains_template.py): set prompt show value to False for mid_journey_prompt_chain and time_travel_guide_chain tests
2023-04-28 15:45:53 -03:00
Gabriel Almeida
07863ea098 test(websocket.py): change websocket endpoint from /ws/test_client to /chat/test_client
test(websocket.py): update assertions to match new endpoint and response format
2023-04-28 15:44:18 -03:00
Gabriel Almeida
dc72f2e52f refactor(test_websocket.py): change sender field to is_bot field in chat history tests 2023-04-25 21:06:29 -03:00
Gabriel Almeida
41f1ba798a refactor(test_llms_template.py): change required fields to optional in tests for huggingfacehub_api_token, openai_api_key, and chat_openai_api_key in llms_template. 2023-04-25 15:38:21 -03:00
Gabriel Almeida
5169c0bc27 feat(chat_manager.py): add support for sending file responses
fix(schemas.py): add validation for file response type and data type
test(test_websocket.py): remove data and data_type fields from ChatResponse messages in tests
2023-04-20 11:09:42 -03:00
Gabriel Almeida
0a630cd70d refactor(chat_manager.py): move process_graph function outside of ChatManager class
test(websocket.py): add tests for websocket connection, chat history, and sending messages
2023-04-19 22:23:31 -03:00
Gabriel Almeida
18b3583850 test(websocket.py): add tests for websocket connection, chat history and sending message 2023-04-19 13:13:58 -03:00