Agent Train
Active iterative training with human or LLM feedback to improve agent behavior
Agent Train enables active improvement of agent behavior through iterative feedback loops. Unlike Agent Learn which captures patterns passively, training uses explicit human or LLM feedback to refine responses.
Quick Start
- Simple CLI Training
Train an agent with a single input:
bash praisonai train agents --input "What is Python?" - Human-in-the-Loop
Get human feedback instead of automated grading:
bash praisonai train agents --input "Explain machine learning" --human - Multiple Iterations
Run multiple training iterations:
bash praisonai train agents --input "Write a poem" --iterations 5
How It Works
Detailed Control Flow
| Phase | Description |
|---|---|
| Scenario | Define input and expected output |
| Execute | Run agent and capture response |
| Grade | Score output (human or LLM) |
| Improve | Build enhanced prompt from feedback |
| Iterate | Repeat for N iterations |
| Report | Generate training summary |
SDK Usage
from praisonai.train.agents import AgentTrainer, TrainingScenario
from praisonaiagents import Agent
# Create agent
agent = Agent(
name="Assistant",
instructions="You are a helpful assistant"
)
# Create trainer
trainer = AgentTrainer(
agent=agent,
iterations=3,
human_mode=False # Use LLM grading
)
# Add training scenario
trainer.add_scenario(TrainingScenario(
id="greeting",
input_text="Hello, how are you?",
expected_output="A friendly greeting response"
))
# Run training
report = trainer.run()
print(f"Final score: {report.avg_score}/10")
print(f"Improvement: {report.improvement:+.1f}")Applying Training at Runtime
After training, apply the learned improvements to your agent using apply_training():
from praisonai.train.agents import apply_training
from praisonaiagents import Agent
agent = Agent(name="assistant", instructions="Be helpful")
# Apply best iteration from a session
apply_training(agent, session_id="train-abc123")
# Now the agent uses learned improvements
response = agent.start("Hello!")Select Specific Iteration
# Apply iteration #2 specifically (not just the best)
apply_training(agent, session_id="train-abc123", iteration=2)Inspect Before Applying
from praisonai.train.agents import get_training_profile
# Preview the profile first
profile = get_training_profile("train-abc123")
print(f"Score: {profile.quality_score}/10")
print(f"Suggestions: {profile.suggestions}")
# Then apply if it looks good
apply_training(agent, profile=profile)Remove Training
from praisonai.train.agents import remove_training
# Remove training hook from agent
remove_training(agent)CLI Commands
Train Agents
praisonai train agents [OPTIONS] [AGENT_FILE]| Option | Description | Default |
|---|---|---|
--input, -i | Single input text | – |
--expected, -e | Expected output | – |
--iterations, -n | Number of iterations | 3 |
--human, -h | Use human feedback | false |
--scenarios, -s | Scenarios JSON file | – |
--model, -m | LLM for grading | gpt-4o-mini |
--storage-backend | file, sqlite, redis:// | file |
List Sessions
praisonai train listShow Session Details
praisonai train show <session_id> --iterationsThe --iterations flag shows detailed suggestions for each iteration.
Apply Training
praisonai train apply <session_id> [OPTIONS]| Option | Description | Default |
|---|---|---|
--iteration, -n | Specific iteration number | best |
--run, -r | Run agent with this prompt | – |
--agent, -a | Path to agent YAML file | – |
Example:
praisonai train apply train-abc123 --iteration 2 --run "Hello"Grading Modes
LLM-as-Judge (Default)
Automated grading using an LLM to evaluate responses:
praisonai train agents --input "Explain AI" --model gpt-4oThe LLM grades based on:
- Relevance to input
- Accuracy of information
- Clarity and completeness
- Match to expected output (if provided)
Human Feedback
Interactive mode where you score and provide feedback:
praisonai train agents --input "Write a haiku" --humanYou’ll be prompted to:
- Review the agent’s output
- Provide a score (1-10)
- Enter improvement suggestions
Storage Backends
Training data persists across sessions:
# File storage (default)
praisonai train agents --input "Hello" --storage-backend file
# SQLite (recommended for production)
praisonai train agents --input "Hello" --storage-backend sqlite
# Redis (distributed systems)
praisonai train agents --input "Hello" --storage-backend redis://localhost:6379Training data is stored as JSON (not pickle), making it:
- ✅ Human-readable
- ✅ Git-friendly
- ✅ Secure (no pickle vulnerabilities)
- ✅ Cross-platform compatible
Scenarios File
For batch training, use a scenarios file:
[
{
"id": "greeting",
"input_text": "Hello, how are you?",
"expected_output": "A friendly response"
},
{
"id": "coding",
"input_text": "Write a Python hello world",
"expected_output": "print('Hello, World!')"
}
]praisonai train agents --scenarios scenarios.json --iterations 5Learn vs Train
| Aspect | Agent Learn | Agent Training |
|---|---|---|
| Purpose | Passive learning during interactions | Active iterative improvement |
| Trigger | Automatic during agent.start() | Explicit CLI/SDK call |
| Feedback | Implicit (patterns, insights) | Explicit (score, suggestions) |
| Storage | Persona, insights, patterns stores | Scenarios, iterations, reports |
| Use Case | Remember user preferences | Improve agent behavior |
See Learn vs Train Comparison for detailed differences.