File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,10 @@
66
class EmailMessageSchema(BaseModel):
77
subject: str
88
contents: str
9-
invalid_request: bool | None = Field(default=False)
9+
invalid_request: bool | None = Field(default=False)
10+
11+
12+
13+
14+
class SupervisorMessageSchema(BaseModel):
15+
content: str
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from typing import List
2-
from fastapi import APIRouter, Depends
2+
from fastapi import APIRouter, Depends, HTTPException
33
from sqlmodel import Session, select
44

55
from api.db import get_session
6-
from api.ai.schemas import EmailMessageSchema
6+
from api.ai.agents import get_supervisor
7+
from api.ai.schemas import EmailMessageSchema, SupervisorMessageSchema
78
from api.ai.services import generate_email_message
89
from .models import ChatMessagePayload, ChatMessage, ChatMessageListItem
910
router = APIRouter()
@@ -29,7 +30,11 @@ def chat_list_messages(session: Session = Depends(get_session)):
2930
# curl -X POST -d '{"message": "Give me a summary of why it is good to go outside"}' -H "Content-Type: application/json" http://localhost:8080/api/chats/
3031

3132
# curl -X POST -d '{"message": "Give me a summary of why it is good to go outside"}' -H "Content-Type: application/json" https://docker-api-fastapi-python-app-3jid9.ondigitalocean.app/api/chats/
32-
@router.post("/", response_model=EmailMessageSchema)
33+
34+
35+
# curl -X POST -d '{"message": "Research why it is good to go outside and email me the results"}' -H "Content-Type: application/json" http://localhost:8080/api/chats/
36+
37+
@router.post("/", response_model=SupervisorMessageSchema)
3338
def chat_create_message(
3439
payload:ChatMessagePayload,
3540
session: Session = Depends(get_session)
@@ -38,7 +43,18 @@ def chat_create_message(
3843
obj = ChatMessage.model_validate(data)
3944
session.add(obj)
4045
session.commit()
41-
# session.refresh(obj) # ensure id/primary key added to the obj instance
42-
# ready to store in the database
43-
response = generate_email_message(payload.message)
44-
return response
46+
supe = get_supervisor()
47+
msg_data = {
48+
"messages": [
49+
{"role": "user",
50+
"content": f"{payload.message}"
51+
},
52+
]
53+
}
54+
result = supe.invoke(msg_data)
55+
if not result:
56+
raise HTTPException(status_code=400, detail="Error with supervisor")
57+
messages = result.get("messages")
58+
if not messages:
59+
raise HTTPException(status_code=400, detail="Error with supervisor")
60+
return messages[-1]

0 commit comments

Comments
 (0)