Agentes y ejecuciones
Guarde, pruebe, inicie, siga, apruebe y detenga ejecuciones de agentes desde Python.
Un es un conjunto guardado de pasos que trabaja con sus datos, según un horario o cuando algo ocurre. Cada agente pertenece a un . ¿Es nuevo en agentes? Empiece por Crear un agente.
Antes de empezar
- Tiene el ID del proyecto donde vive el agente, y puede editar ese proyecto.
- Poner un agente en vivo requiere un Propietario o Administrador del , porque un agente en vivo gasta .
- Todos los ejemplos suponen
nexus = Nexus.connect().
Encuentre agentes
for agent in nexus.agents.list(project_id):
print(agent)
for agent in nexus.agents.list_all(): # every project you can open
print(agent)Guarde y pruebe un borrador
Un agente es un archivo agents/<name>.yaml con su código Python en agents/<name>/, dentro del código de su proyecto. save() guarda ambos desde una carpeta local como borrador:
from pathlib import Path
from klarety import KlaretyError, Nexus
PROJECT = "your-project-id"
with Nexus.connect() as nexus:
try:
version_id = nexus.agents.save(PROJECT, "daily-summary", root=Path("."))
run_id = nexus.agents.start(PROJECT, "daily-summary", draft=True, inputs={"days": 1})
except KlaretyError as failed:
raise SystemExit(f"Could not test the agent: {failed}")
print("Draft", version_id, "running as", run_id)nexus.agents.check(project_id, text) revisa el texto YAML sin guardarlo. Un borrador nunca se ejecuta solo; start(..., draft=True) lo ejecuta una vez.
Póngalo en vivo
nexus.agents.ask_to_publish(PROJECT, "daily-summary", version_id)Una persona decide en la app. Un Propietario o Administrador puede publicar directamente con nexus.agents.publish(PROJECT, "daily-summary", version_id); cualquier otra persona es rechazada. unpublish() lo saca de línea, y publish() con un version_id anterior trae de vuelta esa versión. nexus.agents.version(project_id, version_id) muestra una versión guardada.
Inicie una ejecución y sígala
Cada informa su estado y sus pasos:
import time
from klarety import Nexus
PROJECT = "your-project-id"
with Nexus.connect() as nexus:
run_id = nexus.agents.start(PROJECT, "daily-summary")
run = nexus.agents.run(PROJECT, run_id)
while run["state"] == "running":
time.sleep(10)
run = nexus.agents.run(PROJECT, run_id)
print(run["state"], run["reason"], run["credits"], "credits")
for step in run["steps"]:
print(step["id"], step["state"], step["reason"])Una ejecución termina como done, failed, declined o stopped. Cada paso tiene su propio estado: waiting, running, asking, done, failed, declined, stopped o skipped, entre otros.
Responda un paso de aprobación
Un paso en estado asking espera a que una persona diga que sí:
for step in run["steps"]:
if step["state"] == "asking":
nexus.agents.answer(PROJECT, run_id, step["id"], yes=True)yes=True continúa la ejecución. yes=False la detiene en ese paso.
Lea lo que produjo una ejecución
result = nexus.agents.result(PROJECT, run_id)
print(result["value"]) # up to 1 MiB
print(result["files"]) # files the run left
names = nexus.agents.outputs(PROJECT, run_id, step_id)
data = nexus.agents.output(PROJECT, run_id, step_id, names[0]) # bytes
print(nexus.agents.log(PROJECT, run_id, step_id))Para un paso que se ejecuta una vez por elemento, pase item= a outputs(), output() y log() para leer un elemento.
Liste ejecuciones, detenga y vuelva a ejecutar
for one in nexus.agents.runs(PROJECT, agent="daily-summary"): # newest first, page by page
print(one["run_id"], one["state"])
nexus.agents.stop(PROJECT, run_id)
new_run = nexus.agents.rerun(PROJECT, run_id, from_step="summarise")
print(nexus.agents.stats(PROJECT, days=7)) # runs per day: count, outcomes, costrerun() inicia una ejecución nueva desde un paso, reutilizando lo que produjeron los anteriores. Para paginar desde otro proceso, use runs_page() y pase su next como after.
Elimine un agente
nexus.agents.delete(PROJECT, "daily-summary")El agente se pausa y sale de la lista. Sus ejecuciones quedan registradas.
Qué puede salir mal
| Excepción | Causa | Qué hacer |
|---|---|---|
KlaretyError: agents/<name>.yaml does not exist | save() no encontró el archivo bajo root. | Ejecute desde la carpeta del proyecto o pase root=. |
RefusedError | No puede editar el proyecto, o no es administrador e intentó publish(). | Use ask_to_publish(), o pida acceso. |
NotFoundError | No existe ese proyecto, agente o ejecución. | Revise los IDs. |
InsufficientCreditsError | El espacio de trabajo no puede pagar la ejecución. | Agregue créditos. |
Próximos pasos
- Probar, poner en vivo y pausar para los mismos pasos en la app.
- CLI para los comandos
klarety agent. - Trabajos y trabajos por lotes para trabajo en segundo plano sin un agente.