Commit graph

4,134 commits

Author SHA1 Message Date
Gabriel Luiz Freitas Almeida
49729263ef 🐛 fix(manager.py): fix incorrect assignment of langchain_object.result to result_dict["result"] to store the entire langchain_object instead 2023-08-16 15:40:14 -03:00
Gabriel Luiz Freitas Almeida
284158b33b 📦 chore(deploy_langflow_gcp.sh): add script to deploy Langflow on Google Cloud Platform
📝 docs(walkthroughtutorial.md): add tutorial for deploying Langflow on Google Cloud Platform

The `deploy_langflow_gcp.sh` script is added to the `scripts/gcp` directory. This script sets up the necessary VM, image, and networking configuration for deploying Langflow on Google Cloud Platform. It also creates firewall rules, installs dependencies, and starts the Langflow server.

The `walkthroughtutorial.md` file is added to the `scripts/gcp` directory. This file provides a step-by-step tutorial on how to deploy Langflow on Google Cloud Platform using the `deploy_langflow_gcp.sh` script. It includes instructions on setting up the GCP environment, running the script, and connecting to the Langflow VM.

Cleanup instructions are also provided in the tutorial for removing the resources created during the deployment process.

📝 docs(walkthroughtutorial_spot.md): add walkthrough tutorial for deploying Langflow on Google Cloud Platform

This commit adds a new file `walkthroughtutorial_spot.md` which contains a step-by-step tutorial for deploying Langflow on Google Cloud Platform (GCP) using Google Cloud Shell. The tutorial provides an introduction, prerequisites, instructions for setting up the GCP environment, deploying Langflow, connecting to the Langflow VM, and cleaning up resources after the deployment.

The tutorial is authored by Robert Wilkins III and has a duration of 45 minutes. It assumes that the user has a GCP account and basic knowledge of Google Cloud Shell. The tutorial also includes links to relevant documentation and provides commands for configuring the GCP environment and deploying Langflow.

The tutorial is comprehensive and aims to guide users through the process of deploying Langflow on GCP. It also includes cleanup instructions for removing the resources created during the tutorial if desired.
2023-08-16 15:39:08 -03:00
Gabriel Luiz Freitas Almeida
6b0383be50 📦 chore(deploy): add deployment files and configurations for Docker Compose setup 2023-08-16 15:38:43 -03:00
Gabriel Luiz Freitas Almeida
861b8d048e 🔧 chore(Makefile): update 'install_backend' target to include 'deploy' extras when installing dependencies with Poetry 2023-08-14 17:05:52 -03:00
Gabriel Luiz Freitas Almeida
a9bb04ee24 🐛 fix(base.py): add is_task parameter to Vertex constructor to indicate if the vertex is a task
 feat(base.py): add `get_result` method to `Vertex` to retrieve the result of a built vertex
🐛 fix(types.py): pass `is_task=True` to `super().__init__` in `CustomComponentVertex` constructor
 feat(worker.py): add `build_vertex` task to build a vertex asynchronously
2023-08-14 17:05:40 -03:00
Gabriel Luiz Freitas Almeida
00b8dd7af3 🔧 chore(manager.py): remove unused import statement for redis module
🔧 chore(manager.py): add try-except block to handle ImportError and provide clear error message when redis-py package is not installed
🔧 chore(manager.py): add import statement for redis module in the is_connected method to avoid NameError
2023-08-14 15:53:32 -03:00
Gabriel Luiz Freitas Almeida
e8d3a5df6d 🔨 chore(base.py): add upsert method to BaseCacheManager to provide a common interface for inserting or updating cache items
 feat(manager.py): add upsert method to InMemoryCache and RedisCache to support inserting or updating cache items
🐛 fix(manager.py): fix client_id generation in handle_websocket method to avoid overwriting existing cache items
🔨 chore(manager.py): refactor handle_websocket method to use upsert method and improve readability
2023-08-14 12:25:14 -03:00
Gabriel Luiz Freitas Almeida
20afabd90a 🐛 fix(manager.py): change cache_manager.set to cache_manager.upsert to update or insert cache value
 feat(manager.py): add result_dict to cache instead of directly setting langchain_object to improve cache semantics
🐛 fix(manager.py): handle case when langchain_object is not found in cache and raise ValueError
2023-08-14 12:23:54 -03:00
Gabriel Luiz Freitas Almeida
5df7341eec 🐛 fix(chat.py): rename flow_data_store variable to cache_manager for better clarity and consistency
 feat(chat.py): update references to flow_data_store to cache_manager for improved semantics and readability
🐛 fix(chat.py): fix incorrect cache key in chat_manager.set_cache() method call
🐛 fix(chat.py): fix incorrect cache key in chat_manager.chat_history.empty_history() method call
2023-08-14 12:23:21 -03:00
Gabriel Luiz Freitas Almeida
37773e0ca1 📝 chore(.env.example): add documentation for LANGFLOW_CACHE_TYPE environment variable and its possible values 2023-08-13 23:46:26 -03:00
Gabriel Luiz Freitas Almeida
4bf4768ca7 🔧 chore(base.Dockerfile): update poetry install command to exclude dev dependencies and include deploy dependencies for production deployment 2023-08-13 23:45:59 -03:00
Gabriel Luiz Freitas Almeida
5f0c014dcb 📦 chore(pyproject.toml): update dependencies and extras
🔒 chore(pyproject.toml): update celery, redis, and flower versions and make them optional dependencies

🔀 chore(pyproject.toml): add celery, redis, and flower to the deploy extra dependencies
2023-08-13 23:45:34 -03:00
Gabriel Luiz Freitas Almeida
0ed1165e53 🐳 chore(docker-compose.celery.yml): add dependencies and environment variables for redis cache and queue
🔧 fix(docker-compose.celery.yml): update uvicorn command to include debug log level

🔧 fix(docker-compose.celery.yml): update flower command to include redis broker URL

🔧 fix(docker-compose.celery.yml): add dependencies and environment variables for redis cache and queue in frontend service
2023-08-13 23:43:14 -03:00
Gabriel Luiz Freitas Almeida
561e048278 🐛 fix(manager.py): fix import statements and variable names for better organization and readability
 feat(manager.py): add support for chat cache and attach it to the chat manager for better chat history management
🔧 chore(manager.py): change client_id format in set_cache method to avoid conflicts with existing cache keys
2023-08-13 23:41:08 -03:00
Gabriel Luiz Freitas Almeida
64292aa997 feat(cache.py): add cache manager class to manage cache for different clients and notify observers on changes 2023-08-13 23:40:42 -03:00
Gabriel Luiz Freitas Almeida
f8f99c6881 🐛 fix(utils.py): rename cache_type variable to langchain_cache_type for clarity
🐛 fix(manager.py): add test connections to cache and database managers for initialization
2023-08-13 23:40:12 -03:00
Gabriel Luiz Freitas Almeida
0833b00fdc 🔧 chore(celery_app.py): refactor celery_app to use a separate function make_celery for improved modularity and readability
🔧 chore(celeryconfig.py): update broker_url and result_backend to use LANGFLOW_REDIS_HOST and LANGFLOW_REDIS_PORT environment variables if available, fallback to default values if not
2023-08-13 23:39:01 -03:00
Gabriel Luiz Freitas Almeida
1a51e90c43 🐛 fix(chat.py): remove unused import and variable 'flow_data_store' to improve code readability
 feat(chat.py): add support for cache_manager to handle chat history and cache langchain_object
🆕 feat(chat/manager.py): add ChatManager class to handle websocket connections and chat history
🆕 feat(chat/manager.py): add ChatHistory class to manage chat history for each client
🆕 feat(chat/manager.py): add methods to handle websocket connections, send messages, and process chat messages
🆕 feat(chat/manager.py): add method to set cache for a client and handle websocket communication
2023-08-13 23:38:31 -03:00
Gabriel Luiz Freitas Almeida
f65efbc43b 🔀 refactor(base.py): move cache settings to a separate section for better organization and readability
🔀 refactor(base.py): rename CACHE_TYPE variable to REDIS_CACHE_TYPE to improve clarity
🔀 refactor(base.py): rename REDIS_HOST, REDIS_PORT, REDIS_DB, and REDIS_CACHE_EXPIRE variables to improve clarity
🔀 refactor(base.py): remove unused import statements
🔀 refactor(settings.py): remove unused import statements
🔀 refactor(settings.py): remove unused code and comments
🔀 refactor(settings.py): remove unused function `save_settings_to_yaml`
🔀 refactor(settings.py): remove unused function `update_settings`
🔀 refactor(settings.py): remove unused function `update_from_yaml`
🔀 refactor(settings.py): remove unused constant `BASE_COMPONENTS_PATH`
🔀 refactor(settings.py): remove unused class attributes
🔀 refactor(settings.py): remove unused class methods
🔀 refactor(settings.py): remove unused class `Settings`
2023-08-13 23:37:56 -03:00
Gabriel Luiz Freitas Almeida
34ac959f5a 🔄 refactor(cache): reorganize imports and remove unused imports and variables in cache module
🔄 refactor(cache): rename BaseCache class to BaseCacheManager for better clarity and consistency
🔄 refactor(cache): remove cache_manager from __all__ in cache module
🔄 refactor(cache): remove unused import of Service in BaseCacheManager class
🔄 refactor(cache): rename cache_manager to BaseCacheManager in factory module
🔄 refactor(cache): remove unused import of InMemoryCache in factory module
🔄 refactor(cache): remove flow module and its related code as it is no longer used

🔧 fix(manager.py): fix import statements and class inheritance in cache manager module
 feat(manager.py): add InMemoryCache class to implement a simple in-memory cache using an OrderedDict
 feat(manager.py): add RedisCache class to implement a Redis-based cache using the redis-py library
2023-08-13 23:37:22 -03:00
Gabriel Luiz Freitas Almeida
017b24f744 Merge remote-tracking branch 'origin/dev' into celery 2023-08-13 19:29:56 -03:00
Gabriel Luiz Freitas Almeida
5954e6daa0 🔧 fix(endpoints.py): remove unused import 'process_graph_cached' and replace it with 'process_graph_cached_worker' for processing graph data asynchronously
🔧 fix(endpoints.py): add error handling for processing tweaks and log the error message
 feat(endpoints.py): use 'process_graph_cached_worker' to process graph data asynchronously and return the result in 'ProcessResponse'
2023-08-13 19:26:48 -03:00
Gabriel Luiz Freitas Almeida
304e824ef7 feat(worker.py): add worker module to handle background tasks in LangFlow backend
🔧 chore(worker.py): refactor process_graph_cached function to improve readability and maintainability
2023-08-13 19:25:59 -03:00
Gabriel Luiz Freitas Almeida
43ba81c2ee 📦 chore(core): add Celery configuration files
 feat(celery_app.py): add Celery app configuration for langflow with Redis as broker and backend
 feat(celeryconfig.py): add Celery configuration file with environment variable support for broker URL and result backend URL
2023-08-13 19:25:28 -03:00
Gabriel Luiz Freitas Almeida
d1a9ed45d7 📦 chore(pyproject.toml): update orjson version from 3.9.1 to 3.9.3 for bug fixes and improvements
📦 chore(pyproject.toml): add celery version 5.3.1, redis version 4.6.0, and flower version 2.0.1 to dev dependencies for task queue and monitoring
2023-08-13 17:54:53 -03:00
Gabriel Luiz Freitas Almeida
62ccab2cb9 📦 chore(docker-compose.celery.yml): add docker-compose file for running Celery worker and Flower 2023-08-13 17:49:08 -03:00
Gabriel Luiz Freitas Almeida
a1df839dc1 🐛 fix(dev.Dockerfile): update uvicorn command to use --factory flag and create_app function to improve modularity and maintainability 2023-08-13 17:48:05 -03:00
Gabriel Luiz Freitas Almeida
9fcadcb0a5 📦 chore(base.Dockerfile): add base Dockerfile for Python project setup
🚧 feat(base.Dockerfile): create python-base stage with shared environment variables
🚧 feat(base.Dockerfile): create builder-base stage for building dependencies and creating virtual environment
🚧 feat(base.Dockerfile): create development stage for development and testing
2023-08-13 17:46:02 -03:00
Gabriel Luiz Freitas Almeida
f8d4bb70ac 📦 chore(frontend): add .dockerignore file to exclude node_modules and build directories from Docker image 2023-08-13 17:45:31 -03:00
Gabriel Luiz Freitas Almeida
3d8d44538f Merge branch 'release' into dev 2023-08-10 10:10:28 -03:00
Gabriel Luiz Freitas Almeida
fe5a35aa37 Merge remote-tracking branch 'origin/main' into release 2023-08-10 09:55:42 -03:00
Gabriel Luiz Freitas Almeida
2751b92b6b 🔖 chore(pyproject.toml): bump version from 0.4.6 to 0.4.7 for langflow package 2023-08-10 09:54:47 -03:00
Gabriel Luiz Freitas Almeida
45d1b34197
Improves CustomComponents Errors (#748) 2023-08-10 09:44:44 -03:00
Gabriel Luiz Freitas Almeida
df77ba81f7 🐛 fix(custom_component.py): fix condition to check if Optional type hint is used but not imported in the code 2023-08-10 09:24:10 -03:00
Gabriel Luiz Freitas Almeida
564634d36c 🐛 fix(directory_reader.py): handle SyntaxError when parsing code to prevent crashes
🐛 fix(directory_reader.py): return False if code is not valid Python to prevent false positives
🐛 fix(directory_reader.py): fix method name from is_type_hint_used_but_not_imported to _is_type_hint_used_in_args for consistency
🐛 fix(directory_reader.py): fix method name from is_type_hint_imported to _is_type_hint_imported for consistency
🐛 fix(directory_reader.py): fix return value of _is_type_hint_used_in_args method to return False if type hint is used but not imported
2023-08-10 09:23:36 -03:00
Gabriel Luiz Freitas Almeida
261e258ed4 🐛 fix(loading.py): make a copy of the params before modifying it to prevent unintended side effects 2023-08-10 09:23:02 -03:00
Gabriel Luiz Freitas Almeida
7b22fd2711
add waitlist button on header (#742) 2023-08-10 07:59:03 -03:00
Gabriel Luiz Freitas Almeida
79858561a6
Adds Join The Waitlist button, Vectara, Metaphor in Beta and other fixes (#744) 2023-08-09 17:51:47 -03:00
Gabriel Luiz Freitas Almeida
8c41415a32 🐛 fix(custom_component.py): handle case when return_type is None to prevent errors
🐛 fix(test_custom_component.py): update assertion to expect return_type as a list instead of a string
🐛 fix(test_vectorstore_template.py): update assertion to check if all vectorstores in settings are present in the response
2023-08-09 17:50:03 -03:00
Gabriel Luiz Freitas Almeida
30aad35cc6
Merge branch 'main' into release 2023-08-09 17:41:23 -03:00
Gabriel Luiz Freitas Almeida
8a599a85fe
Adds Vectara VectorStore and Metaphor Toolkit (#743) 2023-08-09 17:40:26 -03:00
Gabriel Luiz Freitas Almeida
e1407d0595 🔧 chore(Metaphor.py): refactor build method to accept additional parameters for improved configurability
🔧 chore(Metaphor.py): update search method to use the provided parameters for use_autoprompt and search_num_results
🔧 chore(Metaphor.py): update find_similar method to use the provided parameter for similar_num_results
2023-08-09 17:12:22 -03:00
Gabriel Luiz Freitas Almeida
89c3306512 🔒 chore(poetry.lock): update aiofiles version from 23.2.0 to 23.2.1 to fix a bug related to file support for asyncio
🔒 chore(poetry.lock): update dnspython version from 2.4.1 to 2.4.2 to fix a bug related to DNS toolkit
2023-08-09 15:53:45 -03:00
Gabriel Luiz Freitas Almeida
29766ecaf0 🐛 fix(Metaphor.py): ignore type error for importing Metaphor from metaphor_python
🐛 fix(Metaphor.py): ignore type error for returning a list with mixed types
🐛 fix(Vectara.py): add condition to check if documents and embedding are not None before creating Vectara instance
🐛 fix(CustomComponent.py): change return type of get_function_entrypoint_return_type to List[str] to match the actual return value
2023-08-09 15:53:18 -03:00
Gabriel Luiz Freitas Almeida
9bbdd9465b 🔨 refactor(Vectara.py): reorganize function parameters for better readability and maintainability
🔧 chore(Vectara.py): add "embedding" parameter to the build function to support custom embeddings in VectaraComponent
2023-08-09 15:47:22 -03:00
Gabriel Luiz Freitas Almeida
e5e23a1da6 🐛 fix(component.py): add support for "documentation" field in template_config to properly handle component documentation
🐛 fix(types.py): update_attributes function now updates frontend_node with "documentation" field from template_config
2023-08-09 15:32:41 -03:00
Gabriel Luiz Freitas Almeida
38b6831b57 feat(Metaphor.py): add MetaphorToolkit component to langflow toolkit
The MetaphorToolkit component is added to the langflow toolkit. It provides functionality for searching metaphors using the Metaphor API. The component includes three tools: search, get_contents, and find_similar. The search tool allows users to search for metaphors using a query. The get_contents tool retrieves the contents of a webpage based on the ids returned from the search tool. The find_similar tool finds search results similar to a given URL returned from the search tool.

The MetaphorToolkit component is still in beta and requires a Metaphor API key to function. The API key is stored securely and can be configured in the field_config of the component. For more information, refer to the documentation: [Metaphor Toolkit Documentation](https://python.langchain.com/docs/integrations/tools/metaphor_search)
2023-08-09 15:29:11 -03:00
Gabriel Luiz Freitas Almeida
d16d916952 🐛 fix(custom_component.py): improve parsing of return type in CustomComponent class
 feat(custom_component.py): add support for parsing return type when it is a Union of types in CustomComponent class
2023-08-09 15:28:39 -03:00
Gabriel Luiz Freitas Almeida
639550d537 🔧 chore(pyproject.toml): add metaphor-python dependency to improve code analysis and documentation generation
⬆️ feat(pyproject.toml): upgrade black dependency to version 23.1.0 for code formatting
2023-08-09 15:26:51 -03:00
Gabriel Luiz Freitas Almeida
b3e512f55f feat(PromptRunner.py): add PromptRunner component to run a Chain with a given PromptTemplate
 feat(Vectara.py): add VectaraComponent to implement Vector Store using Vectara
🔧 chore(vectorstores): add empty __init__.py file to the vectorstores directory
2023-08-09 14:37:20 -03:00