98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
"""Learning System Example.
|
|
|
|
Demonstrates the agent learning and skill improvement system.
|
|
"""
|
|
|
|
from openclaw.agents.trader import TraderAgent
|
|
from openclaw.learning.manager import CourseManager
|
|
from openclaw.learning.courses import (
|
|
create_technical_analysis_course,
|
|
create_risk_management_course,
|
|
)
|
|
|
|
|
|
def main():
|
|
"""Run the learning system example."""
|
|
print("=" * 60)
|
|
print("OpenClaw Trading - Learning System Example")
|
|
print("=" * 60)
|
|
|
|
# 1. Create agent
|
|
print("\n1. Creating trading agent...")
|
|
agent = TraderAgent(agent_id="student_001", initial_capital=2000.0)
|
|
print(f" Agent ID: {agent.agent_id}")
|
|
print(f" Initial Skill Level: {agent.state.skill_level:.2f}")
|
|
print(f" Balance: ${agent.balance:,.2f}")
|
|
|
|
# 2. Create learning manager
|
|
print("\n2. Creating learning manager...")
|
|
manager = CourseManager(agent=agent)
|
|
print(" Learning manager initialized")
|
|
|
|
# 3. Show available courses
|
|
print("\n3. Available Courses:")
|
|
courses = [
|
|
create_technical_analysis_course(),
|
|
create_risk_management_course(),
|
|
]
|
|
|
|
for course in courses:
|
|
print(f"\n {course.name}")
|
|
print(f" ID: {course.course_id}")
|
|
print(f" Duration: {course.duration_days} days")
|
|
print(f" Cost: ${course.cost:,.2f}")
|
|
if course.effects:
|
|
print(f" Effect: +{course.effects[0].improvement:.0%} {course.effects[0].skill_type.value}")
|
|
|
|
# 4. Check enrollment eligibility
|
|
print("\n4. Checking enrollment eligibility...")
|
|
can_enroll, reason = manager.can_enroll("technical_analysis_101")
|
|
print(f" Can enroll in 'Technical Analysis': {can_enroll}")
|
|
if not can_enroll:
|
|
print(f" Reason: {reason}")
|
|
|
|
# 5. Enroll in course
|
|
print("\n5. Enrolling in course...")
|
|
success, message = manager.enroll("technical_analysis_101")
|
|
print(f" Success: {success}")
|
|
print(f" Message: {message}")
|
|
|
|
if success:
|
|
# 6. Check if learning
|
|
print("\n6. Checking learning status...")
|
|
is_learning = manager.is_learning()
|
|
print(f" Is Learning: {is_learning}")
|
|
|
|
# 7. Get current course
|
|
print("\n7. Current course progress:")
|
|
current = manager.get_current_learning()
|
|
if current:
|
|
print(f" Course: {current.course_id}")
|
|
print(f" Status: {current.status.value}")
|
|
print(f" Progress: {current.progress_percent:.1f}%")
|
|
|
|
# 8. Simulate progress
|
|
print("\n8. Simulating learning progress...")
|
|
for progress in [25, 50, 75, 100]:
|
|
manager.update_progress("technical_analysis_101", progress)
|
|
print(f" Progress: {progress}%")
|
|
|
|
# 9. Check skill levels
|
|
print("\n9. Current skill levels:")
|
|
for skill, level in manager.skill_levels.items():
|
|
print(f" {skill.value}: {level:.2f}")
|
|
|
|
# 10. Get learning history
|
|
print("\n10. Learning history:")
|
|
history = manager.learning_history
|
|
print(f" Courses completed: {len(history.completed_courses)}")
|
|
print(f" Total spent: ${history.total_spent:,.2f}")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Learning system example complete!")
|
|
print("=" * 60)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|