此文档由 make doc-gen 命令从 Python 源码注释自动生成。
DataApi
AgentRun Data Client SDK / AgentRun 数据客户端 SDK
This module provides an async HTTP client for interacting with the AgentRun Data API. 此模块提供用于与 AgentRun Data API 交互的异步 HTTP 客户端。
It supports standard HTTP methods (GET, POST, PUT, PATCH, DELETE) with proper error handling, type hints, and JSON serialization.
类
ResourceType
class ResourceType(Enum)
DataAPI
class DataAPI
Async HTTP client for AgentRun Data API.
This client provides async methods for making HTTP requests to the AgentRun Data API with automatic URL construction, JSON handling, and error management.
The client automatically manages HTTP sessions - no need for manual session management or context managers in simple use cases.
方法
🔹 构造函数
def __init__(self, resource_name: str, resource_type: ResourceType, config: Optional[Config] = None, namespace: str = 'agents')
Initialize the AgentRun Data Client.
Args:
region: Aliyun region (default: "cn-hangzhou")protocol: Protocol to use (default: "https")account_id: Aliyun account IDversion: API version (default: "2025-09-10")namespace: API namespace (default: "agents")timeout: Request timeout in seconds (default: 600)headers: Default headers to include in all requestsauto_manage_session: Whether to automatically manage sessions (default: True)
Raises:
ValueError: If account_id is not provided or protocol is invalid
🔹 get_base_url
def get_base_url(self) -> str
Get the base URL for API requests.
Returns:
The base URL string
🔹 with_path
def with_path(self, path: str, query: Optional[Dict[str, Any]] = None) -> str
Construct full URL with the given path and query parameters.
Args:
path: API path (may include query string)query: Query parameters to add/merge
Returns:
Complete URL string with query parameters
Examples:
>>> client.with_path("resources")
"http://account.agentrun-data.cn-hangzhou.aliyuncs.com/2025-09-10/agents/resources"
>>> client.with_path("resources", {"limit": 10})
"http://account.agentrun-data.cn-hangzhou.aliyuncs.com/2025-09-10/agents/resources?limit=10"
>>> client.with_path("resources?page=1", {"limit": 10})
"http://account.agentrun-data.cn-hangzhou.aliyuncs.com/2025-09-10/agents/resources?page=1&limit=10"
🔹 auth
def auth(self, url: str = '', headers: Optional[Dict[str, str]] = None, query: Optional[Dict[str, Any]] = None, config: Optional[Config] = None) -> tuple[str, Dict[str, str], Optional[Dict[str, Any]]]
Authentication hook for modifying requests before sending.
This method can be overridden in subclasses to implement custom authentication logic (e.g., signing requests, adding auth tokens).
Args:
url: The request URLheaders: The request headersquery: The query parameters
Returns:
Tuple of (modified_url, modified_headers, modified_query)
Examples:
Override this method to add custom authentication:
>>> class AuthedClient(AgentRunDataClient):
... def auth(self, url, headers, query):
... # Add auth token to headers
... headers["Authorization"] = "Bearer token123"
... # Or add signature to query
... query = query or {}
... query["signature"] = self._sign_request(url)
... return url, headers, query
🔹 get_async
async def get_async(self, path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async GET request.
Args:
path: API path (may include query string)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> await client.get("resources")
>>> await client.get("resources", query={"limit": 10, "page": 1})
>>> await client.get("resources?status=active", query={"limit": 10})
🔹 get
def get(self, path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async GET request.
Args:
path: API path (may include query string)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> client.get("resources")
>>> client.get("resources", query={"limit": 10, "page": 1})
>>> client.get("resources?status=active", query={"limit": 10})
🔹 post_async
async def post_async(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async POST request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> await client.post("resources", data={"name": "test"})
>>> await client.post("resources", data={"name": "test"}, query={"async": "true"})
🔹 post
def post(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async POST request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> client.post("resources", data={"name": "test"})
>>> client.post("resources", data={"name": "test"}, query={"async": "true"})
🔹 put_async
async def put_async(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async PUT request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 put
def put(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async PUT request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 patch_async
async def patch_async(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async PATCH request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 patch
def patch(self, path: str, data: Optional[Union[Dict[str, Any], str]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async PATCH request.
Args:
path: API path (may include query string)data: Request bodyquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 delete_async
async def delete_async(self, path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async DELETE request.
Args:
path: API path (may include query string)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 delete
def delete(self, path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Make an async DELETE request.
Args:
path: API path (may include query string)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
🔹 post_file_async
async def post_file_async(self, path: str, local_file_path: str, target_file_path: str, form_data: Optional[Dict[str, Any]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Asynchronously upload a file using multipart/form-data (POST request).
Args:
path: API path (may include query string)local_file_path: Local file path to uploadtarget_file_path: Target file path on the serverform_data: Additional form data fieldsquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> await client.post_file_async("/files", local_file_path="/local/data.csv", target_file_path="/remote/data.csv")
>>> await client.post_file_async("/files", local_file_path="/local/data.csv", target_file_path="/remote/input.csv")
🔹 post_file
def post_file(self, path: str, local_file_path: str, target_file_path: str, form_data: Optional[Dict[str, Any]] = None, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Synchronously upload a file using multipart/form-data (POST request).
Args:
path: API path (may include query string)local_file_path: Local file path to uploadtarget_file_path: Target file path on the serverform_data: Additional form data fieldsquery: Query parameters to add/mergeheaders: Additional headers
Returns:
Response body as dictionary
Raises:
AgentRunClientError: If the request fails
Examples:
>>> client.post_file("/files", local_file_path="/local/data.csv", target_file_path="/remote/data.csv")
>>> client.post_file("/files", local_file_path="/local/data.csv", target_file_path="/remote/input.csv")
🔹 get_file_async
async def get_file_async(self, path: str, save_path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Asynchronously download a file and save it to local path (GET request).
Args:
path: API path (may include query string)save_path: Local file path to save the downloaded filequery: Query parameters to add/mergeheaders: Additional headers
Returns:
Dictionary with 'saved_path' and 'size' keys
Raises:
AgentRunClientError: If the request fails
Examples:
>>> await client.get_file_async("/files", save_path="/local/data.csv", query={"path": "/remote/file.csv"})
🔹 get_file
def get_file(self, path: str, save_path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Synchronously download a file and save it to local path (GET request).
Args:
path: API path (may include query string)save_path: Local file path to save the downloaded filequery: Query parameters to add/mergeheaders: Additional headers
Returns:
Dictionary with 'saved_path' and 'size' keys
Raises:
AgentRunClientError: If the request fails
Examples:
>>> client.get_file("/files", save_path="/local/data.csv", query={"path": "/remote/file.csv"})
🔹 get_video_async
async def get_video_async(self, path: str, save_path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Asynchronously download a video file and save it to local path (GET request).
Args:
path: API path (may include query string)save_path: Local file path to save the downloaded video file (.mkv)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Dictionary with 'saved_path' and 'size' keys
Raises:
AgentRunClientError: If the request fails
Examples:
>>> await client.get_video_async("/videos", save_path="/local/video.mkv", query={"path": "/remote/video.mp4"})
🔹 get_video
def get_video(self, path: str, save_path: str, query: Optional[Dict[str, Any]] = None, headers: Optional[Dict[str, str]] = None, config: Optional[Config] = None) -> Dict[str, Any]
Synchronously download a video file and save it to local path (GET request).
Args:
path: API path (may include query string)save_path: Local file path to save the downloaded video file (.mkv)query: Query parameters to add/mergeheaders: Additional headers
Returns:
Dictionary with 'saved_path' and 'size' keys
Raises:
AgentRunClientError: If the request fails
Examples:
>>> client.get_video("/videos", save_path="/local/video.mkv", query={"path": "/remote/video.mp4"})