Files
mai-bot/agentlite/examples/skills_example.py
tcmofashi 7b9e1cf925 ruff
2026-04-03 23:18:30 +08:00

87 lines
2.3 KiB
Python

"""Example demonstrating the skills system for AgentLite.
This example shows how to use skills with an Agent.
"""
import asyncio
from pathlib import Path
from agentlite.skills import discover_skills, index_skills_by_name
async def main():
"""Run skills example."""
print("=" * 60)
print("AgentLite Skills Example")
print("=" * 60)
# Discover skills from examples directory
skills_dir = Path(__file__).parent / "skills"
skills = discover_skills(skills_dir)
print(f"\nDiscovered {len(skills)} skill(s):")
for skill in skills:
print(f" - {skill.name}: {skill.description}")
print(f" Type: {skill.type}")
if skill.flow:
print(f" Flow nodes: {len(skill.flow.nodes)}")
# Index skills by name
skill_index = index_skills_by_name(skills)
print(f"\nIndexed {len(skill_index)} skill(s)")
# Create agent (would need API key to actually run)
print("\n" + "-" * 40)
print("To use skills with an agent:")
print("-" * 40)
code = """
# Create provider
provider = OpenAIProvider(api_key="your-key", model="gpt-4")
# Create agent
agent = Agent(
provider=provider,
system_prompt="You are a helpful assistant with access to skills.",
)
# Create skill tool
skill_tool = SkillTool(skill_index, parent_agent=agent)
# Add skill tool to agent
agent.tools.add(skill_tool)
# Now the agent can use skills!
# The agent will see available skills in its context
# Example usage:
response = await agent.run("Review this Python code: def add(a, b): return a + b")
# The agent may choose to use the code-reviewer skill
"""
print(code)
print("\n" + "=" * 60)
print("Key Concepts:")
print("=" * 60)
print("1. Skills are defined in SKILL.md files")
print("2. YAML frontmatter specifies name, description, and type")
print("3. Standard skills load the markdown as a prompt")
print("4. Flow skills execute a structured flowchart")
print("5. Skills are discovered from directories")
print("6. SkillTool allows agents to execute skills")
print("\nSkill Format (SKILL.md):")
print(""" ---
name: skill-name
description: When to use this skill...
type: standard | flow
---
# Skill Content
Instructions for the skill...
""")
if __name__ == "__main__":
asyncio.run(main())