mirror of
https://github.com/hwchase17/langchain
synced 2024-11-18 09:25:54 +00:00
ed58eeb9c5
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
86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
import builtins
|
|
import json
|
|
from typing import Optional, Type, Union
|
|
|
|
from langchain_core.callbacks import AsyncCallbackManagerForToolRun
|
|
from langchain_core.pydantic_v1 import BaseModel, Field
|
|
|
|
from langchain_community.tools.ainetwork.base import AINBaseTool, OperationType
|
|
|
|
|
|
class ValueSchema(BaseModel):
|
|
"""Schema for value operations."""
|
|
|
|
type: OperationType = Field(...)
|
|
path: str = Field(..., description="Blockchain reference path")
|
|
value: Optional[Union[int, str, float, dict]] = Field(
|
|
None, description="Value to be set at the path"
|
|
)
|
|
|
|
|
|
class AINValueOps(AINBaseTool):
|
|
"""Tool for value operations."""
|
|
|
|
name: str = "AINvalueOps"
|
|
description: str = """
|
|
Covers the read and write value for the AINetwork Blockchain database.
|
|
|
|
## SET
|
|
- Set a value at a given path
|
|
|
|
### Example
|
|
- type: SET
|
|
- path: /apps/langchain_test_1/object
|
|
- value: {1: 2, "34": 56}
|
|
|
|
## GET
|
|
- Retrieve a value at a given path
|
|
|
|
### Example
|
|
- type: GET
|
|
- path: /apps/langchain_test_1/DB
|
|
|
|
## Special paths
|
|
- `/accounts/<address>/balance`: Account balance
|
|
- `/accounts/<address>/nonce`: Account nonce
|
|
- `/apps`: Applications
|
|
- `/consensus`: Consensus
|
|
- `/checkin`: Check-in
|
|
- `/deposit/<service id>/<address>/<deposit id>`: Deposit
|
|
- `/deposit_accounts/<service id>/<address>/<account id>`: Deposit accounts
|
|
- `/escrow`: Escrow
|
|
- `/payments`: Payment
|
|
- `/sharding`: Sharding
|
|
- `/token/name`: Token name
|
|
- `/token/symbol`: Token symbol
|
|
- `/token/total_supply`: Token total supply
|
|
- `/transfer/<address from>/<address to>/<key>/value`: Transfer
|
|
- `/withdraw/<service id>/<address>/<withdraw id>`: Withdraw
|
|
"""
|
|
args_schema: Type[BaseModel] = ValueSchema
|
|
|
|
async def _arun(
|
|
self,
|
|
type: OperationType,
|
|
path: str,
|
|
value: Optional[Union[int, str, float, dict]] = None,
|
|
run_manager: Optional[AsyncCallbackManagerForToolRun] = None,
|
|
) -> str:
|
|
from ain.types import ValueOnlyTransactionInput
|
|
|
|
try:
|
|
if type is OperationType.SET:
|
|
if value is None:
|
|
raise ValueError("'value' is required for SET operation.")
|
|
|
|
res = await self.interface.db.ref(path).setValue(
|
|
transactionInput=ValueOnlyTransactionInput(value=value)
|
|
)
|
|
elif type is OperationType.GET:
|
|
res = await self.interface.db.ref(path).getValue()
|
|
else:
|
|
raise ValueError(f"Unsupported 'type': {type}.")
|
|
return json.dumps(res, ensure_ascii=False)
|
|
except Exception as e:
|
|
return f"{builtins.type(e).__name__}: {str(e)}"
|