@@ -27,7 +27,7 @@ To initialize the ValidMind Library, paste the code snippet with the model ident
2727import validmind as vm
2828
2929vm.init(
30- api_host = " https://api.dev.vm .validmind.ai/api/v1/tracking/tracking" ,
30+ api_host = " https://app.prod .validmind.ai/api/v1/tracking/tracking" ,
3131 api_key = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ,
3232 api_secret = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ,
3333 project = " <project-identifier>"
@@ -44,7 +44,7 @@ After you have pasted the code snippet into your development source code and exe
4444
4545::: {.signature}
4646
47- <span class =" name " >2.8.25 </span >
47+ <span class =" name " >2.9.5 </span >
4848
4949:::
5050
@@ -66,7 +66,7 @@ If the API key and secret are not provided, the client will attempt to retrieve
6666
6767** Arguments**
6868
69- - ` project (str, optional) ` : The project CUID. Alias for model. Defaults to None. \ [ DEPRECATED\ ]
69+ - ` project (str, optional) ` : The project CUID. Alias for model. Defaults to None. [ DEPRECATED]
7070- ` model (str, optional) ` : The model CUID. Defaults to None.
7171- ` api_key (str, optional) ` : The API key. Defaults to None.
7272- ` api_secret (str, optional) ` : The API secret. Defaults to None.
@@ -213,7 +213,7 @@ This function provides an interface to retrieve the TestSuite instance for the c
213213
214214::: {.signature}
215215
216- <span class="kw">def</span><span class="name">log_metric</span>(<span class="params"><span class="n">key</span><span class="p">:</span><span class="nb">str</span><span class="muted">,</span></span><span class="params"><span class="n">value</span><span class="p">:</span><span class="nb">float</span><span class="muted">,</span></span><span class="params"><span class="n">inputs</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">List</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">params</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">recorded_at</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">thresholds</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">passed</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">bool</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span></span>):
216+ <span class="kw">def</span><span class="name">log_metric</span>(<span class="params"><span class="n">key</span><span class="p">:</span><span class="nb">str</span><span class="muted">,</span></span><span class="params"><span class="n">value</span><span class="p">:</span><span class="n">Union</span><span class="p">\[</span><span class="nb">int</span><span class="p">, </span><span class="nb">float</span><span class="p">\]</span><span class="muted">,</span></span><span class="params"><span class="n">inputs</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">List</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">params</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">recorded_at</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">str</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">thresholds</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="n">Dict</span><span class="p">\[</span><span class="nb">str</span><span class="p">, </span><span class="n">Any</span><span class="p">\]</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span><span class="muted">,</span></span><span class="params"><span class="n">passed</span><span class="p">:</span><span class="n">Optional</span><span class="p">\[</span><span class="nb">bool</span><span class="p">\]</span><span class="o">=</span><span class="kc">None</span></span>):
217217
218218:::
219219
@@ -226,11 +226,12 @@ Unit metrics are key-value pairs where the key is the metric name and the value
226226** Arguments**
227227
228228- ` key (str) ` : The metric key
229- - ` value (Union[int, float]) ` : The metric value
229+ - ` value (Union[int, float]) ` : The metric value (scalar)
230230- ` inputs (List[str]) ` : List of input IDs
231231- ` params (Dict[str, Any]) ` : Parameters used to generate the metric
232232- ` recorded_at (str) ` : Timestamp when the metric was recorded
233233- ` thresholds (Dict[str, Any]) ` : Thresholds for the metric
234+ - ` passed (bool) ` : Whether the metric passed validation thresholds
234235
235236## preview_template<span class =" suffix " ></span >
236237
@@ -422,6 +423,61 @@ The function may also include a docstring. This docstring will be used and logge
422423
423424- The decorated function.
424425
426+ ## scorer_decorator<span class =" suffix " ></span >
427+
428+ <!-- signatures.jinja2 -->
429+
430+ ::: {.signature}
431+
432+ <span class =" kw " >def</span ><span class =" name " >scorer</span >(<span class =" param " ><span class =" n " >func_or_id</span ><span class =" p " >:</span ><span class =" n " >Union</span ><span class =" p " >\[ </span ><span class =" n " >Callable</span ><span class =" p " >\[ </span ><span class =" n " >...</span ><span class =" p " >, </span ><span class =" n " >Any</span ><span class =" p " >\] </span ><span class =" p " >, </span ><span class =" nb " >str</span ><span class =" p " >, </span ><span class =" n " >None</span ><span class =" p " >\] </span ><span class =" o " >=</span ><span class =" kc " >None</span ></span >)<span class =" p " > → </span ><span class =" return-annotation " ><span class =" n " >Callable</span ><span class =" p " >\[ </span ><span class =" p " >\[ </span ><a href =" /validmind/validmind/vm_models.qmd#f " >validmind.vm_models.F</a ><span class =" p " >\] </span ><span class =" p " >, </span ><a href =" /validmind/validmind/vm_models.qmd#f " >validmind.vm_models.F</a ><span class =" p " >\] </span ></span >:
433+
434+ :::
435+
436+ <!-- docstring.jinja2 -->
437+
438+ Decorator for creating and registering custom scorers
439+
440+ This decorator registers the function it wraps as a scorer function within ValidMind under the provided ID. Once decorated, the function can be run using the ` validmind.scorer.run_scorer ` function.
441+
442+ The scorer ID can be provided in three ways:
443+
444+ 1 . Explicit ID: ` @scorer("validmind.scorer.classification.BrierScore") `
445+ 1 . Auto-generated from path: ` @scorer() ` - automatically generates ID from file path
446+ 1 . Function name only: ` @scorer ` - uses function name with validmind.scorer prefix
447+
448+ The function can take two different types of arguments:
449+
450+ - Inputs: ValidMind model or dataset (or list of models/datasets). These arguments must use the following names: ` model ` , ` models ` , ` dataset ` , ` datasets ` .
451+ - Parameters: Any additional keyword arguments of any type (must have a default value) that can have any name.
452+
453+ The function should return one of the following types:
454+
455+ - Table: Either a list of dictionaries or a pandas DataFrame
456+ - Plot: Either a matplotlib figure or a plotly figure
457+ - Scalar: A single number (int or float)
458+ - Boolean: A single boolean value indicating whether the test passed or failed
459+ - List: A list of values (for row-level metrics) or a list of dictionaries with consistent keys
460+ - Any other type: The output will be stored as raw data for use by calling code
461+
462+ When returning a list of dictionaries:
463+
464+ - All dictionaries must have the same keys
465+ - The list length must match the number of rows in the dataset
466+ - Each dictionary key will become a separate column when using assign_scores
467+ - Column naming follows the pattern: {model_id}_ {metric_name}_ {dict_key}
468+
469+ Note: Scorer outputs are not logged to the backend and are intended for use by other parts of the system (e.g., assign_scores method).
470+
471+ The function may also include a docstring. This docstring will be used and logged as the scorer's description.
472+
473+ ** Arguments**
474+
475+ - ` func_or_id (Union[Callable[..., Any], str, None], optional) ` : Either the function to decorate or the scorer ID. If None or empty string, the ID is auto-generated from the file path. Defaults to None.
476+
477+ ** Returns**
478+
479+ - The decorated function.
480+
425481## log_text<span class =" suffix " ></span >
426482
427483<!-- signatures.jinja2 -->
0 commit comments