mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-24 07:35:18 +00:00
Add precedence for input params over env variables in neo4j integration (#18581)
input parameters take precedence over env variables
This commit is contained in:
parent
c8a171a154
commit
353248838d
@ -1,6 +1,6 @@
|
|||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
from langchain_core.utils import get_from_env
|
from langchain_core.utils import get_from_dict_or_env
|
||||||
|
|
||||||
from langchain_community.graphs.graph_document import GraphDocument
|
from langchain_community.graphs.graph_document import GraphDocument
|
||||||
from langchain_community.graphs.graph_store import GraphStore
|
from langchain_community.graphs.graph_store import GraphStore
|
||||||
@ -154,7 +154,7 @@ class Neo4jGraph(GraphStore):
|
|||||||
url: Optional[str] = None,
|
url: Optional[str] = None,
|
||||||
username: Optional[str] = None,
|
username: Optional[str] = None,
|
||||||
password: Optional[str] = None,
|
password: Optional[str] = None,
|
||||||
database: str = "neo4j",
|
database: Optional[str] = None,
|
||||||
timeout: Optional[float] = None,
|
timeout: Optional[float] = None,
|
||||||
sanitize: bool = False,
|
sanitize: bool = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -167,10 +167,16 @@ class Neo4jGraph(GraphStore):
|
|||||||
"Please install it with `pip install neo4j`."
|
"Please install it with `pip install neo4j`."
|
||||||
)
|
)
|
||||||
|
|
||||||
url = get_from_env("url", "NEO4J_URI", url)
|
url = get_from_dict_or_env({"url": url}, "url", "NEO4J_URI")
|
||||||
username = get_from_env("username", "NEO4J_USERNAME", username)
|
username = get_from_dict_or_env(
|
||||||
password = get_from_env("password", "NEO4J_PASSWORD", password)
|
{"username": username}, "username", "NEO4J_USERNAME"
|
||||||
database = get_from_env("database", "NEO4J_DATABASE", database)
|
)
|
||||||
|
password = get_from_dict_or_env(
|
||||||
|
{"password": password}, "password", "NEO4J_PASSWORD"
|
||||||
|
)
|
||||||
|
database = get_from_dict_or_env(
|
||||||
|
{"database": database}, "database", "NEO4J_DATABASE", "neo4j"
|
||||||
|
)
|
||||||
|
|
||||||
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
||||||
self._database = database
|
self._database = database
|
||||||
|
@ -17,7 +17,7 @@ from typing import (
|
|||||||
|
|
||||||
from langchain_core.documents import Document
|
from langchain_core.documents import Document
|
||||||
from langchain_core.embeddings import Embeddings
|
from langchain_core.embeddings import Embeddings
|
||||||
from langchain_core.utils import get_from_env
|
from langchain_core.utils import get_from_dict_or_env
|
||||||
from langchain_core.vectorstores import VectorStore
|
from langchain_core.vectorstores import VectorStore
|
||||||
|
|
||||||
from langchain_community.vectorstores.utils import DistanceStrategy
|
from langchain_community.vectorstores.utils import DistanceStrategy
|
||||||
@ -155,7 +155,7 @@ class Neo4jVector(VectorStore):
|
|||||||
password: Optional[str] = None,
|
password: Optional[str] = None,
|
||||||
url: Optional[str] = None,
|
url: Optional[str] = None,
|
||||||
keyword_index_name: Optional[str] = "keyword",
|
keyword_index_name: Optional[str] = "keyword",
|
||||||
database: str = "neo4j",
|
database: Optional[str] = None,
|
||||||
index_name: str = "vector",
|
index_name: str = "vector",
|
||||||
node_label: str = "Chunk",
|
node_label: str = "Chunk",
|
||||||
embedding_node_property: str = "embedding",
|
embedding_node_property: str = "embedding",
|
||||||
@ -186,11 +186,19 @@ class Neo4jVector(VectorStore):
|
|||||||
# Handle if the credentials are environment variables
|
# Handle if the credentials are environment variables
|
||||||
|
|
||||||
# Support URL for backwards compatibility
|
# Support URL for backwards compatibility
|
||||||
url = os.environ.get("NEO4J_URL", url)
|
if not url:
|
||||||
url = get_from_env("url", "NEO4J_URI", url)
|
url = os.environ.get("NEO4J_URL")
|
||||||
username = get_from_env("username", "NEO4J_USERNAME", username)
|
|
||||||
password = get_from_env("password", "NEO4J_PASSWORD", password)
|
url = get_from_dict_or_env({"url": url}, "url", "NEO4J_URI")
|
||||||
database = get_from_env("database", "NEO4J_DATABASE", database)
|
username = get_from_dict_or_env(
|
||||||
|
{"username": username}, "username", "NEO4J_USERNAME"
|
||||||
|
)
|
||||||
|
password = get_from_dict_or_env(
|
||||||
|
{"password": password}, "password", "NEO4J_PASSWORD"
|
||||||
|
)
|
||||||
|
database = get_from_dict_or_env(
|
||||||
|
{"database": database}, "database", "NEO4J_DATABASE", "neo4j"
|
||||||
|
)
|
||||||
|
|
||||||
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
self._driver = neo4j.GraphDatabase.driver(url, auth=(username, password))
|
||||||
self._database = database
|
self._database = database
|
||||||
|
Loading…
Reference in New Issue
Block a user