From 5d857e98db85c93e627dd72836d54dbda1b7e0be Mon Sep 17 00:00:00 2001 From: YoungWook KIM Date: Fri, 12 Jan 2024 09:59:47 +0900 Subject: [PATCH 01/15] Update docker-compose.yml Problems with Docker Compose not being able to find the backend --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 7616600da..c74447899 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,8 @@ services: dockerfile: ./cdk.Dockerfile args: - BACKEND_URL=http://backend:7860 + depends_on: + - backend environment: - VITE_PROXY_TARGET=http://backend:7860 ports: From e617d363877c19a1046d925dc26e81cd81e959f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 22:03:43 +0000 Subject: [PATCH 02/15] Bump vite from 4.5.1 to 4.5.2 in /src/frontend Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.1 to 4.5.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- src/frontend/package-lock.json | 8 ++++---- src/frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index 168078c1d..225f05a9b 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -99,7 +99,7 @@ "pretty-quick": "^3.1.3", "tailwindcss": "^3.3.3", "typescript": "^5.2.2", - "vite": "^4.5.1" + "vite": "^4.5.2" } }, "node_modules/@adobe/css-tools": { @@ -11354,9 +11354,9 @@ } }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", diff --git a/src/frontend/package.json b/src/frontend/package.json index 015b6d9a2..5ee8b6741 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -121,6 +121,6 @@ "pretty-quick": "^3.1.3", "tailwindcss": "^3.3.3", "typescript": "^5.2.2", - "vite": "^4.5.1" + "vite": "^4.5.2" } } From 6f258863f30da3ab4384d6303d3bacf71e526fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Gajownik?= Date: Thu, 8 Feb 2024 22:35:10 +0100 Subject: [PATCH 03/15] Fix: Error: cannot import name 'CreateTrace' from 'langfuse.callback' --- src/backend/langflow/processing/base.py | 3 +-- src/backend/langflow/services/plugins/langfuse_plugin.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/backend/langflow/processing/base.py b/src/backend/langflow/processing/base.py index 06dc0a063..1a181ee50 100644 --- a/src/backend/langflow/processing/base.py +++ b/src/backend/langflow/processing/base.py @@ -28,13 +28,12 @@ def setup_callbacks(sync, trace_id, **kwargs): def get_langfuse_callback(trace_id): from langflow.services.deps import get_plugins_service - from langfuse.callback import CreateTrace logger.debug("Initializing langfuse callback") if langfuse := get_plugins_service().get("langfuse"): logger.debug("Langfuse credentials found") try: - trace = langfuse.trace(CreateTrace(name="langflow-" + trace_id, id=trace_id)) + trace = langfuse.trace(name="langflow-" + trace_id, id=trace_id) return trace.getNewHandler() except Exception as exc: logger.error(f"Error initializing langfuse callback: {exc}") diff --git a/src/backend/langflow/services/plugins/langfuse_plugin.py b/src/backend/langflow/services/plugins/langfuse_plugin.py index 424279342..e5d3afdd6 100644 --- a/src/backend/langflow/services/plugins/langfuse_plugin.py +++ b/src/backend/langflow/services/plugins/langfuse_plugin.py @@ -64,14 +64,13 @@ class LangfusePlugin(CallbackPlugin): def get_callback(self, _id: Optional[str] = None): if _id is None: _id = "default" - from langfuse.callback import CreateTrace # type: ignore logger.debug("Initializing langfuse callback") try: langfuse_instance = self.get() if langfuse_instance is not None and hasattr(langfuse_instance, "trace"): - trace = langfuse_instance.trace(CreateTrace(name="langflow-" + _id, id=_id)) + trace = langfuse_instance.trace(name="langflow-" + _id, id=_id) if trace: return trace.getNewHandler() From 2b646429c07f60e84018035aed5db8a8839abbce Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 9 Feb 2024 12:00:24 -0300 Subject: [PATCH 04/15] Refactor langflow processing and langfuse callback initialization --- src/backend/langflow/processing/base.py | 8 +++++--- src/backend/langflow/services/plugins/langfuse_plugin.py | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backend/langflow/processing/base.py b/src/backend/langflow/processing/base.py index 06dc0a063..fad53c254 100644 --- a/src/backend/langflow/processing/base.py +++ b/src/backend/langflow/processing/base.py @@ -2,10 +2,13 @@ from typing import TYPE_CHECKING, List, Union from langchain.agents.agent import AgentExecutor from langchain.callbacks.base import BaseCallbackHandler +from loguru import logger + from langflow.api.v1.callback import AsyncStreamingLLMCallbackHandler, StreamingLLMCallbackHandler from langflow.processing.process import fix_memory_inputs, format_actions from langflow.services.deps import get_plugins_service -from loguru import logger +from langflow.processing.process import fix_memory_inputs, format_actions +from langflow.services.deps import get_plugins_service if TYPE_CHECKING: from langfuse.callback import CallbackHandler # type: ignore @@ -28,13 +31,12 @@ def setup_callbacks(sync, trace_id, **kwargs): def get_langfuse_callback(trace_id): from langflow.services.deps import get_plugins_service - from langfuse.callback import CreateTrace logger.debug("Initializing langfuse callback") if langfuse := get_plugins_service().get("langfuse"): logger.debug("Langfuse credentials found") try: - trace = langfuse.trace(CreateTrace(name="langflow-" + trace_id, id=trace_id)) + trace = langfuse.trace(name="langflow-" + trace_id, id=trace_id) return trace.getNewHandler() except Exception as exc: logger.error(f"Error initializing langfuse callback: {exc}") diff --git a/src/backend/langflow/services/plugins/langfuse_plugin.py b/src/backend/langflow/services/plugins/langfuse_plugin.py index 424279342..e5d3afdd6 100644 --- a/src/backend/langflow/services/plugins/langfuse_plugin.py +++ b/src/backend/langflow/services/plugins/langfuse_plugin.py @@ -64,14 +64,13 @@ class LangfusePlugin(CallbackPlugin): def get_callback(self, _id: Optional[str] = None): if _id is None: _id = "default" - from langfuse.callback import CreateTrace # type: ignore logger.debug("Initializing langfuse callback") try: langfuse_instance = self.get() if langfuse_instance is not None and hasattr(langfuse_instance, "trace"): - trace = langfuse_instance.trace(CreateTrace(name="langflow-" + _id, id=_id)) + trace = langfuse_instance.trace(name="langflow-" + _id, id=_id) if trace: return trace.getNewHandler() From 33dc1b9c62bb58036cadb68674bed94b80c488ff Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 9 Feb 2024 12:00:41 -0300 Subject: [PATCH 05/15] Update version to 0.6.7a2 in pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 55bb0831c..1ec8e5b23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow" -version = "0.6.7a1" +version = "0.6.7a2" description = "A Python package with a built-in web application" authors = ["Logspace "] maintainers = [ From 0ec53b2ec5a035e8f6e8d72371495d000738c88c Mon Sep 17 00:00:00 2001 From: Chris Bateman Date: Sat, 10 Feb 2024 11:30:20 +0000 Subject: [PATCH 06/15] Add dependabot.yml --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..153590eae --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# Set update schedule for GitHub Actions + +version: 2 +updates: + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "monthly" + From 0e41fa033cc17fb4325f3d5b52f205c2b0b0c10e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:14:51 +0000 Subject: [PATCH 07/15] Bump actions/checkout from 2 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/deploy_gh-pages.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/pre-release.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a34aedc32..f2b05c91a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Cache Docker layers uses: actions/cache@v2 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b480496ef..7d7237cb9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/deploy_gh-pages.yml b/.github/workflows/deploy_gh-pages.yml index ffb52f941..5501ef584 100644 --- a/.github/workflows/deploy_gh-pages.yml +++ b/.github/workflows/deploy_gh-pages.yml @@ -12,7 +12,7 @@ jobs: name: Deploy to GitHub Pages runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: node-version: 18 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 58d953e9e..c6954377e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,7 @@ jobs: - "3.9" - "3.10" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install poetry run: | pipx install poetry==$POETRY_VERSION diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index da449dae3..dc5e11696 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -18,7 +18,7 @@ jobs: if: ${{ (github.event.pull_request.merged == true) && contains(github.event.pull_request.labels.*.name, 'pre-release') }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python 3.10 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b14fbc17b..0734e1dc6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: if: ${{ (github.event.pull_request.merged == true) && contains(github.event.pull_request.labels.*.name, 'Release') }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python 3.10 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bc2e193c6..081a975f1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python ${{ matrix.python-version }} From 3251121b7c9e7e09831dc7180160350a86c5ee1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:14:55 +0000 Subject: [PATCH 08/15] Bump github/codeql-action from 2 to 3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/codeql.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index b480496ef..a2f8d8992 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -34,7 +34,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -48,7 +48,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 # ℹ️ Command-line programs to run using the OS shell. # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun @@ -61,6 +61,6 @@ jobs: # ./location_of_script_within_repo/buildscript.sh - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" From 0c1d5e8029d04bb568cb6d0e37e9d7556ba0a658 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:15:04 +0000 Subject: [PATCH 09/15] Bump actions/setup-python from 4 to 5 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/lint.yml | 2 +- .github/workflows/pre-release.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 58d953e9e..855eea058 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,7 +22,7 @@ jobs: run: | pipx install poetry==$POETRY_VERSION - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: poetry diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index da449dae3..27ee212ff 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -22,7 +22,7 @@ jobs: - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python 3.10 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.10" cache: "poetry" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b14fbc17b..7b5f5349c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python 3.10 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.10" cache: "poetry" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bc2e193c6..db80ff1be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: - name: Install poetry run: pipx install poetry==$POETRY_VERSION - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: "poetry" From 877f97b380c6fc6a4fcff107f934b857b8a700f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:20:52 +0000 Subject: [PATCH 10/15] Bump actions/cache from 2 to 4 Bumps [actions/cache](https://github.com/actions/cache) from 2 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2b05c91a..d4a67f8f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Cache Docker layers - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} From 20e312520f94345a6adf0f9ee7bc40d7f8f695aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 14:21:25 +0000 Subject: [PATCH 11/15] Bump actions/setup-node from 3 to 4 Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/deploy_gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_gh-pages.yml b/.github/workflows/deploy_gh-pages.yml index 5501ef584..aec8a39c8 100644 --- a/.github/workflows/deploy_gh-pages.yml +++ b/.github/workflows/deploy_gh-pages.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 18 cache: npm From d76753cca74b5f271fa247ed004f00bb52c6566a Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sun, 11 Feb 2024 11:30:21 -0300 Subject: [PATCH 12/15] makes function args not to be sorted by name --- src/backend/langflow/interface/custom/utils.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/backend/langflow/interface/custom/utils.py b/src/backend/langflow/interface/custom/utils.py index 1a8bdc91f..277752b03 100644 --- a/src/backend/langflow/interface/custom/utils.py +++ b/src/backend/langflow/interface/custom/utils.py @@ -7,8 +7,6 @@ from typing import Any, Dict, List, Optional, Union from uuid import UUID from fastapi import HTTPException -from loguru import logger - from langflow.field_typing.range_spec import RangeSpec from langflow.interface.custom.code_parser.utils import extract_inner_type from langflow.interface.custom.custom_component import CustomComponent @@ -21,6 +19,7 @@ from langflow.interface.importing.utils import eval_custom_component_code from langflow.template.field.base import TemplateField from langflow.template.frontend_node.custom_components import CustomComponentFrontendNode from langflow.utils.util import get_base_classes +from loguru import logger def add_output_types(frontend_node: CustomComponentFrontendNode, return_types: List[str]): @@ -150,9 +149,6 @@ def add_extra_fields(frontend_node, field_config, function_args): if not function_args: return - # sort function_args which is a list of dicts - function_args.sort(key=lambda x: x["name"]) - for extra_field in function_args: if "name" not in extra_field or extra_field["name"] == "self": continue From b6adb96cd92cc489b5cff6ce8412fa95c4650604 Mon Sep 17 00:00:00 2001 From: Ricardo Henriques Date: Wed, 14 Feb 2024 15:52:04 +0000 Subject: [PATCH 13/15] Add HuggingFaceInferenceAPIEmbeddingsComponent class --- .../HuggingFaceInferenceAPIEmbeddings.py | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/backend/langflow/components/embeddings/HuggingFaceInferenceAPIEmbeddings.py diff --git a/src/backend/langflow/components/embeddings/HuggingFaceInferenceAPIEmbeddings.py b/src/backend/langflow/components/embeddings/HuggingFaceInferenceAPIEmbeddings.py new file mode 100644 index 000000000..184613faf --- /dev/null +++ b/src/backend/langflow/components/embeddings/HuggingFaceInferenceAPIEmbeddings.py @@ -0,0 +1,42 @@ +from langflow import CustomComponent +from typing import Optional, Dict +from langchain_community.embeddings.huggingface import HuggingFaceInferenceAPIEmbeddings + + +class HuggingFaceInferenceAPIEmbeddingsComponent(CustomComponent): + display_name = "HuggingFaceInferenceAPIEmbeddings" + description = "HuggingFace sentence_transformers embedding models, API version." + documentation = ( + "https://github.com/huggingface/text-embeddings-inference" + ) + + def build_config(self): + return { + "api_key": {"display_name": "API Key", "password": True, "advanced": True}, + "api_url": {"display_name": "API URL", "advanced": True}, + "model_name": {"display_name": "Model Name"}, + "cache_folder": {"display_name": "Cache Folder", "advanced": True}, + "encode_kwargs": {"display_name": "Encode Kwargs", "advanced": True, "field_type": "dict"}, + "model_kwargs": {"display_name": "Model Kwargs", "field_type": "dict", "advanced": True}, + "multi_process": {"display_name": "Multi Process", "advanced": True}, + } + + def build( + self, + api_key: Optional[str] = "", + api_url: str = "http://localhost:8080", + model_name: str = "BAAI/bge-large-en-v1.5", + cache_folder: Optional[str] = None, + encode_kwargs: Optional[Dict] = {}, + model_kwargs: Optional[Dict] = {}, + multi_process: bool = False, + ) -> HuggingFaceInferenceAPIEmbeddings: + return HuggingFaceInferenceAPIEmbeddings( + api_key=api_key, + api_url=api_url, + model_name=model_name, + cache_folder=cache_folder, + encode_kwargs=encode_kwargs, + model_kwargs=model_kwargs, + multi_process=multi_process, + ) From 79e472772e4fb990cfc38689bbfd8278d5441ffc Mon Sep 17 00:00:00 2001 From: Ricardo Henriques Date: Wed, 14 Feb 2024 15:58:30 +0000 Subject: [PATCH 14/15] Update QdrantComponent build method to handle pre-existing vector-stores --- .../components/vectorstores/Qdrant.py | 73 +++++++++++++------ 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/src/backend/langflow/components/vectorstores/Qdrant.py b/src/backend/langflow/components/vectorstores/Qdrant.py index ee38406df..50b9ea365 100644 --- a/src/backend/langflow/components/vectorstores/Qdrant.py +++ b/src/backend/langflow/components/vectorstores/Qdrant.py @@ -15,7 +15,7 @@ class QdrantComponent(CustomComponent): return { "documents": {"display_name": "Documents"}, "embedding": {"display_name": "Embedding"}, - "api_key": {"display_name": "API Key", "password": True}, + "api_key": {"display_name": "API Key", "password": True, "advanced": True}, "collection_name": {"display_name": "Collection Name"}, "content_payload_key": {"display_name": "Content Payload Key", "advanced": True}, "distance_func": {"display_name": "Distance Function", "advanced": True}, @@ -36,7 +36,7 @@ class QdrantComponent(CustomComponent): def build( self, embedding: Embeddings, - documents: List[Document], + documents: Optional[Document] = None, api_key: Optional[str] = None, collection_name: Optional[str] = None, content_payload_key: str = "page_content", @@ -44,7 +44,7 @@ class QdrantComponent(CustomComponent): grpc_port: Optional[int] = 6334, host: Optional[str] = None, https: bool = False, - location: str = ":memory:", + location: Optional[str] = None, metadata_payload_key: str = "metadata", path: Optional[str] = None, port: Optional[int] = 6333, @@ -54,23 +54,50 @@ class QdrantComponent(CustomComponent): timeout: Optional[float] = None, url: Optional[str] = None, ) -> Union[VectorStore, Qdrant, BaseRetriever]: - return Qdrant.from_documents( - documents=documents, - embedding=embedding, - api_key=api_key, - collection_name=collection_name, - content_payload_key=content_payload_key, - distance_func=distance_func, - grpc_port=grpc_port, - host=host, - https=https, - location=location, - metadata_payload_key=metadata_payload_key, - path=path, - port=port, - prefer_grpc=prefer_grpc, - prefix=prefix, - search_kwargs=search_kwargs, - timeout=timeout, - url=url, - ) + if documents is None: + from qdrant_client import QdrantClient + client = QdrantClient( + location=location, + url=host, + port=port, + grpc_port=grpc_port, + https=https, + prefix=prefix, + timeout=timeout, + prefer_grpc=prefer_grpc, + metadata_payload_key=metadata_payload_key, + content_payload_key=content_payload_key, + api_key=api_key, + collection_name=collection_name, + host=host, + path=path, + ) + vs = Qdrant(client=client, + collection_name=collection_name, + embeddings=embedding, + search_kwargs=search_kwargs, + distance_func=distance_func, + ) + return vs + else: + vs = Qdrant.from_documents( + documents=documents, + embedding=embedding, + api_key=api_key, + collection_name=collection_name, + content_payload_key=content_payload_key, + distance_func=distance_func, + grpc_port=grpc_port, + host=host, + https=https, + location=location, + metadata_payload_key=metadata_payload_key, + path=path, + port=port, + prefer_grpc=prefer_grpc, + prefix=prefix, + search_kwargs=search_kwargs, + timeout=timeout, + url=url, + ) + return vs From 1bade7e718c59505cd4ec971fda77bd275a49aa4 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira Date: Thu, 15 Feb 2024 22:06:59 +0100 Subject: [PATCH 15/15] Fixed group nodes appearing at tooltip --- src/frontend/src/utils/utils.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts index 3d8c92eec..dec842669 100644 --- a/src/frontend/src/utils/utils.ts +++ b/src/frontend/src/utils/utils.ts @@ -141,12 +141,16 @@ export function groupByFamily( }))) ); }; + console.log(flow); if (flow) { + // se existir o flow for (const node of flow) { + // para cada node do flow + if (node!.data!.node!.flow) break; // não faz nada se o node for um group const nodeData = node.data; - const foundNode = checkedNodes.get(nodeData.type); + const foundNode = checkedNodes.get(nodeData.type); // verifica se o tipo do node já foi checado checkedNodes.set(nodeData.type, { hasBaseClassInTemplate: foundNode?.hasBaseClassInTemplate || @@ -155,7 +159,7 @@ export function groupByFamily( foundNode?.hasBaseClassInBaseClasses || nodeData.node!.base_classes.some((baseClass) => baseClassesSet.has(baseClass) - ), + ), //seta como anterior ou verifica se o node tem base class displayName: nodeData.node?.display_name, }); }