From a187488f4f4a17f4886bac061f977b38be2e7a4e Mon Sep 17 00:00:00 2001 From: Charles Packer Date: Tue, 10 Dec 2024 16:11:47 -0800 Subject: [PATCH] fix: create new request model that drops user_id (#2220) --- letta/server/rest_api/routers/v1/agents.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 3a758bba..9dfd7e2b 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -14,6 +14,7 @@ from fastapi import ( status, ) from fastapi.responses import JSONResponse, StreamingResponse +from pydantic import Field from letta.constants import DEFAULT_MESSAGE_TOOL, DEFAULT_MESSAGE_TOOL_KWARG from letta.schemas.agent import AgentState, CreateAgent, UpdateAgentState @@ -87,9 +88,18 @@ def get_agent_context_window( return server.get_agent_context_window(user_id=actor.id, agent_id=agent_id) +class CreateAgentRequest(CreateAgent): + """ + CreateAgent model specifically for POST request body, excluding user_id which comes from headers + """ + + # Override the user_id field to exclude it from the request body validation + user_id: Optional[str] = Field(None, exclude=True) + + @router.post("/", response_model=AgentState, operation_id="create_agent") def create_agent( - agent: CreateAgent = Body(...), + agent: CreateAgentRequest = Body(...), server: "SyncServer" = Depends(get_letta_server), user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present ):