Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/api-reference/evaluations.md
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,8 @@ The `status` field is an `EvaluationStatus` enum with the following values:
| `"paused"` | Evaluation has been paused |
| `"success"` | Evaluation finished successfully |
| `"failure"` | Evaluation failed due to an error |
| `"timeout"` | Evaluation timed out |
| `"cancelled"` | Evaluation was cancelled |

## Next Steps

Expand Down
61 changes: 34 additions & 27 deletions docs/api-reference/results.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,18 +116,18 @@ async def get_all_results():
asyncio.run(get_all_results())
```

### `get(evaluation_id, page=None, page_size=None, timeout=None)`
### `get(evaluation, page=None, page_size=None, timeout=None)`

Retrieves detailed results for a specific evaluation with optional pagination support.

#### Parameters

| Parameter | Type | Required | Description |
| --------------- | -------------------------------- | -------- | -------------------------------------------------------------------------------------- |
| `evaluation_id` | `str` | Yes | The evaluation identifier to get results for |
| `page` | `int \| None` | No | Page number for pagination. If not provided, returns first page is returned by default |
| `page_size` | `int \| None` | No | Number of results per page (default: 100). Maximum allowed page_size is 500 |
| `timeout` | `float \| httpx.Timeout \| None` | No | Override request timeout |
| Parameter | Type | Required | Description |
| ------------ | -------------------------------- | -------- | ------------------------------------------------------------------------------------- |
| `evaluation` | `Evaluation` | Yes | The evaluation object to get results for |
| `page` | `int \| None` | No | Page number for pagination. If not provided, the first page is returned by default |
| `page_size` | `int \| None` | No | Number of results per page (default: 100). Maximum allowed page_size is 500 |
| `timeout` | `float \| httpx.Timeout \| None` | No | Override request timeout |

#### Returns

Expand All @@ -148,32 +148,40 @@ from layerlens import Stratix

client = Stratix()

# Get all results for a specific evaluation
results_data = client.results.get(evaluation_id="eval_12345")
# Get evaluation first
evaluation = client.evaluations.get_by_id("eval_12345")

if results_data:
print(f"Evaluation ID: {results_data.evaluation_id}")
print(f"Retrieved {len(results_data.results)} results")
print(f"Total available: {results_data.pagination.total_count}")
print(f"Page size: {results_data.pagination.page_size}")
print(f"Total pages: {results_data.pagination.total_pages}")

# Access individual results
for i, result in enumerate(results_data.results[:3]): # Show first 3
print(f"\nResult {i+1}:")
print(f" Subset: {result.subset}")
print(f" Score: {result.score}")
print(f" Duration: {result.duration}")
if evaluation:
# Get results for the evaluation
results_data = client.results.get(evaluation=evaluation)

if results_data:
print(f"Evaluation ID: {results_data.evaluation_id}")
print(f"Retrieved {len(results_data.results)} results")
print(f"Total available: {results_data.pagination.total_count}")
print(f"Page size: {results_data.pagination.page_size}")
print(f"Total pages: {results_data.pagination.total_pages}")

# Access individual results
for i, result in enumerate(results_data.results[:3]): # Show first 3
print(f"\nResult {i+1}:")
print(f" Subset: {result.subset}")
print(f" Score: {result.score}")
print(f" Duration: {result.duration}")
else:
print("No results found")
else:
print("No results found or evaluation doesn't exist")
print("Evaluation not found")
```

> **Tip:** If you only have an evaluation ID (string), use `client.results.get_by_id(evaluation_id="eval_12345")` instead.

##### Paginated Access

```python
# Get specific page with custom page size
results_data = client.results.get(
evaluation_id="eval_12345",
evaluation=evaluation,
page=2,
page_size=50
)
Expand All @@ -192,13 +200,12 @@ if results_data:

```python
# Process all results by iterating through pages
evaluation_id = "eval_12345"
page = 1
page_size = 100

while True:
results_data = client.results.get(
evaluation_id=evaluation_id,
evaluation=evaluation,
page=page,
page_size=page_size
)
Expand Down Expand Up @@ -226,7 +233,7 @@ print("Finished processing all results")
The `pagination` object in the response provides detailed pagination metadata:

```python
results_data = client.results.get(evaluation_id="eval_12345", page=1, page_size=50)
results_data = client.results.get(evaluation=evaluation, page=1, page_size=50)

if results_data:
pagination = results_data.pagination
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "layerlens"
version = "1.1.0"
version = "1.1.1"
description = "The official Python library for the LayerLens Stratix API"
license = "Apache-2.0"
authors = [{ name = "LayerLens", email = "support@layerlens.ai" }]
Expand Down
2 changes: 1 addition & 1 deletion src/layerlens/_version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "1.1.0"
__version__ = "1.1.1"
8 changes: 8 additions & 0 deletions src/layerlens/models/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,17 @@ class CustomBenchmark(Benchmark):
files: Optional[List[str]] = None
disabled: Optional[bool] = None

@property
def type(self) -> str:
return "custom"


class PublicBenchmark(Benchmark):
description: Optional[str] = Field(None, alias="full_description")
language: Optional[str] = None
prompt_count: Optional[int] = None
deprecated: Optional[bool] = None

@property
def type(self) -> str:
return "public"
1 change: 1 addition & 0 deletions src/layerlens/models/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class EvaluationStatus(str, Enum):
PAUSED = "paused"
SUCCESS = "success"
TIMEOUT = "timeout"
CANCELLED = "cancelled"


class Evaluation(BaseModel):
Expand Down
8 changes: 8 additions & 0 deletions src/layerlens/models/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ class CustomModel(Model):
api_url: Optional[str] = None
disabled: Optional[bool] = None

@property
def type(self) -> str:
return "custom"


class PublicModel(Model):
company: Optional[str] = None
Expand All @@ -29,3 +33,7 @@ class PublicModel(Model):
open_weights: Optional[bool] = None
region: Optional[str] = None
deprecated: Optional[bool] = None

@property
def type(self) -> str:
return "public"
Loading