MemGPT/letta/serialize_schemas/pydantic_agent_schema.py
Matthew Zhou 406a49ab60 feat: Change in context message remapping (#1448)
Co-authored-by: Sarah Wooders <sarahwooders@gmail.com>
Co-authored-by: Shubham Naik <shub@letta.com>
Co-authored-by: Shubham Naik <shub@memgpt.ai>
Co-authored-by: Charles Packer <packercharles@gmail.com>
2025-03-28 11:50:25 -07:00

126 lines
2.9 KiB
Python

from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, Field
from letta.schemas.embedding_config import EmbeddingConfig
from letta.schemas.letta_message_content import TextContent
from letta.schemas.llm_config import LLMConfig
class CoreMemoryBlockSchema(BaseModel):
created_at: str
description: Optional[str]
is_template: bool
label: str
limit: int
metadata_: Optional[Dict] = None
template_name: Optional[str]
updated_at: str
value: str
class MessageSchema(BaseModel):
created_at: str
group_id: Optional[str]
model: Optional[str]
name: Optional[str]
role: str
content: List[TextContent] # TODO: Expand to more in the future
tool_call_id: Optional[str]
tool_calls: List[Any]
tool_returns: List[Any]
updated_at: str
class TagSchema(BaseModel):
tag: str
class ToolEnvVarSchema(BaseModel):
created_at: str
description: Optional[str]
key: str
updated_at: str
value: str
# Tool rules
class BaseToolRuleSchema(BaseModel):
tool_name: str
type: str
class ChildToolRuleSchema(BaseToolRuleSchema):
children: List[str]
class MaxCountPerStepToolRuleSchema(BaseToolRuleSchema):
max_count_limit: int
class ConditionalToolRuleSchema(BaseToolRuleSchema):
default_child: Optional[str]
child_output_mapping: Dict[Any, str]
require_output_mapping: bool
ToolRuleSchema = Union[BaseToolRuleSchema, ChildToolRuleSchema, MaxCountPerStepToolRuleSchema, ConditionalToolRuleSchema]
class ParameterProperties(BaseModel):
type: str
description: Optional[str] = None
class ParametersSchema(BaseModel):
type: Optional[str] = "object"
properties: Dict[str, ParameterProperties]
required: List[str] = Field(default_factory=list)
class ToolJSONSchema(BaseModel):
name: str
description: str
parameters: ParametersSchema # <— nested strong typing
type: Optional[str] = None # top-level 'type' if it exists
required: Optional[List[str]] = Field(default_factory=list)
class ToolSchema(BaseModel):
args_json_schema: Optional[Any]
created_at: str
description: str
json_schema: ToolJSONSchema
name: str
return_char_limit: int
source_code: Optional[str]
source_type: str
tags: List[str]
tool_type: str
updated_at: str
metadata_: Optional[Dict] = None
class AgentSchema(BaseModel):
agent_type: str
core_memory: List[CoreMemoryBlockSchema]
created_at: str
description: Optional[str]
embedding_config: EmbeddingConfig
llm_config: LLMConfig
message_buffer_autoclear: bool
in_context_message_indices: List[int]
messages: List[MessageSchema]
metadata_: Optional[Dict] = None
multi_agent_group: Optional[Any]
name: str
system: str
tags: List[TagSchema]
tool_exec_environment_variables: List[ToolEnvVarSchema]
tool_rules: List[ToolRuleSchema]
tools: List[ToolSchema]
updated_at: str
version: str