Skip to content

Instantly share code, notes, and snippets.

@VJlaxmi
Created January 17, 2026 16:24
Show Gist options
  • Select an option

  • Save VJlaxmi/1e1efc4af0a999512ef75a5cd469e871 to your computer and use it in GitHub Desktop.

Select an option

Save VJlaxmi/1e1efc4af0a999512ef75a5cd469e871 to your computer and use it in GitHub Desktop.
from agentlightning import Algorithm, LightningStore, Dataset 
from agentlightning.types import Rollout, Span, ResourcesUpdate 
 
class MyCustomAlgorithm(Algorithm): 
 """Custom algorithm that learns from agent traces.""" 
 
 async def fit( 
 self, 
 train_dataset: Dataset, 
 val_dataset: Dataset, 
 store: LightningStore 
 ) -> None: 
 # 1. Enqueue initial rollouts 
 for task in train_dataset: 
 await store.enqueue_rollout( 
 input=task, 
 resource_keys=["main_llm", "main_prompt"] 
 ) 
 
 # 2. Wait for rollouts to complete 
 rollout_ids = [r.rollout_id for r in await store.query_rollouts(…)] 
 await store.wait_for_rollouts(rollout_ids) 
 
 # 3. Query spans and learn 
 for rollout_id in rollout_ids: 
 spans = await store.query_spans(rollout_id=rollout_id) 
 # Transform spans to training data 
 training_data = self.adapter.adapt(spans) 
 # Update model/prompts 
 updated_resources = self.learn(training_data) 
 await store.update_resources(updated_resources)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment