Models¶
AgentShip uses Pydantic models for type-safe data validation and serialization. All API requests and responses are validated against these models.
Overview¶
Models provide:
Type safety: Automatic validation of data types
Documentation: Self-documenting API schemas
Serialization: Automatic JSON conversion
Error messages: Clear validation errors
Core Models¶
TextInput / TextOutput¶
Simple text-based input/output for basic agents:
from src.service.models.base_models import TextInput, TextOutput
input_data = TextInput(text="Hello!")
# Used for simple text-based interactions
AgentChatRequest¶
Request model for the chat endpoint:
{
"agent_name": "my_agent",
"user_id": "user-123",
"session_id": "session-456",
"query": "Hello!",
"features": []
}
Fields: - agent_name (str, required): Name of the agent to use - user_id (str, required): Unique user identifier - session_id (str, required): Conversation session identifier - query (str/object/array, required): User’s input - features (List[FeatureMap], optional): Feature configuration
AgentChatResponse¶
Response model from the chat endpoint:
{
"agent_name": "my_agent",
"user_id": "user-123",
"session_id": "session-456",
"sender": "SYSTEM",
"success": true,
"agent_response": {...}
}
Fields: - agent_name (str): Name of the agent that responded - user_id (str): User identifier - session_id (str): Session identifier - sender (str): Who sent the response (usually “SYSTEM”) - success (bool): Whether the request succeeded - agent_response (any): The agent’s response (format depends on agent)
FeatureMap¶
Configuration for agent features:
{
"feature_name": "max_followups",
"feature_value": 5
}
Fields: - feature_name (str): Name of the feature - feature_value (any): Value for the feature
Artifact¶
File attachments for agents:
{
"artifact_name": "document.pdf",
"artifact_path": "/path/to/document.pdf"
}
Fields: - artifact_name (str): Name of the artifact - artifact_path (str): Path to the artifact file
Usage Examples¶
Creating a Request¶
from src.service.models.base_models import AgentChatRequest, FeatureMap
request = AgentChatRequest(
agent_name="my_agent",
user_id="user-123",
session_id="session-456",
query="Hello!",
features=[
FeatureMap(
feature_name="max_followups",
feature_value=5
)
]
)
Validating Data¶
Pydantic automatically validates all data:
try:
request = AgentChatRequest(**data)
except ValidationError as e:
# Handle validation errors
print(e.errors())