Skip to content

Commit 6eb0fa6

Browse files
updated section generate API for 429 error
1 parent 8d2a208 commit 6eb0fa6

File tree

1 file changed

+48
-26
lines changed

1 file changed

+48
-26
lines changed

app.py

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -821,19 +821,29 @@ async def ensure_cosmos():
821821
async def generate_section_content():
822822
request_json = await request.get_json()
823823
try:
824-
# verify that section title and section description are provided
825-
if "sectionTitle" not in request_json:
826-
return jsonify({"error": "sectionTitle is required"}), 400
827-
828-
if "sectionDescription" not in request_json:
829-
return jsonify({"error": "sectionDescription is required"}), 400
830-
824+
if not request_json or not isinstance(request_json, list):
825+
return jsonify({"error": "Request must be a non-empty list."}), 400
826+
827+
if (
828+
"sectionTitle" not in request_json[0]
829+
or "sectionDescription" not in request_json[0]
830+
):
831+
return (
832+
jsonify(
833+
{
834+
"error": "Each item in request must contain 'sectionTitle' and 'sectionDescription'."
835+
}
836+
),
837+
400,
838+
)
839+
831840
content = await generate_section_content(request_json, request.headers)
832841
return jsonify({"section_content": content}), 200
833842
except Exception as e:
834843
logging.exception("Exception in /section/generate")
835844
return jsonify({"error": str(e)}), 500
836845

846+
837847
@bp.route("/document/<filepath>")
838848
async def get_document(filepath):
839849
try:
@@ -843,6 +853,7 @@ async def get_document(filepath):
843853
logging.exception("Exception in /document/<filepath>")
844854
return jsonify({"error": str(e)}), 500
845855

856+
846857
async def generate_title(conversation_messages):
847858
## make sure the messages are sorted by _ts descending
848859
title_prompt = app_settings.azure_openai.title_prompt
@@ -864,35 +875,45 @@ async def generate_title(conversation_messages):
864875
except Exception as e:
865876
return messages[-2]["content"]
866877

867-
async def generate_section_content(request_body, request_headers):
868-
prompt = f"""{app_settings.azure_openai.generate_section_content_prompt}
869-
870-
Section Title: {request_body['sectionTitle']}
871-
Section Description: {request_body['sectionDescription']}
872-
"""
873878

874-
messages = [
875-
{
876-
"role": "system",
877-
"content": app_settings.azure_openai.system_message
878-
}
879-
]
880-
messages.append({"role": "user", "content": prompt})
881-
882-
request_body['messages'] = messages
883-
model_args = prepare_model_args(request_body, request_headers)
879+
async def generate_section_content(request_body, request_headers):
880+
user_prompt = f"{app_settings.azure_openai.generate_section_content_prompt}\n\n"
881+
for section in request_body:
882+
user_prompt += f"Section Title: {section['sectionTitle']}\nSection Description: {section['sectionDescription']}\n\n"
884883

884+
messages = [{"role": "system", "content": app_settings.azure_openai.system_message}]
885+
messages.append({"role": "user", "content": user_prompt})
886+
model_args = prepare_model_args({"messages": messages}, request_headers)
885887
try:
886888
azure_openai_client = init_openai_client()
887-
raw_response = await azure_openai_client.chat.completions.with_raw_response.create(**model_args)
889+
raw_response = (
890+
await azure_openai_client.chat.completions.with_raw_response.create(
891+
**model_args
892+
)
893+
)
888894
response = raw_response.parse()
889895

896+
response_content = response.choices[0].message.content
897+
if "The requested information is not available" in response_content:
898+
return response_content
899+
900+
# Split the response content into individual sections
901+
response_content = response_content.strip().split("\n\n")
902+
results = []
903+
for i, section in enumerate(request_body):
904+
results.append(
905+
{
906+
"sectionTitle": section["sectionTitle"],
907+
"content": response_content[i],
908+
}
909+
)
910+
return results
911+
890912
except Exception as e:
891913
logging.exception("Exception in send_chat_request")
892914
raise e
893915

894-
return response.choices[0].message.content
895-
916+
896917
def retrieve_document(filepath):
897918
try:
898919
search_client = init_ai_search_client()
@@ -907,4 +928,5 @@ def retrieve_document(filepath):
907928
logging.exception("Exception in retrieve_document")
908929
raise e
909930

931+
910932
app = create_app()

0 commit comments

Comments
 (0)