mominah commited on
Commit
311764c
·
verified ·
1 Parent(s): fbe1018

Update routes.py

Browse files
Files changed (1) hide show
  1. routes.py +19 -13
routes.py CHANGED
@@ -1,7 +1,7 @@
1
  import os
2
  import shutil
3
  import tempfile
4
- from fastapi import APIRouter, HTTPException, UploadFile, File, Form
5
  from fastapi.encoders import jsonable_encoder
6
  from bson import ObjectId
7
  from models import InitializeBotResponse, NewChatResponse, QueryRequest, QueryResponse
@@ -13,12 +13,14 @@ router = APIRouter()
13
  trainer = get_trainer()
14
 
15
  @router.post("/initialize_bot", response_model=InitializeBotResponse)
16
- def initialize_bot():
17
  """
18
- Initializes a bot and returns its bot_id.
 
19
  """
20
  try:
21
  bot_id = trainer.initialize_bot_id()
 
22
  return InitializeBotResponse(bot_id=bot_id)
23
  except Exception as e:
24
  raise HTTPException(status_code=500, detail=str(e))
@@ -46,14 +48,18 @@ async def upload_document(bot_id: str = Form(...), file: UploadFile = File(...))
46
  raise HTTPException(status_code=500, detail=str(e))
47
 
48
 
49
- @router.post("/create_bot")
50
- def create_bot(bot_id: str = Form(...), prompt_type: str = Form(...)):
51
  """
52
- Finalizes the creation (build) of the bot using the specified prompt type.
53
- This endpoint assigns the appropriate custom prompt template before finalizing bot creation.
 
54
  """
55
  try:
56
- # Determine the appropriate prompt template based on the provided prompt_type.
 
 
 
57
  if prompt_type == "university":
58
  prompt_template = PromptTemplates.get_university_chatbot_prompt()
59
  elif prompt_type == "quiz_solving":
@@ -75,10 +81,9 @@ def create_bot(bot_id: str = Form(...), prompt_type: str = Form(...)):
75
  elif prompt_type == "check_paper":
76
  prompt_template = PromptTemplates.get_check_paper_prompt()
77
  else:
78
- # Default prompt template if prompt_type is not recognized.
79
  prompt_template = PromptTemplates.get_quiz_solving_prompt()
80
-
81
- # Create the bot using the specified bot_id and prompt template.
82
  trainer.create_bot(bot_id, prompt_template)
83
  return {"message": f"Bot {bot_id} created successfully."}
84
  except Exception as e:
@@ -101,7 +106,7 @@ def new_chat(bot_id: str):
101
  def send_query(query_request: QueryRequest):
102
  """
103
  Processes a query and returns the bot's response along with any web sources.
104
- The QueryRequest model must include the bot_id, chat_id, and query.
105
  """
106
  try:
107
  response, web_sources = trainer.get_response(
@@ -125,9 +130,10 @@ def list_chats(bot_id: str):
125
 
126
 
127
  @router.get("/chat_history/{chat_id}")
128
- def chat_history(chat_id: str):
129
  """
130
  Returns the chat history for a given chat session.
 
131
  ObjectId instances in the history are converted to strings.
132
  """
133
  try:
 
1
  import os
2
  import shutil
3
  import tempfile
4
+ from fastapi import APIRouter, HTTPException, UploadFile, File, Form, Query
5
  from fastapi.encoders import jsonable_encoder
6
  from bson import ObjectId
7
  from models import InitializeBotResponse, NewChatResponse, QueryRequest, QueryResponse
 
13
  trainer = get_trainer()
14
 
15
  @router.post("/initialize_bot", response_model=InitializeBotResponse)
16
+ def initialize_bot(prompt_type: str = Query(None)):
17
  """
18
+ Initializes a new bot and returns its bot_id.
19
+ Accepts an optional 'prompt_type' query parameter (provided by the frontend).
20
  """
21
  try:
22
  bot_id = trainer.initialize_bot_id()
23
+ # Optionally, you might want to store the prompt_type with the bot record.
24
  return InitializeBotResponse(bot_id=bot_id)
25
  except Exception as e:
26
  raise HTTPException(status_code=500, detail=str(e))
 
48
  raise HTTPException(status_code=500, detail=str(e))
49
 
50
 
51
+ @router.post("/create_bot/{bot_id}")
52
+ def create_bot(bot_id: str, prompt_type: str = Query(None)):
53
  """
54
+ Finalizes the creation (build) of the bot identified by bot_id.
55
+ Uses the provided (or default) prompt_type to determine the custom prompt template.
56
+ If no prompt_type is provided, it defaults to "quiz_solving".
57
  """
58
  try:
59
+ if prompt_type is None:
60
+ prompt_type = "quiz_solving"
61
+
62
+ # Determine the appropriate prompt template.
63
  if prompt_type == "university":
64
  prompt_template = PromptTemplates.get_university_chatbot_prompt()
65
  elif prompt_type == "quiz_solving":
 
81
  elif prompt_type == "check_paper":
82
  prompt_template = PromptTemplates.get_check_paper_prompt()
83
  else:
 
84
  prompt_template = PromptTemplates.get_quiz_solving_prompt()
85
+
86
+ # Create (build) the bot using the specified bot_id and prompt template.
87
  trainer.create_bot(bot_id, prompt_template)
88
  return {"message": f"Bot {bot_id} created successfully."}
89
  except Exception as e:
 
106
  def send_query(query_request: QueryRequest):
107
  """
108
  Processes a query and returns the bot's response along with any web sources.
109
+ The request must include bot_id, chat_id, and the query text.
110
  """
111
  try:
112
  response, web_sources = trainer.get_response(
 
130
 
131
 
132
  @router.get("/chat_history/{chat_id}")
133
+ def chat_history(chat_id: str, bot_id: str = Query(None)):
134
  """
135
  Returns the chat history for a given chat session.
136
+ The bot_id can be provided as a query parameter (if needed).
137
  ObjectId instances in the history are converted to strings.
138
  """
139
  try: