Spaces:
Runtime error
Runtime error
| """Interface with the LangChain Hub.""" | |
| from __future__ import annotations | |
| from typing import TYPE_CHECKING, Any, Optional | |
| from langchain_core.load.dump import dumps | |
| from langchain_core.load.load import loads | |
| if TYPE_CHECKING: | |
| from langchainhub import Client | |
| def _get_client(api_url: Optional[str] = None, api_key: Optional[str] = None) -> Client: | |
| try: | |
| from langchainhub import Client | |
| except ImportError as e: | |
| raise ImportError( | |
| "Could not import langchainhub, please install with `pip install " | |
| "langchainhub`." | |
| ) from e | |
| # Client logic will also attempt to load URL/key from environment variables | |
| return Client(api_url, api_key=api_key) | |
| def push( | |
| repo_full_name: str, | |
| object: Any, | |
| *, | |
| api_url: Optional[str] = None, | |
| api_key: Optional[str] = None, | |
| parent_commit_hash: Optional[str] = "latest", | |
| new_repo_is_public: bool = True, | |
| new_repo_description: str = "", | |
| ) -> str: | |
| """ | |
| Pushes an object to the hub and returns the URL it can be viewed at in a browser. | |
| :param repo_full_name: The full name of the repo to push to in the format of | |
| `owner/repo`. | |
| :param object: The LangChain to serialize and push to the hub. | |
| :param api_url: The URL of the LangChain Hub API. Defaults to the hosted API service | |
| if you have an api key set, or a localhost instance if not. | |
| :param api_key: The API key to use to authenticate with the LangChain Hub API. | |
| :param parent_commit_hash: The commit hash of the parent commit to push to. Defaults | |
| to the latest commit automatically. | |
| :param new_repo_is_public: Whether the repo should be public. Defaults to | |
| True (Public by default). | |
| :param new_repo_description: The description of the repo. Defaults to an empty | |
| string. | |
| """ | |
| client = _get_client(api_url=api_url, api_key=api_key) | |
| manifest_json = dumps(object) | |
| message = client.push( | |
| repo_full_name, | |
| manifest_json, | |
| parent_commit_hash=parent_commit_hash, | |
| new_repo_is_public=new_repo_is_public, | |
| new_repo_description=new_repo_description, | |
| ) | |
| return message | |
| def pull( | |
| owner_repo_commit: str, | |
| *, | |
| api_url: Optional[str] = None, | |
| api_key: Optional[str] = None, | |
| ) -> Any: | |
| """ | |
| Pulls an object from the hub and returns it as a LangChain object. | |
| :param owner_repo_commit: The full name of the repo to pull from in the format of | |
| `owner/repo:commit_hash`. | |
| :param api_url: The URL of the LangChain Hub API. Defaults to the hosted API service | |
| if you have an api key set, or a localhost instance if not. | |
| :param api_key: The API key to use to authenticate with the LangChain Hub API. | |
| """ | |
| client = _get_client(api_url=api_url, api_key=api_key) | |
| resp: str = client.pull(owner_repo_commit) | |
| return loads(resp) | |