This commit is contained in:
2026-01-11 09:12:37 -05:00
parent 1a026f76a1
commit 12eb110313
25 changed files with 1345 additions and 83 deletions

View File

@@ -1,6 +1,6 @@
import datetime
from quart import Blueprint, jsonify
from quart import Blueprint, jsonify, request
from quart_jwt_extended import (
get_jwt_identity,
jwt_refresh_token_required,
@@ -8,7 +8,13 @@ from quart_jwt_extended import (
import blueprints.users.models
from .logic import rename_conversation
from .agents import main_agent
from .logic import (
add_message_to_conversation,
get_conversation_by_id,
get_conversation_transcript,
rename_conversation,
)
from .models import (
Conversation,
PydConversation,
@@ -20,6 +26,51 @@ conversation_blueprint = Blueprint(
)
@conversation_blueprint.post("/query")
@jwt_refresh_token_required
async def query():
current_user_uuid = get_jwt_identity()
user = await blueprints.users.models.User.get(id=current_user_uuid)
data = await request.get_json()
query = data.get("query")
conversation_id = data.get("conversation_id")
conversation = await get_conversation_by_id(conversation_id)
await conversation.fetch_related("messages")
await add_message_to_conversation(
conversation=conversation,
message=query,
speaker="user",
user=user,
)
transcript = await get_conversation_transcript(user=user, conversation=conversation)
transcript_prompt = f"Here is the message transcript thus far {transcript}."
prompt = f"""Answer the user in as if you were a cat named Simba. Don't act too catlike. Be assertive.
{transcript_prompt if len(transcript) > 0 else ""}
Respond to this prompt: {query}"""
payload = {
"messages": [
{
"role": "system",
"content": "You are a helpful cat assistant named Simba that understands veterinary terms. When there are questions to you specifically, they are referring to Simba the cat. Answer the user in as if you were a cat named Simba. Don't act too catlike. Be assertive.\n\nIMPORTANT: When users ask factual questions about Simba's health, medical history, veterinary visits, medications, weight, or any information that would be in documents, you MUST use the simba_search tool to retrieve accurate information before answering. Do not rely on general knowledge - always search the documents for factual questions.",
},
{"role": "user", "content": prompt},
]
}
response = await main_agent.ainvoke(payload)
message = response.get("messages", [])[-1].content
await add_message_to_conversation(
conversation=conversation,
message=message,
speaker="simba",
user=user,
)
return jsonify({"response": message})
@conversation_blueprint.route("/<conversation_id>")
@jwt_refresh_token_required
async def get_conversation(conversation_id: str):