|
31 | 31 | from fastapi import FastAPI
|
32 | 32 | from fastapi import HTTPException
|
33 | 33 | from fastapi import Query
|
| 34 | +from fastapi import Response |
34 | 35 | from fastapi.middleware.cors import CORSMiddleware
|
35 | 36 | from fastapi.responses import RedirectResponse
|
36 | 37 | from fastapi.responses import StreamingResponse
|
@@ -210,6 +211,13 @@ class RunEvalRequest(common.BaseModel):
|
210 | 211 | eval_metrics: list[EvalMetric]
|
211 | 212 |
|
212 | 213 |
|
| 214 | +class UpdateMemoryRequest(common.BaseModel): |
| 215 | + """Request to add a session to the memory service.""" |
| 216 | + |
| 217 | + session_id: str |
| 218 | + """The ID of the session to add to memory.""" |
| 219 | + |
| 220 | + |
213 | 221 | class RunEvalResult(common.BaseModel):
|
214 | 222 | eval_set_file: str
|
215 | 223 | eval_set_id: str
|
@@ -1144,6 +1152,41 @@ async def delete_artifact(
|
1144 | 1152 | filename=artifact_name,
|
1145 | 1153 | )
|
1146 | 1154 |
|
| 1155 | + @app.patch("/apps/{app_name}/users/{user_id}/memory") |
| 1156 | + async def patch_memory( |
| 1157 | + app_name: str, user_id: str, update_memory_request: UpdateMemoryRequest |
| 1158 | + ) -> None: |
| 1159 | + """Adds all events from a given session to the memory service. |
| 1160 | +
|
| 1161 | + Args: |
| 1162 | + app_name: The name of the application. |
| 1163 | + user_id: The ID of the user. |
| 1164 | + update_memory_request: The memory request for the update |
| 1165 | +
|
| 1166 | + Raises: |
| 1167 | + HTTPException: If the memory service is not configured or the request is invalid. |
| 1168 | + """ |
| 1169 | + if not self.memory_service: |
| 1170 | + raise HTTPException( |
| 1171 | + status_code=400, detail="Memory service is not configured." |
| 1172 | + ) |
| 1173 | + if ( |
| 1174 | + update_memory_request is None |
| 1175 | + or update_memory_request.session_id is None |
| 1176 | + ): |
| 1177 | + raise HTTPException( |
| 1178 | + status_code=400, detail="Update memory request is invalid." |
| 1179 | + ) |
| 1180 | + |
| 1181 | + session = await self.session_service.get_session( |
| 1182 | + app_name=app_name, |
| 1183 | + user_id=user_id, |
| 1184 | + session_id=update_memory_request.session_id, |
| 1185 | + ) |
| 1186 | + if not session: |
| 1187 | + raise HTTPException(status_code=404, detail="Session not found") |
| 1188 | + await self.memory_service.add_session_to_memory(session) |
| 1189 | + |
1147 | 1190 | @app.post("/run", response_model_exclude_none=True)
|
1148 | 1191 | async def run_agent(req: RunAgentRequest) -> list[Event]:
|
1149 | 1192 | session = await self.session_service.get_session(
|
|
0 commit comments