Initial commit: add .gitignore and README
This commit is contained in:
139
examples/admin_panel_example.py
Normal file
139
examples/admin_panel_example.py
Normal file
@@ -0,0 +1,139 @@
|
||||
"""Example: Using the Admin Control Panel for FusionAGI management."""
|
||||
|
||||
from fusionagi import Orchestrator, EventBus, StateManager
|
||||
from fusionagi.interfaces.admin_panel import AdminControlPanel
|
||||
from fusionagi.interfaces.voice import VoiceLibrary, VoiceProfile
|
||||
from fusionagi.interfaces.conversation import ConversationTuner, ConversationStyle
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Demonstrate admin control panel usage."""
|
||||
|
||||
# Initialize core FusionAGI components
|
||||
bus = EventBus()
|
||||
state = StateManager()
|
||||
orch = Orchestrator(event_bus=bus, state_manager=state)
|
||||
|
||||
# Create admin control panel
|
||||
admin = AdminControlPanel(
|
||||
orchestrator=orch,
|
||||
event_bus=bus,
|
||||
state_manager=state,
|
||||
voice_library=VoiceLibrary(),
|
||||
conversation_tuner=ConversationTuner(),
|
||||
)
|
||||
|
||||
print("=== FusionAGI Admin Control Panel ===\n")
|
||||
|
||||
# ========== Voice Library Management ==========
|
||||
print("1. Adding Voice Profiles...")
|
||||
|
||||
voices = [
|
||||
VoiceProfile(
|
||||
name="Professional Assistant",
|
||||
language="en-US",
|
||||
gender="neutral",
|
||||
style="professional",
|
||||
pitch=1.0,
|
||||
speed=1.0,
|
||||
),
|
||||
VoiceProfile(
|
||||
name="Friendly Guide",
|
||||
language="en-US",
|
||||
gender="female",
|
||||
style="friendly",
|
||||
pitch=1.1,
|
||||
speed=1.05,
|
||||
),
|
||||
VoiceProfile(
|
||||
name="Technical Expert",
|
||||
language="en-US",
|
||||
gender="male",
|
||||
style="technical",
|
||||
pitch=0.9,
|
||||
speed=0.95,
|
||||
),
|
||||
]
|
||||
|
||||
for voice in voices:
|
||||
voice_id = admin.add_voice_profile(voice)
|
||||
print(f" ✓ Added voice: {voice.name} (ID: {voice_id[:8]}...)")
|
||||
|
||||
# Set default voice
|
||||
admin.set_default_voice(voices[0].id)
|
||||
print(f" ✓ Default voice set to: {voices[0].name}\n")
|
||||
|
||||
# List voices
|
||||
all_voices = admin.list_voices()
|
||||
print(f"Total voices in library: {len(all_voices)}\n")
|
||||
|
||||
# ========== Conversation Style Configuration ==========
|
||||
print("2. Configuring Conversation Styles...")
|
||||
|
||||
styles = {
|
||||
"customer_support": ConversationStyle(
|
||||
formality="neutral",
|
||||
verbosity="balanced",
|
||||
empathy_level=0.9,
|
||||
proactivity=0.8,
|
||||
technical_depth=0.4,
|
||||
humor_level=0.3,
|
||||
),
|
||||
"technical_expert": ConversationStyle(
|
||||
formality="formal",
|
||||
verbosity="detailed",
|
||||
empathy_level=0.5,
|
||||
proactivity=0.6,
|
||||
technical_depth=0.9,
|
||||
humor_level=0.1,
|
||||
),
|
||||
"casual_chat": ConversationStyle(
|
||||
formality="casual",
|
||||
verbosity="balanced",
|
||||
empathy_level=0.8,
|
||||
proactivity=0.5,
|
||||
technical_depth=0.3,
|
||||
humor_level=0.7,
|
||||
),
|
||||
}
|
||||
|
||||
for name, style in styles.items():
|
||||
admin.register_conversation_style(name, style)
|
||||
print(f" ✓ Registered style: {name}")
|
||||
|
||||
print()
|
||||
|
||||
# ========== System Monitoring ==========
|
||||
print("3. System Status...")
|
||||
|
||||
status = admin.get_system_status()
|
||||
print(f" Status: {status.status}")
|
||||
print(f" Uptime: {status.uptime_seconds:.1f} seconds")
|
||||
print(f" Active tasks: {status.active_tasks}")
|
||||
print(f" Active agents: {status.active_agents}")
|
||||
print()
|
||||
|
||||
# ========== Configuration Export ==========
|
||||
print("4. Exporting Configuration...")
|
||||
|
||||
config = admin.export_configuration()
|
||||
print(f" ✓ Exported configuration with:")
|
||||
print(f" - {len(config['voices'])} voice profiles")
|
||||
print(f" - {len(config['conversation_styles'])} conversation styles")
|
||||
print(f" - {len(config['agent_configs'])} agent configurations")
|
||||
print()
|
||||
|
||||
# ========== Task Statistics ==========
|
||||
print("5. Task Statistics...")
|
||||
|
||||
stats = admin.get_task_statistics()
|
||||
print(f" Total tasks: {stats['total_tasks']}")
|
||||
print(f" By state: {stats['by_state']}")
|
||||
print(f" By priority: {stats['by_priority']}")
|
||||
print()
|
||||
|
||||
print("=== Admin Panel Demo Complete ===")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
20
examples/dvadasa_api_example.py
Normal file
20
examples/dvadasa_api_example.py
Normal file
@@ -0,0 +1,20 @@
|
||||
"""Example: run Dvādaśa API with uvicorn."""
|
||||
|
||||
if __name__ == "__main__":
|
||||
from fusionagi.api import create_app
|
||||
from fusionagi.adapters import StubAdapter
|
||||
|
||||
# Use stub adapter for testing without API keys
|
||||
stub = StubAdapter(structured_response={
|
||||
"head_id": "logic",
|
||||
"summary": "Stub analysis.",
|
||||
"claims": [{"claim_text": "Test claim", "confidence": 0.9, "evidence": [], "assumptions": []}],
|
||||
"risks": [],
|
||||
"questions": [],
|
||||
"recommended_actions": ["Proceed"],
|
||||
"tone_guidance": "",
|
||||
})
|
||||
app = create_app(adapter=stub)
|
||||
|
||||
import uvicorn
|
||||
uvicorn.run(app, host="0.0.0.0", port=8000)
|
||||
147
examples/multimodal_ui_example.py
Normal file
147
examples/multimodal_ui_example.py
Normal file
@@ -0,0 +1,147 @@
|
||||
"""Example: Using the Multi-Modal User Interface."""
|
||||
|
||||
import asyncio
|
||||
|
||||
from fusionagi import Orchestrator, EventBus, StateManager
|
||||
from fusionagi.interfaces.multimodal_ui import MultiModalUI
|
||||
from fusionagi.interfaces.voice import VoiceInterface, VoiceLibrary, VoiceProfile
|
||||
from fusionagi.interfaces.conversation import ConversationManager, ConversationTuner, ConversationStyle
|
||||
from fusionagi.interfaces.base import ModalityType
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
"""Demonstrate multi-modal UI usage."""
|
||||
|
||||
# Initialize core FusionAGI components
|
||||
bus = EventBus()
|
||||
state = StateManager()
|
||||
orch = Orchestrator(event_bus=bus, state_manager=state)
|
||||
|
||||
# Set up voice interface
|
||||
voice_library = VoiceLibrary()
|
||||
voice_library.add_voice(VoiceProfile(
|
||||
name="Assistant Voice",
|
||||
language="en-US",
|
||||
style="friendly",
|
||||
))
|
||||
|
||||
voice_interface = VoiceInterface(
|
||||
voice_library=voice_library,
|
||||
stt_provider="whisper",
|
||||
tts_provider="system",
|
||||
)
|
||||
|
||||
# Set up conversation manager
|
||||
tuner = ConversationTuner()
|
||||
tuner.register_style("default", ConversationStyle(
|
||||
formality="neutral",
|
||||
verbosity="balanced",
|
||||
empathy_level=0.7,
|
||||
))
|
||||
|
||||
conv_manager = ConversationManager(tuner=tuner)
|
||||
|
||||
# Create multi-modal UI
|
||||
ui = MultiModalUI(
|
||||
orchestrator=orch,
|
||||
conversation_manager=conv_manager,
|
||||
voice_interface=voice_interface,
|
||||
)
|
||||
|
||||
print("=== FusionAGI Multi-Modal User Interface ===\n")
|
||||
|
||||
# ========== Session Creation ==========
|
||||
print("1. Creating User Session...")
|
||||
|
||||
session_id = ui.create_session(
|
||||
user_id="demo_user",
|
||||
preferred_modalities=[ModalityType.TEXT, ModalityType.VOICE],
|
||||
accessibility_settings={
|
||||
"high_contrast": False,
|
||||
"screen_reader": False,
|
||||
"large_text": False,
|
||||
},
|
||||
)
|
||||
|
||||
print(f" ✓ Session created: {session_id[:16]}...")
|
||||
print(f" ✓ Active modalities: TEXT, VOICE\n")
|
||||
|
||||
# ========== Multi-Modal Output ==========
|
||||
print("2. Sending Multi-Modal Messages...")
|
||||
|
||||
await ui.send_to_user(
|
||||
session_id,
|
||||
"Welcome to FusionAGI! I can interact with you through text and voice.",
|
||||
modalities=[ModalityType.TEXT],
|
||||
)
|
||||
print(" ✓ Sent welcome message (TEXT)")
|
||||
|
||||
await ui.send_to_user(
|
||||
session_id,
|
||||
"How can I assist you today?",
|
||||
modalities=[ModalityType.TEXT, ModalityType.VOICE],
|
||||
)
|
||||
print(" ✓ Sent greeting (TEXT + VOICE)\n")
|
||||
|
||||
# ========== Conversation ==========
|
||||
print("3. Conversational Interaction...")
|
||||
|
||||
user_inputs = [
|
||||
"What can you do?",
|
||||
"Tell me about your capabilities",
|
||||
"Can you help me with a task?",
|
||||
]
|
||||
|
||||
for user_input in user_inputs:
|
||||
print(f" User: {user_input}")
|
||||
response = await ui.converse(session_id, user_input)
|
||||
print(f" Agent: {response}\n")
|
||||
|
||||
# ========== Task Submission ==========
|
||||
print("4. Interactive Task Submission...")
|
||||
|
||||
task_id = await ui.submit_task_interactive(
|
||||
session_id,
|
||||
goal="Analyze system performance and generate report",
|
||||
constraints={"format": "markdown", "max_length": 1000},
|
||||
)
|
||||
|
||||
print(f" ✓ Task submitted: {task_id[:8]}...")
|
||||
print(" ✓ User will receive real-time updates\n")
|
||||
|
||||
# ========== Modality Management ==========
|
||||
print("5. Managing Modalities...")
|
||||
|
||||
# Enable haptic feedback (if available)
|
||||
success = ui.enable_modality(session_id, ModalityType.HAPTIC)
|
||||
if success:
|
||||
print(" ✓ Haptic modality enabled")
|
||||
else:
|
||||
print(" ℹ Haptic modality not available")
|
||||
|
||||
# Check available modalities
|
||||
available = ui.get_available_modalities()
|
||||
print(f" Available modalities: {[m.value for m in available]}\n")
|
||||
|
||||
# ========== Session Statistics ==========
|
||||
print("6. Session Statistics...")
|
||||
|
||||
stats = ui.get_session_statistics(session_id)
|
||||
print(f" Session ID: {stats['session_id'][:16]}...")
|
||||
print(f" User ID: {stats['user_id']}")
|
||||
print(f" Active modalities: {stats['active_modalities']}")
|
||||
print(f" Conversation turns: {stats['conversation_turns']}")
|
||||
print(f" Started at: {stats['started_at']}")
|
||||
print()
|
||||
|
||||
# ========== Session Cleanup ==========
|
||||
print("7. Ending Session...")
|
||||
|
||||
ui.end_session(session_id)
|
||||
print(" ✓ Session ended\n")
|
||||
|
||||
print("=== Multi-Modal UI Demo Complete ===")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user