MoFA provides native Python bindings that expose the full power of the Rust core. The bindings are generated using Mozilla UniFFI and provide idiomatic Python APIs with type hints, async support, and full error handling.
import osfrom mofa import LLMAgentBuilder, MoFaError# Set your API keyos.environ["OPENAI_API_KEY"] = "your-key-here"# Create an agent using the builder patternbuilder = LLMAgentBuilder.create()builder = builder.set_id("my-agent")builder = builder.set_name("Python Agent")builder = builder.set_system_prompt("You are a helpful assistant.")builder = builder.set_temperature(0.7)builder = builder.set_max_tokens(1000)builder = builder.set_openai_provider( os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"), model="gpt-3.5-turbo")agent = builder.build()# Simple Q&A (no context retention)answer = agent.ask("What is Rust?")print(answer)# Multi-turn chat (with context)agent.chat("My favorite color is blue.")response = agent.chat("What did I just tell you?")print(response) # Remembers: "You told me your favorite color is blue."
from mofa import get_version, is_dora_available, new_llm_agent_builder# Get SDK versionversion = get_version()print(f"MoFA SDK version: {version}")# Check if Dora runtime is availablehas_dora = is_dora_available()print(f"Dora-rs available: {has_dora}")# Create a builderbuilder = new_llm_agent_builder()
from mofa import SessionManager, Session# In-memory session managermanager = SessionManager.new_in_memory()# Get or create a sessionsession = manager.get_or_create("user-123")# Add messagessession.add_message("user", "Hello!")session.add_message("assistant", "Hi there! How can I help?")# Retrieve historyhistory = session.get_history(max_messages=10)for msg in history: print(f"{msg.role}: {msg.content}")# Store metadatasession.set_metadata("user_name", '"Alice"') # JSON stringsession.set_metadata("preferences", '{"theme": "dark"}')# Retrieve metadatauser_name = session.get_metadata("user_name")print(f"User name: {user_name}")# Save session (for file-backed storage)manager.save_session(session)# List all sessionsall_sessions = manager.list_sessions()print(f"Total sessions: {len(all_sessions)}")# Delete a sessionmanager.delete_session("user-123")
from mofa import LLMAgentBuilder, ChatRolebuilder = LLMAgentBuilder.create()builder = builder.set_name("History Agent")builder = builder.set_openai_provider( api_key=os.getenv("OPENAI_API_KEY"), base_url=None, model="gpt-3.5-turbo")agent = builder.build()# Have a conversationagent.chat("My name is Alice.")agent.chat("I'm learning about AI agents.")agent.chat("What's my name again?")# Get full historyhistory = agent.get_history()print(f"Total messages: {len(history)}")for i, msg in enumerate(history): role_name = msg.role.name # SYSTEM, USER, ASSISTANT content = msg.content print(f"[{i+1}] {role_name}: {content[:50]}...")# Clear historyprint("\nClearing history...")agent.clear_history()history = agent.get_history()print(f"Messages after clear: {len(history)}")
# If you get: ImportError: No module named 'mofa'# Make sure bindings are generated and in PYTHONPATHimport syssys.path.insert(0, "/path/to/mofa/crates/mofa-ffi/bindings/python")
# If you get: OSError: libmofa_ffi.so not found# Make sure the shared library is builtcd mofacargo build --release --features uniffi -p mofa-ffi# Copy to Python bindings directorycp target/release/libmofa_ffi.so crates/mofa-ffi/bindings/python/
import os# Verify API key is setif not os.getenv("OPENAI_API_KEY"): print("Error: OPENAI_API_KEY not set") print("Set it with: export OPENAI_API_KEY=your-key") exit(1)