Saltar al contenido

Guías

Elegir entre candidatos

oloproof select elige, entre varias versiones de un sistema, la mejor que cumple cada requisito, y dice aparte si de verdad supera a la siguiente. Úselo cuando tenga, por ejemplo, tres agentes, dos prompts o cuatro ajustes de recuperación, y un solo conjunto de requisitos.

Por qué no elegir los mejores números

Elegir el candidato más barato cuyos números superan los umbrales tiene dos problemas. Un 91 % medido frente a un umbral del 90 % está un punto por encima, dentro del ruido de mil casos. Y cuando mira varios candidatos, el que superó el umbral por suerte es el que elige. Por eso cada candidato debe primero establecer cada regla por sí solo, con un nivel de confianza más estricto porque se miran varios: con tres candidatos y una política al 95 %, cada uno se decide al 98.33% (1 - 0.05/3). Solo se clasifican los candidatos que pasan todas las reglas, y uno más barato nunca puede cambiar una regla de seguridad por su coste.

Declarar una selección

Escriba un archivo de selección junto a su proyecto y decídalo bajo el release.yaml del proyecto:

select:
  candidates:
    agent_a: run_01JC8Q2X7D
    agent_b: agent_b.yaml
    agent_c: agent_c.yaml
  objective:
    metric: cost_per_task
    direction: minimize

Un candidato es un id de ejecución almacenado, o un archivo de proyecto que oloproof select ejecuta primero. Una ejecución que puede reutilizar no cuesta nada nuevo. La política solo puede contener reglas de ejecución, y la parada anticipada debe estar desactivada.

oloproof select select.yaml
oloproof select select.yaml --save

--save también escribe la selección para el workbench local, en Candidates.

Leer la respuesta

Hay tres resultados:

  • Se selecciona un candidato y su ventaja sobre el segundo está establecida: la comparación pareada de ambos en el objetivo es PASS.
  • Se selecciona un candidato y su ventaja no está establecida: el segundo habría sido una elección igual de defendible con esta evidencia.
  • Ningún candidato califica: se listan las reglas de cada candidato con sus respuestas, para que vea lo que falta.

El comando sale con 0 cuando se selecciona un candidato y con 3 cuando ninguno califica.

Un ejemplo desarrollado

Tres agentes deben alcanzar una tasa de éxito de al menos el 90 % y una tasa de infracciones de como mucho el 1 %; el objetivo es el menor coste por tarea.

AgenteÉxitoInfraccionesCoste por tarea
A94%0.5%$18
B91%0.1%$12
C96%2%$30

Cada uno se decide al 98.33%. Con 1,000 casos ningún agente califica: la tasa de infracciones de A aún no se ha mostrado por debajo del 1 %, el 91 % de B está demasiado cerca del 90 % para establecerse, y C rompe el techo de infracciones. La respuesta es «ningún candidato califica», con lo que le falta a cada uno. Con 3,000 casos A establece ambas reglas y se selecciona. B es más barato, pero su éxito sigue sin establecerse, así que nunca se clasifica: elegir B por sus números publicaría un requisito que nadie ha demostrado.

Compartir una selección

oloproof select select.yaml --save guarda la selección para el workbench. oloproof push --selection ID la envía al espacio de trabajo alojado con la ejecución de cada candidato, a través de la política de egress del proyecto; ID es el nombre de la carpeta bajo .oloproof/bundles/ o el digest de la selección. Antes de guardar la selección, el espacio de trabajo la vuelve a hacer a partir de las ejecuciones que tiene, bajo la política con la que se decidieron esas ejecuciones, y la guarda solo si el resultado es el mismo: una cuyo resultado o frases se editaron, que nombra una ejecución que el proyecto no tiene, o que el motor no hace a partir de esas ejecuciones, se rechaza, y no se guarda nada. Así que decida las ejecuciones de los candidatos bajo la política de la selección antes de enviarlas. La página Candidates del proyecto la lista, y su página la muestra exactamente como el workbench local.

Un Owner o un Admin puede hacer de ella una página de evidencia desde la página de la selección: el resultado, el nivel y, para cada candidato, su nombre, el id de su ejecución y sus reglas al nivel corregido, con la etiqueta "Reported by the developer", nunca el contenido de un caso.

Siguiente