diff --git a/nbs/backends/ragas_api_client.ipynb b/nbs/backends/ragas_api_client.ipynb index 9707aca..0157579 100644 --- a/nbs/backends/ragas_api_client.ipynb +++ b/nbs/backends/ragas_api_client.ipynb @@ -37,7 +37,9 @@ "#| export\n", "import httpx\n", "import asyncio\n", + "import functools\n", "import typing as t\n", + "import inspect\n", "from pydantic import BaseModel, Field\n", "from enum import StrEnum\n", "import uuid\n", @@ -51,7 +53,7 @@ "outputs": [], "source": [ "#| export\n", - "class RagasRelay:\n", + "class RagasApiClient():\n", " \"\"\"Client for the Ragas Relay API.\"\"\"\n", "\n", " def __init__(self, base_url: str, app_token: t.Optional[str] = None):\n", @@ -133,7 +135,7 @@ "#---- Projects ----\n", "@patch\n", "async def list_projects(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " ids: t.Optional[t.List[str]] = None,\n", " limit: int = 50,\n", " offset: int = 0,\n", @@ -155,13 +157,14 @@ " return await self._list_resources(\"projects\", **params)\n", "\n", "@patch\n", - "async def get_project(self: RagasRelay, project_id: str) -> t.Dict:\n", + "async def get_project(self: RagasApiClient, project_id: str) -> t.Dict:\n", " \"\"\"Get a specific project by ID.\"\"\"\n", + " # TODO: Need get project by title\n", " return await self._get_resource(f\"projects/{project_id}\")\n", "\n", "@patch\n", "async def create_project(\n", - " self: RagasRelay, title: str, description: t.Optional[str] = None\n", + " self: RagasApiClient, title: str, description: t.Optional[str] = None\n", ") -> t.Dict:\n", " \"\"\"Create a new project.\"\"\"\n", " data = {\"title\": title}\n", @@ -171,7 +174,7 @@ "\n", "@patch\n", "async def update_project(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " title: t.Optional[str] = None,\n", " description: t.Optional[str] = None,\n", @@ -185,7 +188,7 @@ " return await self._update_resource(f\"projects/{project_id}\", data)\n", "\n", "@patch\n", - "async def delete_project(self: RagasRelay, project_id: str) -> None:\n", + "async def delete_project(self: RagasApiClient, project_id: str) -> None:\n", " \"\"\"Delete a project.\"\"\"\n", " await self._delete_resource(f\"projects/{project_id}\")\n" ] @@ -206,7 +209,7 @@ ], "source": [ "# Initialize client with your authentication token\n", - "client = RagasRelay(base_url=RAGAS_API_ENDPOINT, app_token=RAGAS_APP_TOKEN)\n", + "client = RagasApiClient(base_url=RAGAS_API_ENDPOINT, app_token=RAGAS_APP_TOKEN)\n", "\n", "# List projects\n", "try:\n", @@ -233,11 +236,11 @@ { "data": { "text/plain": [ - "{'id': '59cf2483-d2c7-4306-af87-bfac2813f27b',\n", + "{'id': '26b0e577-8ff8-4014-bc7a-cfc410df3488',\n", " 'title': 'test project',\n", " 'description': 'test description',\n", - " 'created_at': '2025-04-09T05:57:57.991728+00:00',\n", - " 'updated_at': '2025-04-09T05:57:57.991728+00:00'}" + " 'created_at': '2025-04-10T00:12:34.606398+00:00',\n", + " 'updated_at': '2025-04-10T00:12:34.606398+00:00'}" ] }, "execution_count": null, @@ -257,7 +260,42 @@ { "data": { "text/plain": [ - "{'items': [{'id': '59cf2483-d2c7-4306-af87-bfac2813f27b',\n", + "{'items': [{'id': '26b0e577-8ff8-4014-bc7a-cfc410df3488',\n", + " 'title': 'test project',\n", + " 'description': 'test description',\n", + " 'created_at': '2025-04-10T00:12:34.606398+00:00',\n", + " 'updated_at': '2025-04-10T00:12:34.606398+00:00'},\n", + " {'id': '18df1385-8ff6-4c3f-bd8d-a4fcbfba5f57',\n", + " 'title': 'My Project',\n", + " 'description': None,\n", + " 'created_at': '2025-04-09T23:49:26.491293+00:00',\n", + " 'updated_at': '2025-04-09T23:49:26.491293+00:00'},\n", + " {'id': '940f2c5a-4c28-4dde-9643-97daede5408e',\n", + " 'title': 'My Project',\n", + " 'description': None,\n", + " 'created_at': '2025-04-09T23:24:34.922817+00:00',\n", + " 'updated_at': '2025-04-09T23:24:34.922817+00:00'},\n", + " {'id': '5f892600-e620-448c-a699-aa5971abefdc',\n", + " 'title': 'test project',\n", + " 'description': 'test description',\n", + " 'created_at': '2025-04-09T23:00:39.272415+00:00',\n", + " 'updated_at': '2025-04-09T23:00:39.272415+00:00'},\n", + " {'id': 'd428d6fc-0348-4208-8187-6fa70ae8115e',\n", + " 'title': 'My Project',\n", + " 'description': None,\n", + " 'created_at': '2025-04-09T22:49:59.790937+00:00',\n", + " 'updated_at': '2025-04-09T22:49:59.790937+00:00'},\n", + " {'id': 'a00d417a-f1dc-4373-ad0e-a3bfff5c3c55',\n", + " 'title': 'test project',\n", + " 'description': 'test description',\n", + " 'created_at': '2025-04-09T18:32:42.772189+00:00',\n", + " 'updated_at': '2025-04-09T18:32:42.772189+00:00'},\n", + " {'id': '3b8396ab-592e-4898-bac3-845fe2d5fbd0',\n", + " 'title': 'test project',\n", + " 'description': 'test description',\n", + " 'created_at': '2025-04-09T18:31:36.496048+00:00',\n", + " 'updated_at': '2025-04-09T18:31:36.496048+00:00'},\n", + " {'id': '59cf2483-d2c7-4306-af87-bfac2813f27b',\n", " 'title': 'test project',\n", " 'description': 'test description',\n", " 'created_at': '2025-04-09T05:57:57.991728+00:00',\n", @@ -284,7 +322,7 @@ " 'updated_at': '2025-03-30T02:33:38.751793+00:00'}],\n", " 'pagination': {'offset': 0,\n", " 'limit': 50,\n", - " 'total': 5,\n", + " 'total': 12,\n", " 'order_by': 'created_at',\n", " 'sort_dir': 'desc'}}" ] @@ -326,7 +364,7 @@ "#---- Datasets ----\n", "@patch\n", "async def list_datasets(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " limit: int = 50,\n", " offset: int = 0,\n", @@ -342,13 +380,13 @@ " return await self._list_resources(f\"projects/{project_id}/datasets\", **params)\n", "\n", "@patch\n", - "async def get_dataset(self: RagasRelay, project_id: str, dataset_id: str) -> t.Dict:\n", + "async def get_dataset(self: RagasApiClient, project_id: str, dataset_id: str) -> t.Dict:\n", " \"\"\"Get a specific dataset.\"\"\"\n", " return await self._get_resource(f\"projects/{project_id}/datasets/{dataset_id}\")\n", "\n", "@patch\n", "async def create_dataset(\n", - " self: RagasRelay, project_id: str, name: str, description: t.Optional[str] = None\n", + " self: RagasApiClient, project_id: str, name: str, description: t.Optional[str] = None\n", ") -> t.Dict:\n", " \"\"\"Create a new dataset in a project.\"\"\"\n", " data = {\"name\": name}\n", @@ -358,7 +396,7 @@ "\n", "@patch\n", "async def update_dataset(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " dataset_id: str,\n", " name: t.Optional[str] = None,\n", @@ -373,7 +411,7 @@ " return await self._update_resource(f\"projects/{project_id}/datasets/{dataset_id}\", data)\n", "\n", "@patch\n", - "async def delete_dataset(self: RagasRelay, project_id: str, dataset_id: str) -> None:\n", + "async def delete_dataset(self: RagasApiClient, project_id: str, dataset_id: str) -> None:\n", " \"\"\"Delete a dataset.\"\"\"\n", " await self._delete_resource(f\"projects/{project_id}/datasets/{dataset_id}\")" ] @@ -386,7 +424,7 @@ { "data": { "text/plain": [ - "('59cf2483-d2c7-4306-af87-bfac2813f27b',\n", + "('26b0e577-8ff8-4014-bc7a-cfc410df3488',\n", " 'e1b3f1e4-d344-48f4-a178-84e7e32e6ab6')" ] }, @@ -410,7 +448,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "New dataset created: {'id': '656e632c-6f0b-4046-929e-05b98fb14eaa', 'name': 'New Dataset', 'description': 'This is a new dataset', 'updated_at': '2025-04-09T05:59:04.352084+00:00', 'created_at': '2025-04-09T05:59:04.352084+00:00', 'version_counter': 0, 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}\n" + "New dataset created: {'id': 'e75f6ee2-2b36-4599-8e21-8da7f4006aa2', 'name': 'New Dataset', 'description': 'This is a new dataset', 'updated_at': '2025-04-10T00:12:36.940908+00:00', 'created_at': '2025-04-10T00:12:36.940908+00:00', 'version_counter': 0, 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}\n" ] } ], @@ -450,7 +488,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Updated dataset: {'id': '656e632c-6f0b-4046-929e-05b98fb14eaa', 'name': 'Updated Dataset', 'description': 'This is an updated dataset', 'created_at': '2025-04-09T05:59:04.352084+00:00', 'updated_at': '2025-04-09T05:59:10.388986+00:00', 'version_counter': 0, 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}\n" + "Updated dataset: {'id': 'e75f6ee2-2b36-4599-8e21-8da7f4006aa2', 'name': 'Updated Dataset', 'description': 'This is an updated dataset', 'created_at': '2025-04-10T00:12:36.940908+00:00', 'updated_at': '2025-04-10T00:12:38.564782+00:00', 'version_counter': 0, 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}\n" ] } ], @@ -500,7 +538,7 @@ "#---- Experiments ----\n", "@patch\n", "async def list_experiments(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " limit: int = 50,\n", " offset: int = 0,\n", @@ -516,13 +554,13 @@ " return await self._list_resources(f\"projects/{project_id}/experiments\", **params)\n", "\n", "@patch\n", - "async def get_experiment(self: RagasRelay, project_id: str, experiment_id: str) -> t.Dict:\n", + "async def get_experiment(self: RagasApiClient, project_id: str, experiment_id: str) -> t.Dict:\n", " \"\"\"Get a specific experiment.\"\"\"\n", " return await self._get_resource(f\"projects/{project_id}/experiments/{experiment_id}\")\n", "\n", "@patch\n", "async def create_experiment(\n", - " self: RagasRelay, project_id: str, name: str, description: t.Optional[str] = None\n", + " self: RagasApiClient, project_id: str, name: str, description: t.Optional[str] = None\n", ") -> t.Dict:\n", " \"\"\"Create a new experiment in a project.\"\"\"\n", " data = {\"name\": name}\n", @@ -532,7 +570,7 @@ "\n", "@patch\n", "async def update_experiment(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " experiment_id: str,\n", " name: t.Optional[str] = None,\n", @@ -547,7 +585,7 @@ " return await self._update_resource(f\"projects/{project_id}/experiments/{experiment_id}\", data)\n", "\n", "@patch\n", - "async def delete_experiment(self: RagasRelay, project_id: str, experiment_id: str) -> None:\n", + "async def delete_experiment(self: RagasApiClient, project_id: str, experiment_id: str) -> None:\n", " \"\"\"Delete an experiment.\"\"\"\n", " await self._delete_resource(f\"projects/{project_id}/experiments/{experiment_id}\")\n" ] @@ -561,10 +599,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "New experiment created: {'id': '783c34ec-9d92-4bf9-9a45-d64746e58ba9', 'name': 'New Experiment', 'description': 'This is a new experiment', 'updated_at': '2025-04-09T06:00:01.80579+00:00', 'created_at': '2025-04-09T06:00:01.80579+00:00', 'version_counter': 0, 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}\n", + "New experiment created: {'id': 'b575c5d1-6934-45c0-b67a-fc9a4d7bdba3', 'name': 'New Experiment', 'description': 'This is a new experiment', 'updated_at': '2025-04-10T00:12:39.955229+00:00', 'created_at': '2025-04-10T00:12:39.955229+00:00', 'version_counter': 0, 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}\n", "Found 2 experiments\n", - "Experiment: {'id': '783c34ec-9d92-4bf9-9a45-d64746e58ba9', 'name': 'New Experiment', 'description': 'This is a new experiment', 'created_at': '2025-04-09T06:00:01.80579+00:00', 'updated_at': '2025-04-09T06:00:01.80579+00:00', 'version_counter': 0, 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}\n", - "Updated experiment: {'id': '783c34ec-9d92-4bf9-9a45-d64746e58ba9', 'name': 'Updated Experiment', 'description': 'This is an updated experiment', 'created_at': '2025-04-09T06:00:01.80579+00:00', 'updated_at': '2025-04-09T06:00:04.394175+00:00', 'version_counter': 0, 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}\n", + "Experiment: {'id': 'b575c5d1-6934-45c0-b67a-fc9a4d7bdba3', 'name': 'New Experiment', 'description': 'This is a new experiment', 'created_at': '2025-04-10T00:12:39.955229+00:00', 'updated_at': '2025-04-10T00:12:39.955229+00:00', 'version_counter': 0, 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}\n", + "Updated experiment: {'id': 'b575c5d1-6934-45c0-b67a-fc9a4d7bdba3', 'name': 'Updated Experiment', 'description': 'This is an updated experiment', 'created_at': '2025-04-10T00:12:39.955229+00:00', 'updated_at': '2025-04-10T00:12:41.676216+00:00', 'version_counter': 0, 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}\n", "Experiment deleted\n" ] } @@ -609,10 +647,16 @@ " 'description': 'This is a new experiment',\n", " 'created_at': '2025-03-30T06:31:31.689269+00:00',\n", " 'updated_at': '2025-03-30T06:31:31.689269+00:00',\n", + " 'project_id': 'e1b3f1e4-d344-48f4-a178-84e7e32e6ab6'},\n", + " {'id': '7c695b58-7fc3-464c-a18b-a96e35f9684d',\n", + " 'name': 'New Experiment',\n", + " 'description': 'This is a new experiment',\n", + " 'created_at': '2025-04-09T17:03:44.340782+00:00',\n", + " 'updated_at': '2025-04-09T17:03:44.340782+00:00',\n", " 'project_id': 'e1b3f1e4-d344-48f4-a178-84e7e32e6ab6'}],\n", " 'pagination': {'offset': 0,\n", " 'limit': 50,\n", - " 'total': 1,\n", + " 'total': 2,\n", " 'order_by': 'created_at',\n", " 'sort_dir': 'asc'}}" ] @@ -679,7 +723,7 @@ "#---- Dataset Columns ----\n", "@patch\n", "async def list_dataset_columns(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " dataset_id: str,\n", " limit: int = 50,\n", @@ -699,7 +743,7 @@ "\n", "@patch\n", "async def get_dataset_column(\n", - " self: RagasRelay, project_id: str, dataset_id: str, column_id: str\n", + " self: RagasApiClient, project_id: str, dataset_id: str, column_id: str\n", ") -> t.Dict:\n", " \"\"\"Get a specific column in a dataset.\"\"\"\n", " return await self._get_resource(\n", @@ -708,7 +752,7 @@ "\n", "@patch\n", "async def create_dataset_column(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " dataset_id: str,\n", " id: str,\n", @@ -729,7 +773,7 @@ "\n", "@patch\n", "async def update_dataset_column(\n", - " self: RagasRelay, project_id: str, dataset_id: str, column_id: str, **column_data\n", + " self: RagasApiClient, project_id: str, dataset_id: str, column_id: str, **column_data\n", ") -> t.Dict:\n", " \"\"\"Update an existing column in a dataset.\"\"\"\n", " return await self._update_resource(\n", @@ -739,7 +783,7 @@ "\n", "@patch\n", "async def delete_dataset_column(\n", - " self: RagasRelay, project_id: str, dataset_id: str, column_id: str\n", + " self: RagasApiClient, project_id: str, dataset_id: str, column_id: str\n", ") -> None:\n", " \"\"\"Delete a column from a dataset.\"\"\"\n", " await self._delete_resource(\n", @@ -755,13 +799,13 @@ { "data": { "text/plain": [ - "{'id': '9f0f1ac6-beb6-4bda-95d4-9d2a7dc4b837',\n", + "{'id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4',\n", " 'name': 'New Dataset for testing columns',\n", " 'description': 'This is a new dataset for testing columns',\n", - " 'updated_at': '2025-04-09T06:01:40.671173+00:00',\n", - " 'created_at': '2025-04-09T06:01:40.671173+00:00',\n", + " 'updated_at': '2025-04-10T00:12:43.359691+00:00',\n", + " 'created_at': '2025-04-10T00:12:43.359691+00:00',\n", " 'version_counter': 0,\n", - " 'project_id': '59cf2483-d2c7-4306-af87-bfac2813f27b'}" + " 'project_id': '26b0e577-8ff8-4014-bc7a-cfc410df3488'}" ] }, "execution_count": null, @@ -788,15 +832,15 @@ "text/plain": [ "{'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'settings': {'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'max_length': 255,\n", " 'is_required': True},\n", - " 'created_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'updated_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'datatable_id': '9f0f1ac6-beb6-4bda-95d4-9d2a7dc4b837'}" + " 'created_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'updated_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'datatable_id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4'}" ] }, "execution_count": null, @@ -830,15 +874,15 @@ "text/plain": [ "{'items': [{'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'settings': {'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'max_length': 255,\n", " 'is_required': True},\n", - " 'created_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'updated_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'datatable_id': '9f0f1ac6-beb6-4bda-95d4-9d2a7dc4b837'}],\n", + " 'created_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'updated_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'datatable_id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4'}],\n", " 'pagination': {'offset': 0,\n", " 'limit': 50,\n", " 'total': 1,\n", @@ -865,15 +909,15 @@ "text/plain": [ "{'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'settings': {'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'max_length': 255,\n", " 'is_required': True},\n", - " 'created_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'updated_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'datatable_id': '9f0f1ac6-beb6-4bda-95d4-9d2a7dc4b837'}" + " 'created_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'updated_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'datatable_id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4'}" ] }, "execution_count": null, @@ -901,12 +945,12 @@ " 'type': 'number',\n", " 'settings': {'id': 'new_column_3',\n", " 'name': 'New Column 3',\n", - " 'type': 'longText',\n", + " 'type': 'text',\n", " 'max_length': 255,\n", " 'is_required': True},\n", - " 'created_at': '2025-04-09T06:01:41.978634+00:00',\n", - " 'updated_at': '2025-04-09T06:01:46.946099+00:00',\n", - " 'datatable_id': '9f0f1ac6-beb6-4bda-95d4-9d2a7dc4b837'}" + " 'created_at': '2025-04-10T02:22:07.300895+00:00',\n", + " 'updated_at': '2025-04-10T02:22:11.116882+00:00',\n", + " 'datatable_id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4'}" ] }, "execution_count": null, @@ -948,10 +992,11 @@ "metadata": {}, "outputs": [], "source": [ + "#| export\n", "#---- Dataset Rows ----\n", "@patch\n", "async def list_dataset_rows(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " dataset_id: str,\n", " limit: int = 50,\n", @@ -971,7 +1016,7 @@ "\n", "@patch\n", "async def get_dataset_row(\n", - " self: RagasRelay, project_id: str, dataset_id: str, row_id: str\n", + " self: RagasApiClient, project_id: str, dataset_id: str, row_id: str\n", ") -> t.Dict:\n", " \"\"\"Get a specific row in a dataset.\"\"\"\n", " return await self._get_resource(\n", @@ -980,7 +1025,7 @@ "\n", "@patch\n", "async def create_dataset_row(\n", - " self: RagasRelay, project_id: str, dataset_id: str, id: str, data: t.Dict\n", + " self: RagasApiClient, project_id: str, dataset_id: str, id: str, data: t.Dict\n", ") -> t.Dict:\n", " \"\"\"Create a new row in a dataset.\"\"\"\n", " row_data = {\"id\": id, \"data\": data}\n", @@ -990,7 +1035,7 @@ "\n", "@patch\n", "async def update_dataset_row(\n", - " self: RagasRelay, project_id: str, dataset_id: str, row_id: str, data: t.Dict\n", + " self: RagasApiClient, project_id: str, dataset_id: str, row_id: str, data: t.Dict\n", ") -> t.Dict:\n", " \"\"\"Update an existing row in a dataset.\"\"\"\n", " row_data = {\"data\": data}\n", @@ -1001,7 +1046,7 @@ "\n", "@patch\n", "async def delete_dataset_row(\n", - " self: RagasRelay, project_id: str, dataset_id: str, row_id: str\n", + " self: RagasApiClient, project_id: str, dataset_id: str, row_id: str\n", ") -> None:\n", " \"\"\"Delete a row from a dataset.\"\"\"\n", " await self._delete_resource(\n", @@ -1009,95 +1054,6 @@ " )\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "ename": "Exception", - "evalue": "API Error (500): Failed to create row", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mException\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[36]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m client.create_dataset_row(\n\u001b[32m 2\u001b[39m projects[\u001b[33m\"\u001b[39m\u001b[33mitems\u001b[39m\u001b[33m\"\u001b[39m][\u001b[32m0\u001b[39m][\u001b[33m\"\u001b[39m\u001b[33mid\u001b[39m\u001b[33m\"\u001b[39m],\n\u001b[32m 3\u001b[39m datasets[\u001b[33m\"\u001b[39m\u001b[33mid\u001b[39m\u001b[33m\"\u001b[39m],\n\u001b[32m 4\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m1\u001b[39m\u001b[33m\"\u001b[39m,\n\u001b[32m 5\u001b[39m {\u001b[33m\"\u001b[39m\u001b[33mname\u001b[39m\u001b[33m\"\u001b[39m: \u001b[33m\"\u001b[39m\u001b[33mNew Row 1\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mage\u001b[39m\u001b[33m\"\u001b[39m: \u001b[32m30\u001b[39m},\n\u001b[32m 6\u001b[39m )\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[35]\u001b[39m\u001b[32m, line 37\u001b[39m, in \u001b[36mcreate_dataset_row\u001b[39m\u001b[34m(self, project_id, dataset_id, id, data)\u001b[39m\n\u001b[32m 35\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"Create a new row in a dataset.\"\"\"\u001b[39;00m\n\u001b[32m 36\u001b[39m row_data = {\u001b[33m\"\u001b[39m\u001b[33mid\u001b[39m\u001b[33m\"\u001b[39m: \u001b[38;5;28mid\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mdata\u001b[39m\u001b[33m\"\u001b[39m: data}\n\u001b[32m---> \u001b[39m\u001b[32m37\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m._create_resource(\n\u001b[32m 38\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mprojects/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mproject_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/datasets/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdataset_id\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m/rows\u001b[39m\u001b[33m\"\u001b[39m, row_data\n\u001b[32m 39\u001b[39m )\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[5]\u001b[39m\u001b[32m, line 55\u001b[39m, in \u001b[36mRagasRelay._create_resource\u001b[39m\u001b[34m(self, path, data)\u001b[39m\n\u001b[32m 53\u001b[39m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_create_resource\u001b[39m(\u001b[38;5;28mself\u001b[39m, path, data):\n\u001b[32m 54\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Generic resource creation.\"\"\"\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m55\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m._request(\u001b[33m\"\u001b[39m\u001b[33mPOST\u001b[39m\u001b[33m\"\u001b[39m, path, json_data=data)\n", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[5]\u001b[39m\u001b[32m, line 48\u001b[39m, in \u001b[36mRagasRelay._request\u001b[39m\u001b[34m(self, method, endpoint, params, json_data)\u001b[39m\n\u001b[32m 46\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m response.status_code >= \u001b[32m400\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m data.get(\u001b[33m\"\u001b[39m\u001b[33mstatus\u001b[39m\u001b[33m\"\u001b[39m) == \u001b[33m\"\u001b[39m\u001b[33merror\u001b[39m\u001b[33m\"\u001b[39m:\n\u001b[32m 47\u001b[39m error_msg = data.get(\u001b[33m\"\u001b[39m\u001b[33mmessage\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mUnknown error\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m48\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mAPI Error (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse.status_code\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m): \u001b[39m\u001b[38;5;132;01m{\u001b[39;00merror_msg\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 50\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m data.get(\u001b[33m\"\u001b[39m\u001b[33mdata\u001b[39m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mException\u001b[39m: API Error (500): Failed to create row" - ] - } - ], - "source": [ - "await client.create_dataset_row(\n", - " projects[\"items\"][0][\"id\"],\n", - " datasets[\"id\"],\n", - " \"1\",\n", - " {\"name\": \"New Row 1\", \"age\": 30},\n", - ")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'items': [],\n", - " 'pagination': {'offset': 0,\n", - " 'limit': 50,\n", - " 'total': 0,\n", - " 'order_by': 'created_at',\n", - " 'sort_dir': 'asc'}}" - ] - }, - "execution_count": null, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "await client.list_dataset_rows(projects[\"items\"][0][\"id\"], datasets[\"id\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#| export\n", - "import uuid\n", - "import string" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#| export\n", - "def create_nano_id(size=12):\n", - " # Define characters to use (alphanumeric)\n", - " alphabet = string.ascii_letters + string.digits\n", - " \n", - " # Generate UUID and convert to int\n", - " uuid_int = uuid.uuid4().int\n", - " \n", - " # Convert to base62\n", - " result = \"\"\n", - " while uuid_int:\n", - " uuid_int, remainder = divmod(uuid_int, len(alphabet))\n", - " result = alphabet[remainder] + result\n", - " \n", - " # Pad if necessary and return desired length\n", - " return result[:size]\n" - ] - }, { "cell_type": "code", "execution_count": null, @@ -1106,7 +1062,11 @@ { "data": { "text/plain": [ - "'eAscOAbBMSv2'" + "{'id': 'new_row_1',\n", + " 'data': {'id': 'new_row_1', 'new_column_1': 'value', 'new_column_2': 'value'},\n", + " 'created_at': '2025-04-10T02:22:34.470887+00:00',\n", + " 'updated_at': '2025-04-10T02:22:34.470887+00:00',\n", + " 'datatable_id': 'ebc3dd3e-f88b-4f8b-8c72-6cfcae0a0cd4'}" ] }, "execution_count": null, @@ -1115,9 +1075,12 @@ } ], "source": [ - "# Usage\n", - "nano_id = create_nano_id() # e.g., \"8dK9cNw3mP5x\"\n", - "nano_id" + "await client.create_dataset_row(\n", + " project_id=projects[\"items\"][0][\"id\"],\n", + " dataset_id=datasets[\"id\"],\n", + " id=\"new_row_1\",\n", + " data={\"new_column_1\": \"value\", \"new_column_2\": \"value\"},\n", + ")\n" ] }, { @@ -1136,7 +1099,7 @@ { "data": { "text/plain": [ - "'https://dev.app.ragas.io/dashboard/projects/e1b3f1e4-d344-48f4-a178-84e7e32e6ab6/datasets/cc239f73-6546-4d5c-84e1-8c2ed8072edc'" + "'https://dev.app.ragas.io/dashboard/projects/e1b3f1e4-d344-48f4-a178-84e7e32e6ab6/datasets/dbccf6aa-b923-47ed-8e97-bd46f2f2cee8'" ] }, "execution_count": null, @@ -1354,6 +1317,63 @@ "\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#| export\n", + "import uuid\n", + "import string" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#| export\n", + "def create_nano_id(size=12):\n", + " # Define characters to use (alphanumeric)\n", + " alphabet = string.ascii_letters + string.digits\n", + " \n", + " # Generate UUID and convert to int\n", + " uuid_int = uuid.uuid4().int\n", + " \n", + " # Convert to base62\n", + " result = \"\"\n", + " while uuid_int:\n", + " uuid_int, remainder = divmod(uuid_int, len(alphabet))\n", + " result = alphabet[remainder] + result\n", + " \n", + " # Pad if necessary and return desired length\n", + " return result[:size]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Anvz5k9geU7T'" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Usage\n", + "nano_id = create_nano_id() # e.g., \"8dK9cNw3mP5x\"\n", + "nano_id" + ] + }, { "cell_type": "code", "execution_count": null, @@ -1394,7 +1414,7 @@ "#---- Resource With Data Helper Methods ----\n", "@patch\n", "async def _create_with_data(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " resource_type: str,\n", " project_id: str,\n", " name: str, \n", @@ -1489,7 +1509,7 @@ "\n", "@patch\n", "async def create_dataset_with_data(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " name: str,\n", " description: str,\n", @@ -1633,7 +1653,7 @@ "#---- Experiment Columns ----\n", "@patch\n", "async def list_experiment_columns(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " experiment_id: str,\n", " limit: int = 50,\n", @@ -1653,7 +1673,7 @@ "\n", "@patch\n", "async def get_experiment_column(\n", - " self: RagasRelay, project_id: str, experiment_id: str, column_id: str\n", + " self: RagasApiClient, project_id: str, experiment_id: str, column_id: str\n", ") -> t.Dict:\n", " \"\"\"Get a specific column in an experiment.\"\"\"\n", " return await self._get_resource(\n", @@ -1662,7 +1682,7 @@ "\n", "@patch\n", "async def create_experiment_column(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " experiment_id: str,\n", " id: str,\n", @@ -1683,7 +1703,7 @@ "\n", "@patch\n", "async def update_experiment_column(\n", - " self: RagasRelay, project_id: str, experiment_id: str, column_id: str, **column_data\n", + " self: RagasApiClient, project_id: str, experiment_id: str, column_id: str, **column_data\n", ") -> t.Dict:\n", " \"\"\"Update an existing column in an experiment.\"\"\"\n", " return await self._update_resource(\n", @@ -1693,7 +1713,7 @@ "\n", "@patch\n", "async def delete_experiment_column(\n", - " self: RagasRelay, project_id: str, experiment_id: str, column_id: str\n", + " self: RagasApiClient, project_id: str, experiment_id: str, column_id: str\n", ") -> None:\n", " \"\"\"Delete a column from an experiment.\"\"\"\n", " await self._delete_resource(\n", @@ -1703,7 +1723,7 @@ "#---- Experiment Rows ----\n", "@patch\n", "async def list_experiment_rows(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " experiment_id: str,\n", " limit: int = 50,\n", @@ -1723,7 +1743,7 @@ "\n", "@patch\n", "async def get_experiment_row(\n", - " self: RagasRelay, project_id: str, experiment_id: str, row_id: str\n", + " self: RagasApiClient, project_id: str, experiment_id: str, row_id: str\n", ") -> t.Dict:\n", " \"\"\"Get a specific row in an experiment.\"\"\"\n", " return await self._get_resource(\n", @@ -1732,7 +1752,7 @@ "\n", "@patch\n", "async def create_experiment_row(\n", - " self: RagasRelay, project_id: str, experiment_id: str, id: str, data: t.Dict\n", + " self: RagasApiClient, project_id: str, experiment_id: str, id: str, data: t.Dict\n", ") -> t.Dict:\n", " \"\"\"Create a new row in an experiment.\"\"\"\n", " row_data = {\"id\": id, \"data\": data}\n", @@ -1742,7 +1762,7 @@ "\n", "@patch\n", "async def update_experiment_row(\n", - " self: RagasRelay, project_id: str, experiment_id: str, row_id: str, data: t.Dict\n", + " self: RagasApiClient, project_id: str, experiment_id: str, row_id: str, data: t.Dict\n", ") -> t.Dict:\n", " \"\"\"Update an existing row in an experiment.\"\"\"\n", " row_data = {\"data\": data}\n", @@ -1753,7 +1773,7 @@ "\n", "@patch\n", "async def delete_experiment_row(\n", - " self: RagasRelay, project_id: str, experiment_id: str, row_id: str\n", + " self: RagasApiClient, project_id: str, experiment_id: str, row_id: str\n", ") -> None:\n", " \"\"\"Delete a row from an experiment.\"\"\"\n", " await self._delete_resource(\n", @@ -1818,7 +1838,7 @@ "#| export\n", "@patch\n", "async def create_experiment_with_data(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " project_id: str,\n", " name: str,\n", " description: str,\n", @@ -1857,7 +1877,7 @@ "#---- Utility Methods ----\n", "@patch\n", "def create_column(\n", - " self: RagasRelay, \n", + " self: RagasApiClient, \n", " name: str, \n", " type: str, \n", " settings: t.Optional[t.Dict] = None, \n", @@ -1888,7 +1908,7 @@ " \n", "@patch\n", "def create_row(\n", - " self: RagasRelay, \n", + " self: RagasApiClient, \n", " data: t.Dict[str, t.Any], \n", " column_map: t.Dict[str, str],\n", " id: t.Optional[str] = None\n", @@ -1918,7 +1938,7 @@ " return Row(**params)\n", " \n", "@patch\n", - "def create_column_map(self: RagasRelay, columns: t.List[Column]) -> t.Dict[str, str]:\n", + "def create_column_map(self: RagasApiClient, columns: t.List[Column]) -> t.Dict[str, str]:\n", " \"\"\"Create a mapping of column names to IDs.\n", " \n", " Args:\n", @@ -1931,7 +1951,7 @@ " \n", "@patch\n", "async def convert_raw_data(\n", - " self: RagasRelay,\n", + " self: RagasApiClient,\n", " column_defs: t.List[t.Dict],\n", " row_data: t.List[t.Dict]\n", ") -> t.Tuple[t.List[Column], t.List[Row]]:\n", diff --git a/ragas_annotator/_modidx.py b/ragas_annotator/_modidx.py index 266a13f..5a177ff 100644 --- a/ragas_annotator/_modidx.py +++ b/ragas_annotator/_modidx.py @@ -101,96 +101,106 @@ 'ragas_annotator/backends/ragas_api_client.py'), 'ragas_annotator.backends.ragas_api_client.ColumnType': ( 'backends/ragas_api_client.html#columntype', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay': ( 'backends/ragas_api_client.html#ragasrelay', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.__init__': ( 'backends/ragas_api_client.html#ragasrelay.__init__', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._create_resource': ( 'backends/ragas_api_client.html#ragasrelay._create_resource', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._create_with_data': ( 'backends/ragas_api_client.html#ragasrelay._create_with_data', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._delete_resource': ( 'backends/ragas_api_client.html#ragasrelay._delete_resource', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._get_resource': ( 'backends/ragas_api_client.html#ragasrelay._get_resource', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._list_resources': ( 'backends/ragas_api_client.html#ragasrelay._list_resources', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._request': ( 'backends/ragas_api_client.html#ragasrelay._request', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay._update_resource': ( 'backends/ragas_api_client.html#ragasrelay._update_resource', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.convert_raw_data': ( 'backends/ragas_api_client.html#ragasrelay.convert_raw_data', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_column': ( 'backends/ragas_api_client.html#ragasrelay.create_column', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_column_map': ( 'backends/ragas_api_client.html#ragasrelay.create_column_map', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_dataset': ( 'backends/ragas_api_client.html#ragasrelay.create_dataset', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_dataset_column': ( 'backends/ragas_api_client.html#ragasrelay.create_dataset_column', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient': ( 'backends/ragas_api_client.html#ragasapiclient', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.__init__': ( 'backends/ragas_api_client.html#ragasapiclient.__init__', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._create_resource': ( 'backends/ragas_api_client.html#ragasapiclient._create_resource', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._create_with_data': ( 'backends/ragas_api_client.html#ragasapiclient._create_with_data', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_dataset_with_data': ( 'backends/ragas_api_client.html#ragasrelay.create_dataset_with_data', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_experiment': ( 'backends/ragas_api_client.html#ragasrelay.create_experiment', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._delete_resource': ( 'backends/ragas_api_client.html#ragasapiclient._delete_resource', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._get_resource': ( 'backends/ragas_api_client.html#ragasapiclient._get_resource', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_experiment_column': ( 'backends/ragas_api_client.html#ragasrelay.create_experiment_column', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_experiment_row': ( 'backends/ragas_api_client.html#ragasrelay.create_experiment_row', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_experiment_with_data': ( 'backends/ragas_api_client.html#ragasrelay.create_experiment_with_data', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_project': ( 'backends/ragas_api_client.html#ragasrelay.create_project', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.create_row': ( 'backends/ragas_api_client.html#ragasrelay.create_row', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_dataset': ( 'backends/ragas_api_client.html#ragasrelay.delete_dataset', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_dataset_column': ( 'backends/ragas_api_client.html#ragasrelay.delete_dataset_column', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_experiment': ( 'backends/ragas_api_client.html#ragasrelay.delete_experiment', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._list_resources': ( 'backends/ragas_api_client.html#ragasapiclient._list_resources', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._request': ( 'backends/ragas_api_client.html#ragasapiclient._request', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient._update_resource': ( 'backends/ragas_api_client.html#ragasapiclient._update_resource', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.convert_raw_data': ( 'backends/ragas_api_client.html#ragasapiclient.convert_raw_data', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_column': ( 'backends/ragas_api_client.html#ragasapiclient.create_column', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_experiment_column': ( 'backends/ragas_api_client.html#ragasrelay.delete_experiment_column', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_experiment_row': ( 'backends/ragas_api_client.html#ragasrelay.delete_experiment_row', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_column_map': ( 'backends/ragas_api_client.html#ragasapiclient.create_column_map', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.delete_project': ( 'backends/ragas_api_client.html#ragasrelay.delete_project', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_dataset': ( 'backends/ragas_api_client.html#ragasrelay.get_dataset', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_dataset_column': ( 'backends/ragas_api_client.html#ragasrelay.get_dataset_column', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_dataset': ( 'backends/ragas_api_client.html#ragasapiclient.create_dataset', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_experiment': ( 'backends/ragas_api_client.html#ragasrelay.get_experiment', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_experiment_column': ( 'backends/ragas_api_client.html#ragasrelay.get_experiment_column', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_dataset_column': ( 'backends/ragas_api_client.html#ragasapiclient.create_dataset_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_dataset_row': ( 'backends/ragas_api_client.html#ragasapiclient.create_dataset_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_dataset_with_data': ( 'backends/ragas_api_client.html#ragasapiclient.create_dataset_with_data', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_experiment': ( 'backends/ragas_api_client.html#ragasapiclient.create_experiment', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_experiment_row': ( 'backends/ragas_api_client.html#ragasrelay.get_experiment_row', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_experiment_column': ( 'backends/ragas_api_client.html#ragasapiclient.create_experiment_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_experiment_row': ( 'backends/ragas_api_client.html#ragasapiclient.create_experiment_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_experiment_with_data': ( 'backends/ragas_api_client.html#ragasapiclient.create_experiment_with_data', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_project': ( 'backends/ragas_api_client.html#ragasapiclient.create_project', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.get_project': ( 'backends/ragas_api_client.html#ragasrelay.get_project', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_dataset_columns': ( 'backends/ragas_api_client.html#ragasrelay.list_dataset_columns', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_datasets': ( 'backends/ragas_api_client.html#ragasrelay.list_datasets', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_experiment_columns': ( 'backends/ragas_api_client.html#ragasrelay.list_experiment_columns', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_experiment_rows': ( 'backends/ragas_api_client.html#ragasrelay.list_experiment_rows', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_experiments': ( 'backends/ragas_api_client.html#ragasrelay.list_experiments', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.list_projects': ( 'backends/ragas_api_client.html#ragasrelay.list_projects', - 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_dataset': ( 'backends/ragas_api_client.html#ragasrelay.update_dataset', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.create_row': ( 'backends/ragas_api_client.html#ragasapiclient.create_row', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_dataset_column': ( 'backends/ragas_api_client.html#ragasrelay.update_dataset_column', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_dataset': ( 'backends/ragas_api_client.html#ragasapiclient.delete_dataset', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_dataset_column': ( 'backends/ragas_api_client.html#ragasapiclient.delete_dataset_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_dataset_row': ( 'backends/ragas_api_client.html#ragasapiclient.delete_dataset_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_experiment': ( 'backends/ragas_api_client.html#ragasapiclient.delete_experiment', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_experiment': ( 'backends/ragas_api_client.html#ragasrelay.update_experiment', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_experiment_column': ( 'backends/ragas_api_client.html#ragasapiclient.delete_experiment_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_experiment_row': ( 'backends/ragas_api_client.html#ragasapiclient.delete_experiment_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.delete_project': ( 'backends/ragas_api_client.html#ragasapiclient.delete_project', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_dataset': ( 'backends/ragas_api_client.html#ragasapiclient.get_dataset', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_dataset_column': ( 'backends/ragas_api_client.html#ragasapiclient.get_dataset_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_dataset_row': ( 'backends/ragas_api_client.html#ragasapiclient.get_dataset_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_experiment': ( 'backends/ragas_api_client.html#ragasapiclient.get_experiment', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_experiment_column': ( 'backends/ragas_api_client.html#ragasapiclient.get_experiment_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_experiment_row': ( 'backends/ragas_api_client.html#ragasapiclient.get_experiment_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.get_project': ( 'backends/ragas_api_client.html#ragasapiclient.get_project', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_dataset_columns': ( 'backends/ragas_api_client.html#ragasapiclient.list_dataset_columns', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_dataset_rows': ( 'backends/ragas_api_client.html#ragasapiclient.list_dataset_rows', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_datasets': ( 'backends/ragas_api_client.html#ragasapiclient.list_datasets', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_experiment_column': ( 'backends/ragas_api_client.html#ragasrelay.update_experiment_column', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_experiment_columns': ( 'backends/ragas_api_client.html#ragasapiclient.list_experiment_columns', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_experiment_rows': ( 'backends/ragas_api_client.html#ragasapiclient.list_experiment_rows', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_experiment_row': ( 'backends/ragas_api_client.html#ragasrelay.update_experiment_row', + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_experiments': ( 'backends/ragas_api_client.html#ragasapiclient.list_experiments', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.list_projects': ( 'backends/ragas_api_client.html#ragasapiclient.list_projects', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_dataset': ( 'backends/ragas_api_client.html#ragasapiclient.update_dataset', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_dataset_column': ( 'backends/ragas_api_client.html#ragasapiclient.update_dataset_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_dataset_row': ( 'backends/ragas_api_client.html#ragasapiclient.update_dataset_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_experiment': ( 'backends/ragas_api_client.html#ragasapiclient.update_experiment', 'ragas_annotator/backends/ragas_api_client.py'), - 'ragas_annotator.backends.ragas_api_client.RagasRelay.update_project': ( 'backends/ragas_api_client.html#ragasrelay.update_project', - 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_experiment_column': ( 'backends/ragas_api_client.html#ragasapiclient.update_experiment_column', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_experiment_row': ( 'backends/ragas_api_client.html#ragasapiclient.update_experiment_row', + 'ragas_annotator/backends/ragas_api_client.py'), + 'ragas_annotator.backends.ragas_api_client.RagasApiClient.update_project': ( 'backends/ragas_api_client.html#ragasapiclient.update_project', + 'ragas_annotator/backends/ragas_api_client.py'), 'ragas_annotator.backends.ragas_api_client.Row': ( 'backends/ragas_api_client.html#row', 'ragas_annotator/backends/ragas_api_client.py'), 'ragas_annotator.backends.ragas_api_client.RowCell': ( 'backends/ragas_api_client.html#rowcell', diff --git a/ragas_annotator/backends/ragas_api_client.py b/ragas_annotator/backends/ragas_api_client.py index 54c6760..fea0081 100644 --- a/ragas_annotator/backends/ragas_api_client.py +++ b/ragas_annotator/backends/ragas_api_client.py @@ -3,19 +3,21 @@ # AUTOGENERATED! DO NOT EDIT! File to edit: ../../nbs/backends/ragas_api_client.ipynb. # %% auto 0 -__all__ = ['DEFAULT_SETTINGS', 'RagasRelay', 'ColumnType', 'create_nano_id', 'Column', 'RowCell', 'Row'] +__all__ = ['DEFAULT_SETTINGS', 'RagasApiClient', 'ColumnType', 'create_nano_id', 'Column', 'RowCell', 'Row'] # %% ../../nbs/backends/ragas_api_client.ipynb 3 import httpx import asyncio +import functools import typing as t +import inspect from pydantic import BaseModel, Field from enum import StrEnum import uuid from fastcore.utils import patch # %% ../../nbs/backends/ragas_api_client.ipynb 4 -class RagasRelay: +class RagasApiClient(): """Client for the Ragas Relay API.""" def __init__(self, base_url: str, app_token: t.Optional[str] = None): @@ -90,7 +92,7 @@ async def _delete_resource(self, path): #---- Projects ---- @patch async def list_projects( - self: RagasRelay, + self: RagasApiClient, ids: t.Optional[t.List[str]] = None, limit: int = 50, offset: int = 0, @@ -112,13 +114,14 @@ async def list_projects( return await self._list_resources("projects", **params) @patch -async def get_project(self: RagasRelay, project_id: str) -> t.Dict: +async def get_project(self: RagasApiClient, project_id: str) -> t.Dict: """Get a specific project by ID.""" + # TODO: Need get project by title return await self._get_resource(f"projects/{project_id}") @patch async def create_project( - self: RagasRelay, title: str, description: t.Optional[str] = None + self: RagasApiClient, title: str, description: t.Optional[str] = None ) -> t.Dict: """Create a new project.""" data = {"title": title} @@ -128,7 +131,7 @@ async def create_project( @patch async def update_project( - self: RagasRelay, + self: RagasApiClient, project_id: str, title: t.Optional[str] = None, description: t.Optional[str] = None, @@ -142,7 +145,7 @@ async def update_project( return await self._update_resource(f"projects/{project_id}", data) @patch -async def delete_project(self: RagasRelay, project_id: str) -> None: +async def delete_project(self: RagasApiClient, project_id: str) -> None: """Delete a project.""" await self._delete_resource(f"projects/{project_id}") @@ -151,7 +154,7 @@ async def delete_project(self: RagasRelay, project_id: str) -> None: #---- Datasets ---- @patch async def list_datasets( - self: RagasRelay, + self: RagasApiClient, project_id: str, limit: int = 50, offset: int = 0, @@ -167,13 +170,13 @@ async def list_datasets( return await self._list_resources(f"projects/{project_id}/datasets", **params) @patch -async def get_dataset(self: RagasRelay, project_id: str, dataset_id: str) -> t.Dict: +async def get_dataset(self: RagasApiClient, project_id: str, dataset_id: str) -> t.Dict: """Get a specific dataset.""" return await self._get_resource(f"projects/{project_id}/datasets/{dataset_id}") @patch async def create_dataset( - self: RagasRelay, project_id: str, name: str, description: t.Optional[str] = None + self: RagasApiClient, project_id: str, name: str, description: t.Optional[str] = None ) -> t.Dict: """Create a new dataset in a project.""" data = {"name": name} @@ -183,7 +186,7 @@ async def create_dataset( @patch async def update_dataset( - self: RagasRelay, + self: RagasApiClient, project_id: str, dataset_id: str, name: t.Optional[str] = None, @@ -198,7 +201,7 @@ async def update_dataset( return await self._update_resource(f"projects/{project_id}/datasets/{dataset_id}", data) @patch -async def delete_dataset(self: RagasRelay, project_id: str, dataset_id: str) -> None: +async def delete_dataset(self: RagasApiClient, project_id: str, dataset_id: str) -> None: """Delete a dataset.""" await self._delete_resource(f"projects/{project_id}/datasets/{dataset_id}") @@ -206,7 +209,7 @@ async def delete_dataset(self: RagasRelay, project_id: str, dataset_id: str) -> #---- Experiments ---- @patch async def list_experiments( - self: RagasRelay, + self: RagasApiClient, project_id: str, limit: int = 50, offset: int = 0, @@ -222,13 +225,13 @@ async def list_experiments( return await self._list_resources(f"projects/{project_id}/experiments", **params) @patch -async def get_experiment(self: RagasRelay, project_id: str, experiment_id: str) -> t.Dict: +async def get_experiment(self: RagasApiClient, project_id: str, experiment_id: str) -> t.Dict: """Get a specific experiment.""" return await self._get_resource(f"projects/{project_id}/experiments/{experiment_id}") @patch async def create_experiment( - self: RagasRelay, project_id: str, name: str, description: t.Optional[str] = None + self: RagasApiClient, project_id: str, name: str, description: t.Optional[str] = None ) -> t.Dict: """Create a new experiment in a project.""" data = {"name": name} @@ -238,7 +241,7 @@ async def create_experiment( @patch async def update_experiment( - self: RagasRelay, + self: RagasApiClient, project_id: str, experiment_id: str, name: t.Optional[str] = None, @@ -253,7 +256,7 @@ async def update_experiment( return await self._update_resource(f"projects/{project_id}/experiments/{experiment_id}", data) @patch -async def delete_experiment(self: RagasRelay, project_id: str, experiment_id: str) -> None: +async def delete_experiment(self: RagasApiClient, project_id: str, experiment_id: str) -> None: """Delete an experiment.""" await self._delete_resource(f"projects/{project_id}/experiments/{experiment_id}") @@ -273,7 +276,7 @@ class ColumnType(StrEnum): #---- Dataset Columns ---- @patch async def list_dataset_columns( - self: RagasRelay, + self: RagasApiClient, project_id: str, dataset_id: str, limit: int = 50, @@ -293,7 +296,7 @@ async def list_dataset_columns( @patch async def get_dataset_column( - self: RagasRelay, project_id: str, dataset_id: str, column_id: str + self: RagasApiClient, project_id: str, dataset_id: str, column_id: str ) -> t.Dict: """Get a specific column in a dataset.""" return await self._get_resource( @@ -302,7 +305,7 @@ async def get_dataset_column( @patch async def create_dataset_column( - self: RagasRelay, + self: RagasApiClient, project_id: str, dataset_id: str, id: str, @@ -323,7 +326,7 @@ async def create_dataset_column( @patch async def update_dataset_column( - self: RagasRelay, project_id: str, dataset_id: str, column_id: str, **column_data + self: RagasApiClient, project_id: str, dataset_id: str, column_id: str, **column_data ) -> t.Dict: """Update an existing column in a dataset.""" return await self._update_resource( @@ -333,18 +336,80 @@ async def update_dataset_column( @patch async def delete_dataset_column( - self: RagasRelay, project_id: str, dataset_id: str, column_id: str + self: RagasApiClient, project_id: str, dataset_id: str, column_id: str ) -> None: """Delete a column from a dataset.""" await self._delete_resource( f"projects/{project_id}/datasets/{dataset_id}/columns/{column_id}" ) -# %% ../../nbs/backends/ragas_api_client.ipynb 36 +# %% ../../nbs/backends/ragas_api_client.ipynb 33 +#---- Dataset Rows ---- +@patch +async def list_dataset_rows( + self: RagasApiClient, + project_id: str, + dataset_id: str, + limit: int = 50, + offset: int = 0, + order_by: t.Optional[str] = None, + sort_dir: t.Optional[str] = None, +) -> t.Dict: + """List rows in a dataset.""" + params = {"limit": limit, "offset": offset} + if order_by: + params["order_by"] = order_by + if sort_dir: + params["sort_dir"] = sort_dir + return await self._list_resources( + f"projects/{project_id}/datasets/{dataset_id}/rows", **params + ) + +@patch +async def get_dataset_row( + self: RagasApiClient, project_id: str, dataset_id: str, row_id: str +) -> t.Dict: + """Get a specific row in a dataset.""" + return await self._get_resource( + f"projects/{project_id}/datasets/{dataset_id}/rows/{row_id}" + ) + +@patch +async def create_dataset_row( + self: RagasApiClient, project_id: str, dataset_id: str, id: str, data: t.Dict +) -> t.Dict: + """Create a new row in a dataset.""" + row_data = {"id": id, "data": data} + return await self._create_resource( + f"projects/{project_id}/datasets/{dataset_id}/rows", row_data + ) + +@patch +async def update_dataset_row( + self: RagasApiClient, project_id: str, dataset_id: str, row_id: str, data: t.Dict +) -> t.Dict: + """Update an existing row in a dataset.""" + row_data = {"data": data} + return await self._update_resource( + f"projects/{project_id}/datasets/{dataset_id}/rows/{row_id}", + row_data, + ) + +@patch +async def delete_dataset_row( + self: RagasApiClient, project_id: str, dataset_id: str, row_id: str +) -> None: + """Delete a row from a dataset.""" + await self._delete_resource( + f"projects/{project_id}/datasets/{dataset_id}/rows/{row_id}" + ) + + +# %% ../../nbs/backends/ragas_api_client.ipynb 45 import uuid import string -# %% ../../nbs/backends/ragas_api_client.ipynb 37 +# %% ../../nbs/backends/ragas_api_client.ipynb 46 def create_nano_id(size=12): # Define characters to use (alphanumeric) alphabet = string.ascii_letters + string.digits @@ -361,8 +426,7 @@ def create_nano_id(size=12): # Pad if necessary and return desired length return result[:size] - -# %% ../../nbs/backends/ragas_api_client.ipynb 49 +# %% ../../nbs/backends/ragas_api_client.ipynb 48 # Default settings for columns DEFAULT_SETTINGS = { "is_required": False, @@ -385,11 +449,11 @@ class Row(BaseModel): id: str = Field(default_factory=create_nano_id) data: t.List[RowCell] = Field(...) -# %% ../../nbs/backends/ragas_api_client.ipynb 50 +# %% ../../nbs/backends/ragas_api_client.ipynb 49 #---- Resource With Data Helper Methods ---- @patch async def _create_with_data( - self: RagasRelay, + self: RagasApiClient, resource_type: str, project_id: str, name: str, @@ -484,7 +548,7 @@ async def _create_with_data( @patch async def create_dataset_with_data( - self: RagasRelay, + self: RagasApiClient, project_id: str, name: str, description: str, @@ -512,11 +576,11 @@ async def create_dataset_with_data( "dataset", project_id, name, description, columns, rows, batch_size ) -# %% ../../nbs/backends/ragas_api_client.ipynb 56 +# %% ../../nbs/backends/ragas_api_client.ipynb 55 #---- Experiment Columns ---- @patch async def list_experiment_columns( - self: RagasRelay, + self: RagasApiClient, project_id: str, experiment_id: str, limit: int = 50, @@ -536,7 +600,7 @@ async def list_experiment_columns( @patch async def get_experiment_column( - self: RagasRelay, project_id: str, experiment_id: str, column_id: str + self: RagasApiClient, project_id: str, experiment_id: str, column_id: str ) -> t.Dict: """Get a specific column in an experiment.""" return await self._get_resource( @@ -545,7 +609,7 @@ async def get_experiment_column( @patch async def create_experiment_column( - self: RagasRelay, + self: RagasApiClient, project_id: str, experiment_id: str, id: str, @@ -566,7 +630,7 @@ async def create_experiment_column( @patch async def update_experiment_column( - self: RagasRelay, project_id: str, experiment_id: str, column_id: str, **column_data + self: RagasApiClient, project_id: str, experiment_id: str, column_id: str, **column_data ) -> t.Dict: """Update an existing column in an experiment.""" return await self._update_resource( @@ -576,7 +640,7 @@ async def update_experiment_column( @patch async def delete_experiment_column( - self: RagasRelay, project_id: str, experiment_id: str, column_id: str + self: RagasApiClient, project_id: str, experiment_id: str, column_id: str ) -> None: """Delete a column from an experiment.""" await self._delete_resource( @@ -586,7 +650,7 @@ async def delete_experiment_column( #---- Experiment Rows ---- @patch async def list_experiment_rows( - self: RagasRelay, + self: RagasApiClient, project_id: str, experiment_id: str, limit: int = 50, @@ -606,7 +670,7 @@ async def list_experiment_rows( @patch async def get_experiment_row( - self: RagasRelay, project_id: str, experiment_id: str, row_id: str + self: RagasApiClient, project_id: str, experiment_id: str, row_id: str ) -> t.Dict: """Get a specific row in an experiment.""" return await self._get_resource( @@ -615,7 +679,7 @@ async def get_experiment_row( @patch async def create_experiment_row( - self: RagasRelay, project_id: str, experiment_id: str, id: str, data: t.Dict + self: RagasApiClient, project_id: str, experiment_id: str, id: str, data: t.Dict ) -> t.Dict: """Create a new row in an experiment.""" row_data = {"id": id, "data": data} @@ -625,7 +689,7 @@ async def create_experiment_row( @patch async def update_experiment_row( - self: RagasRelay, project_id: str, experiment_id: str, row_id: str, data: t.Dict + self: RagasApiClient, project_id: str, experiment_id: str, row_id: str, data: t.Dict ) -> t.Dict: """Update an existing row in an experiment.""" row_data = {"data": data} @@ -636,17 +700,17 @@ async def update_experiment_row( @patch async def delete_experiment_row( - self: RagasRelay, project_id: str, experiment_id: str, row_id: str + self: RagasApiClient, project_id: str, experiment_id: str, row_id: str ) -> None: """Delete a row from an experiment.""" await self._delete_resource( f"projects/{project_id}/experiments/{experiment_id}/rows/{row_id}" ) -# %% ../../nbs/backends/ragas_api_client.ipynb 59 +# %% ../../nbs/backends/ragas_api_client.ipynb 58 @patch async def create_experiment_with_data( - self: RagasRelay, + self: RagasApiClient, project_id: str, name: str, description: str, @@ -674,11 +738,11 @@ async def create_experiment_with_data( "experiment", project_id, name, description, columns, rows, batch_size ) -# %% ../../nbs/backends/ragas_api_client.ipynb 60 +# %% ../../nbs/backends/ragas_api_client.ipynb 59 #---- Utility Methods ---- @patch def create_column( - self: RagasRelay, + self: RagasApiClient, name: str, type: str, settings: t.Optional[t.Dict] = None, @@ -709,7 +773,7 @@ def create_column( @patch def create_row( - self: RagasRelay, + self: RagasApiClient, data: t.Dict[str, t.Any], column_map: t.Dict[str, str], id: t.Optional[str] = None @@ -739,7 +803,7 @@ def create_row( return Row(**params) @patch -def create_column_map(self: RagasRelay, columns: t.List[Column]) -> t.Dict[str, str]: +def create_column_map(self: RagasApiClient, columns: t.List[Column]) -> t.Dict[str, str]: """Create a mapping of column names to IDs. Args: @@ -752,7 +816,7 @@ def create_column_map(self: RagasRelay, columns: t.List[Column]) -> t.Dict[str, @patch async def convert_raw_data( - self: RagasRelay, + self: RagasApiClient, column_defs: t.List[t.Dict], row_data: t.List[t.Dict] ) -> t.Tuple[t.List[Column], t.List[Row]]: