mirror of
https://github.com/cpacker/MemGPT.git
synced 2025-06-03 04:30:22 +00:00

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>
126 lines
2.9 KiB
Python
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
|