1616 LongRequestOptions ,
1717 SDKDevboxListParams ,
1818 SDKObjectListParams ,
19+ SDKScorerListParams ,
1920 SDKDevboxCreateParams ,
2021 SDKObjectCreateParams ,
22+ SDKScorerCreateParams ,
2123 SDKBlueprintListParams ,
2224 SDKBlueprintCreateParams ,
2325 SDKDiskSnapshotListParams ,
2729from .._client import DEFAULT_MAX_RETRIES , AsyncRunloop
2830from ._helpers import detect_content_type
2931from .async_devbox import AsyncDevbox
32+ from .async_scorer import AsyncScorer
3033from .async_snapshot import AsyncSnapshot
3134from .async_blueprint import AsyncBlueprint
3235from .async_storage_object import AsyncStorageObject
@@ -475,6 +478,67 @@ async def upload_from_bytes(
475478 return obj
476479
477480
481+ class AsyncScorerOps :
482+ """High-level async manager for creating and managing scenario scorers.
483+
484+ Accessed via ``runloop.scorer`` from :class:`AsyncRunloopSDK`, provides
485+ coroutines to create, list, and access scorers.
486+
487+ Example:
488+ >>> runloop = AsyncRunloopSDK()
489+ >>> scorer = await runloop.scorer.create(name="my-scorer", scorer_type="llm_judge")
490+ >>> scorers = await runloop.scorer.list()
491+ """
492+
493+ def __init__ (self , client : AsyncRunloop ) -> None :
494+ """Initialize the manager.
495+
496+ :param client: Generated AsyncRunloop client to wrap
497+ :type client: AsyncRunloop
498+ """
499+ self ._client = client
500+
501+ async def create (
502+ self ,
503+ ** params : Unpack [SDKScorerCreateParams ],
504+ ) -> AsyncScorer :
505+ """Create a new scenario scorer.
506+
507+ :param params: See :typeddict:`~runloop_api_client.sdk._types.SDKScorerCreateParams` for available parameters
508+ :return: Wrapper bound to the newly created scorer
509+ :rtype: AsyncScorer
510+ """
511+ response = await self ._client .scenarios .scorers .create (
512+ ** params ,
513+ )
514+ return AsyncScorer (self ._client , response .id )
515+
516+ def from_id (self , scorer_id : str ) -> AsyncScorer :
517+ """Return a scorer wrapper for the given ID.
518+
519+ :param scorer_id: Scorer ID to wrap
520+ :type scorer_id: str
521+ :return: Wrapper for the scorer resource
522+ :rtype: AsyncScorer
523+ """
524+ return AsyncScorer (self ._client , scorer_id )
525+
526+ async def list (
527+ self ,
528+ ** params : Unpack [SDKScorerListParams ],
529+ ) -> list [AsyncScorer ]:
530+ """List all scenario scorers.
531+
532+ :param params: See :typeddict:`~runloop_api_client.sdk._types.SDKScorerListParams` for available parameters
533+ :return: List of scorer wrappers
534+ :rtype: list[AsyncScorer]
535+ """
536+ page = await self ._client .scenarios .scorers .list (
537+ ** params ,
538+ )
539+ return [AsyncScorer (self ._client , item .id ) async for item in page ]
540+
541+
478542class AsyncRunloopSDK :
479543 """High-level asynchronous entry point for the Runloop SDK.
480544
@@ -488,6 +552,8 @@ class AsyncRunloopSDK:
488552 :vartype devbox: AsyncDevboxOps
489553 :ivar blueprint: High-level async interface for blueprint management
490554 :vartype blueprint: AsyncBlueprintOps
555+ :ivar scorer: High-level async interface for scorer management
556+ :vartype scorer: AsyncScorerOps
491557 :ivar snapshot: High-level async interface for snapshot management
492558 :vartype snapshot: AsyncSnapshotOps
493559 :ivar storage_object: High-level async interface for storage object management
@@ -504,6 +570,7 @@ class AsyncRunloopSDK:
504570 api : AsyncRunloop
505571 devbox : AsyncDevboxOps
506572 blueprint : AsyncBlueprintOps
573+ scorer : AsyncScorerOps
507574 snapshot : AsyncSnapshotOps
508575 storage_object : AsyncStorageObjectOps
509576
@@ -547,6 +614,7 @@ def __init__(
547614
548615 self .devbox = AsyncDevboxOps (self .api )
549616 self .blueprint = AsyncBlueprintOps (self .api )
617+ self .scorer = AsyncScorerOps (self .api )
550618 self .snapshot = AsyncSnapshotOps (self .api )
551619 self .storage_object = AsyncStorageObjectOps (self .api )
552620
0 commit comments