Skip to main content

A framework for building AI agents powered by Lyzr

Project description

Lyzr Agents

A Python framework for building AI agents powered by Lyzr.

Installation

# Basic installation
pip install lyzr-agents

# With STORM agent support
pip install lyzr-agents[storm]

Quick Start

Basic Agent Execution

from lyzr_agents import LyzrAgent

# Initialize the client
client = LyzrAgent(
    api_key="your-lyzr-api-key",
    user_id="your-user-id"
)

# Execute an agent
response = client.execute(
    agent_id="your-agent-id",
    message="Hello, what can you help me with?"
)

print(response.response)

STORM Agent - Long-form Article Generation

The STORM agent implements Stanford's STORM algorithm for generating comprehensive, research-backed articles.

from lyzr_agents.storm import StormAgent

# Initialize with default Lyzr agents
agent = StormAgent(
    lyzr_api_key="your-api-key",
    user_id="your-user-id",
    no_of_personas=3,    # Number of expert perspectives
    no_of_questions=3,   # Questions per persona
    no_of_sections=5,    # Article sections
)

# Generate an article (sync)
result = agent.write("quantum computing")
result.toFile("quantum_computing.md")

# Or use async for parallel execution (faster)
import asyncio

async def main():
    result = await agent.write_async("quantum computing")
    result.print()

asyncio.run(main())

Custom Agent Configuration

from lyzr_agents.storm import StormAgent, StormAgentConfig

config = StormAgentConfig(
    persona_generator_agent_id="your-persona-agent",
    question_generator_agent_id="your-question-agent",
    research_agent_id="your-research-agent",
    outline_generator_agent_id="your-outline-agent",
    section_generator_agent_id="your-section-agent",
)

agent = StormAgent(
    lyzr_api_key="your-api-key",
    user_id="your-user-id",
    config=config,
)

Event Callbacks for Visualization

Track the STORM process in real-time for building UIs:

from lyzr_agents.storm import StormAgent

def on_event(event):
    print(f"[{event.status}] {event.step_name}: {event.event_type.value}")

agent = StormAgent(
    lyzr_api_key="your-api-key",
    user_id="your-user-id",
    on_event=on_event,
)

result = agent.write("artificial intelligence")

# Get React Flow compatible graph data
graph_data = result.get_graph_data()
print(graph_data)  # {"nodes": [...], "edges": [...]}

Live Terminal Visualization

Watch STORM execution in real-time with a beautiful tree display:

from lyzr_agents.storm import StormAgent, StormVisualizer

agent = StormAgent(
    lyzr_api_key="your-api-key",
    user_id="your-user-id",
)

# Sync with live visualization
with StormVisualizer() as viz:
    result = agent.write("quantum computing", on_event=viz.on_event)

# Async with live visualization
async with StormVisualizer() as viz:
    result = await agent.write_async("quantum computing", on_event=viz.on_event)

Terminal Output:

STORM: quantum computing [OK]
├── Generate Personas [OK] (3 items)
│   ├── Persona 1 [OK]
│   ├── Persona 2 [OK]
│   └── Persona 3 [OK]
├── Expert 1 Session [OK]
│   ├── Q1 [OK]
│   ├── Research Q1 [OK] (445 chars)
│   └── Q2 [OK]
├── Generate Outline [OK]
│   ├── Introduction [OK]
│   └── Core Concepts [OK]
├── Write: Introduction... [OK] (559 chars)
└── Assemble Article [OK]

Test Mode

Run without making API calls:

from lyzr_agents.storm import StormAgent, test_config

agent = StormAgent(
    lyzr_api_key="test",
    user_id="test",
    config=test_config(),
)

# Returns mock data for testing
result = agent.write("test topic")
print(result.article)

STORM Algorithm

The STORM (Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking) algorithm works in 6 steps:

  1. Persona Discovery - Generate diverse expert personas
  2. Question Generation - Each persona asks insightful questions
  3. Research - Answer questions using RAG-powered research
  4. Outline Generation - Create article structure from research
  5. Section Writing - Write each section with research context
  6. Assembly - Combine into final article

The async write_async() method runs persona conversations in parallel for faster execution.

API Reference

StormResult

The result object supports fluent method chaining:

result = agent.write("topic")

# Chain methods
result.toFile("output.md").print()

# Access data
print(result.article)      # Final article text
print(result.personas)     # List of generated personas
print(result.questions)    # Dict of persona -> questions
print(result.research)     # Dict of question -> answer
print(result.outline)      # List of section titles
print(result.sections)     # Dict of title -> content
print(result.events)       # List of StormEvent objects

StormVisualizer

Context manager for live terminal visualization:

from lyzr_agents.storm import StormVisualizer

# Customize refresh rate (default: 4 times/second)
with StormVisualizer(refresh_rate=10) as viz:
    result = agent.write("topic", on_event=viz.on_event)

# Hide details like character counts
with StormVisualizer(show_details=False) as viz:
    result = agent.write("topic", on_event=viz.on_event)

Event Types

from lyzr_agents.storm import StormEventType

# Lifecycle
StormEventType.STORM_STARTED
StormEventType.STORM_COMPLETED
StormEventType.STORM_FAILED

# Per-step events
StormEventType.PERSONA_GENERATION_STARTED
StormEventType.PERSONA_CREATED
StormEventType.QUESTION_GENERATION_STARTED
StormEventType.RESEARCH_STARTED
StormEventType.SECTION_WRITING_STARTED
# ... and more

License

MIT License

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lyzr_agents-0.1.0.tar.gz (51.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lyzr_agents-0.1.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file lyzr_agents-0.1.0.tar.gz.

File metadata

  • Download URL: lyzr_agents-0.1.0.tar.gz
  • Upload date:
  • Size: 51.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for lyzr_agents-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e8f00f3c3c9dae663dd3b7b6caf813753632529c1fd90dc6ee36972864fd1826
MD5 a26aa8086d8ec87399cfd64162886d36
BLAKE2b-256 998aa8ab4c711996496d8e3fd767f09a2b37d87b769db2bb62a8c9690cce38a5

See more details on using hashes here.

File details

Details for the file lyzr_agents-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: lyzr_agents-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for lyzr_agents-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9f53bf0ceb2aa85c40f6f7c11656f508c129cd740ee32c1278994573be420d3
MD5 14688549c6beb049e358fb4254df09c5
BLAKE2b-256 d7227103ddc2861126c4a0c615f49a7042c4abb9492cf58315cf379bd025bdf7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page