Generation Module

The generation module handles the creation of harmless trajectories using various API providers.

Generator Classes

Base Generator

OpenAI Generator

External API Generator

Local Model Generator

Configuration Classes

Generation Settings

OpenAI Config

External API Config

Local Config

Factory Functions

Utility Functions

Examples

Basic Generation

from AuraGen.generation import OpenAIGenerator, OpenAIConfig

# Configure OpenAI generator
config = OpenAIConfig(
    api_key_type="openai_api_key",
    model="gpt-4o",
    temperature=1.0,
    max_tokens=2048
)

generator = OpenAIGenerator(config)

# Generate a single trajectory
trajectory = generator.generate_single(
    scenario_name="email_assistant",
    constraints={"industry": "technology"}
)

print(f"Generated: {trajectory}")

Batch Generation

from AuraGen.generation import create_generator, load_generation_settings

# Load settings from file
settings = load_generation_settings("config/generation.yaml")

# Create appropriate generator based on settings
generator = create_generator(settings)

# Generate multiple trajectories
trajectories = generator.generate_batch(
    scenario_names=["email_assistant", "calendar_manager"],
    batch_size=10
)

print(f"Generated {len(trajectories)} trajectories")

Custom Generator

from AuraGen.generation import BaseGenerator
from AuraGen.models import Trajectory

class CustomGenerator(BaseGenerator):
    def __init__(self, custom_config):
        super().__init__()
        self.config = custom_config

    def _generate_single_impl(self, prompt: str) -> str:
        # Custom generation logic
        return self.custom_api_call(prompt)

    def custom_api_call(self, prompt: str) -> str:
        # Your custom API integration
        pass

# Use custom generator
generator = CustomGenerator(my_config)
trajectory = generator.generate_single("test_scenario")

Error Handling

from AuraGen.generation import OpenAIGenerator, GenerationError

try:
    generator = OpenAIGenerator(config)
    trajectory = generator.generate_single("scenario")
except GenerationError as e:
    print(f"Generation failed: {e}")
    # Handle the error appropriately
except Exception as e:
    print(f"Unexpected error: {e}")

Performance Optimization

from AuraGen.generation import ExternalAPIGenerator
import asyncio

async def generate_concurrent():
    generator = ExternalAPIGenerator(config)

    # Generate multiple trajectories concurrently
    tasks = [
        generator.generate_single_async("scenario_1"),
        generator.generate_single_async("scenario_2"),
        generator.generate_single_async("scenario_3")
    ]

    trajectories = await asyncio.gather(*tasks)
    return trajectories

# Run concurrent generation
trajectories = asyncio.run(generate_concurrent())