mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-04 20:46:45 +00:00
community[major], core[patch], langchain[patch], experimental[patch]: Create langchain-community (#14463)
Moved the following modules to new package langchain-community in a backwards compatible fashion: ``` mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community mv langchain/langchain/adapters community/langchain_community mv langchain/langchain/callbacks community/langchain_community/callbacks mv langchain/langchain/chat_loaders community/langchain_community mv langchain/langchain/chat_models community/langchain_community mv langchain/langchain/document_loaders community/langchain_community mv langchain/langchain/docstore community/langchain_community mv langchain/langchain/document_transformers community/langchain_community mv langchain/langchain/embeddings community/langchain_community mv langchain/langchain/graphs community/langchain_community mv langchain/langchain/llms community/langchain_community mv langchain/langchain/memory/chat_message_histories community/langchain_community mv langchain/langchain/retrievers community/langchain_community mv langchain/langchain/storage community/langchain_community mv langchain/langchain/tools community/langchain_community mv langchain/langchain/utilities community/langchain_community mv langchain/langchain/vectorstores community/langchain_community mv langchain/langchain/agents/agent_toolkits community/langchain_community mv langchain/langchain/cache.py community/langchain_community ``` Moved the following to core ``` mv langchain/langchain/utils/json_schema.py core/langchain_core/utils mv langchain/langchain/utils/html.py core/langchain_core/utils mv langchain/langchain/utils/strings.py core/langchain_core/utils cat langchain/langchain/utils/env.py >> core/langchain_core/utils/env.py rm langchain/langchain/utils/env.py ``` See .scripts/community_split/script_integrations.sh for all changes
This commit is contained in:
76
libs/community/langchain_community/utilities/max_compute.py
Normal file
76
libs/community/langchain_community/utilities/max_compute.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, Iterator, List, Optional
|
||||
|
||||
from langchain_core.utils import get_from_env
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from odps import ODPS
|
||||
|
||||
|
||||
class MaxComputeAPIWrapper:
|
||||
"""Interface for querying Alibaba Cloud MaxCompute tables."""
|
||||
|
||||
def __init__(self, client: ODPS):
|
||||
"""Initialize MaxCompute document loader.
|
||||
|
||||
Args:
|
||||
client: odps.ODPS MaxCompute client object.
|
||||
"""
|
||||
self.client = client
|
||||
|
||||
@classmethod
|
||||
def from_params(
|
||||
cls,
|
||||
endpoint: str,
|
||||
project: str,
|
||||
*,
|
||||
access_id: Optional[str] = None,
|
||||
secret_access_key: Optional[str] = None,
|
||||
) -> MaxComputeAPIWrapper:
|
||||
"""Convenience constructor that builds the odsp.ODPS MaxCompute client from
|
||||
given parameters.
|
||||
|
||||
Args:
|
||||
endpoint: MaxCompute endpoint.
|
||||
project: A project is a basic organizational unit of MaxCompute, which is
|
||||
similar to a database.
|
||||
access_id: MaxCompute access ID. Should be passed in directly or set as the
|
||||
environment variable `MAX_COMPUTE_ACCESS_ID`.
|
||||
secret_access_key: MaxCompute secret access key. Should be passed in
|
||||
directly or set as the environment variable
|
||||
`MAX_COMPUTE_SECRET_ACCESS_KEY`.
|
||||
"""
|
||||
try:
|
||||
from odps import ODPS
|
||||
except ImportError as ex:
|
||||
raise ImportError(
|
||||
"Could not import pyodps python package. "
|
||||
"Please install it with `pip install pyodps` or refer to "
|
||||
"https://pyodps.readthedocs.io/."
|
||||
) from ex
|
||||
access_id = access_id or get_from_env("access_id", "MAX_COMPUTE_ACCESS_ID")
|
||||
secret_access_key = secret_access_key or get_from_env(
|
||||
"secret_access_key", "MAX_COMPUTE_SECRET_ACCESS_KEY"
|
||||
)
|
||||
client = ODPS(
|
||||
access_id=access_id,
|
||||
secret_access_key=secret_access_key,
|
||||
project=project,
|
||||
endpoint=endpoint,
|
||||
)
|
||||
if not client.exist_project(project):
|
||||
raise ValueError(f'The project "{project}" does not exist.')
|
||||
|
||||
return cls(client)
|
||||
|
||||
def lazy_query(self, query: str) -> Iterator[dict]:
|
||||
# Execute SQL query.
|
||||
with self.client.execute_sql(query).open_reader() as reader:
|
||||
if reader.count == 0:
|
||||
raise ValueError("Table contains no data.")
|
||||
for record in reader:
|
||||
yield {k: v for k, v in record}
|
||||
|
||||
def query(self, query: str) -> List[dict]:
|
||||
return list(self.lazy_query(query))
|
Reference in New Issue
Block a user