@app.post("/user/{user_uuid}/chat/{model_name}/{model_uuid}")
async def chat(request: ChatRequest) -> dict[str, Any]:
message = request.message[0]["content"]
chat_id = request.chat_id
user_id = request.user_id
team_name = f"{user_id}_{chat_id}"
try:
messages = [
{"role": "system", "content": SYSTEM_PROMPT.format(task_name=message)}
]
completion = await aclient.chat.completions.create(
model=azure_gpt35_model,
messages=messages,
tools=TOOLS,
tool_choice={
"type": "function",
"function": {"name": "generate_chat_name"},
},
) # type: ignore
response_message = completion.choices[0].message
tool_calls = response_message.tool_calls
if tool_calls:
for tool_call in tool_calls:
function_name = tool_call.function.name
function_args = json.loads(tool_call.function.arguments)
if function_name == "generate_chat_name":
return await generate_chat_name( # type: ignore[return-value]
team_name=team_name,
chat_id=chat_id,
**function_args,
)
except Exception:
logging.error("Unable to generate chat name: ", exc_info=True)
default_response = {
"team_status": "inprogress",
"team_name": team_name,
"team_id": chat_id,
"customer_brief": "Some customer brief",
"conversation_name": message,
}
return default_response