Data Agent Example
An agent that stores and retrieves structured data.
Code
from sypho_sdk import entrypoint, tool, AgentContext
@tool
async def save_user(context: AgentContext, name: str, email: str):
"""Save a user record"""
user_id = name.lower().replace(" ", "_")
await context.call_tool("structured_data_save", {
"namespace": "users",
"key": f"user:{user_id}",
"data": {
"name": name,
"email": email
},
"metadata": {
"type": "user",
"created_by": "agent"
}
})
return {"status": "saved", "user_id": user_id}
@tool
async def get_user(context: AgentContext, user_id: str):
"""Get a user record"""
result = await context.call_tool("structured_data_get", {
"namespace": "users",
"key": f"user:{user_id}"
})
return result
@tool
async def list_users(context: AgentContext):
"""List all users"""
results = await context.call_tool("structured_data_query", {
"namespace": "users",
"filters": {"metadata.type": "user"}
})
return results
@entrypoint
async def main(input: dict, context: AgentContext):
"""
You are a user data management agent.
You can:
- Save user records (name, email)
- Retrieve user data by ID
- List all users
Always confirm actions and provide clear feedback.
"""
pass
Usage Examples
Save a User
sypho run data-agent:0.1.0 \
--input '{"message": "Save user Alice with email alice@example.com"}'
LLM calls:
save_user(name="Alice", email="alice@example.com")
Get a User
sypho run data-agent:0.1.0 \
--input '{"message": "Get user alice"}'
LLM calls:
get_user(user_id="alice")
List Users
sypho run data-agent:0.1.0 \
--input '{"message": "List all users"}'
LLM calls:
list_users()
Knowledge Scope
The agent needs access to the users namespace. Set in run request:
{
"agent_name": "data-agent",
"version": "0.1.0",
"knowledge_scope": {
"structured_data_namespaces": {
"users": {
"keys": ["*"],
"permission": "read_write"
}
}
}
}