Skip to content

Commit 72c9df4

Browse files
Added some new SSE component templates
1 parent ebf9ced commit 72c9df4

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

routers/messages.py

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
logger: logging.Logger = logging.getLogger("uvicorn.error")
1616
logger.setLevel(logging.DEBUG)
1717

18-
19-
2018
router: APIRouter = APIRouter(
2119
prefix="/assistants/{assistant_id}/messages/{thread_id}",
2220
tags=["assistants_messages"]
@@ -29,7 +27,26 @@ class ToolCallOutputs(BaseModel):
2927
tool_outputs: Any
3028
runId: str
3129

30+
user_message_html = (
31+
"<div class=\"chat-turn\" hx-swap=\"beforeend\" "
32+
"sse-connect=\"/assistants/{assistant_id}/messages/{thread_id}/receive\" "
33+
"sse-swap=\"messageCreated\" "
34+
"sse-close=\"endStream\">"
35+
"<div class=\"userMessage\">"
36+
"{user_input}"
37+
"</div>"
38+
"</div>"
39+
)
40+
41+
assistant_step_html = (
42+
"<div class=\"{event_type}\" " # assistantMessage or toolCall
43+
"sse-swap=\"{event_name}\" " #event_type plus a counter
44+
"hx-swap=\"beforeend\">"
45+
"</div>"
46+
)
47+
3248
async def post_tool_outputs(client: AsyncOpenAI, data: dict, thread_id: str):
49+
3350
try:
3451
# Parse the JSON body into the ToolCallOutputs model
3552
tool_call_outputs = ToolCallOutputs(**data)
@@ -88,16 +105,18 @@ async def post_message(
88105

89106
)
90107

91-
return templates.TemplateResponse(
92-
"components/chat-turn.html",
93-
{
94-
"request": request,
95-
"user_input": userInput,
96-
"assistant_id": assistant_id,
97-
"thread_id": thread_id
98-
}
108+
return (
109+
user_message_html.format(user_input=userInput) +
110+
assistant_step_html.format(
111+
event_type="assistantMessage",
112+
event_name="message",
113+
assistant_id=assistant_id,
114+
thread_id=thread_id
115+
)
99116
)
100117

118+
119+
101120
@router.get("/receive")
102121
async def stream_response(
103122
assistant_id: str,

0 commit comments

Comments
 (0)