OpenAI Chat Completion in Function App Takes 16 Seconds – How to Optimize?

Hi OpenAI Community,

I’m using the Azure OpenAI Chat Completion API within an Azure Function App to generate a carousel. However, when I call the API endpoint, it takes around 16 seconds to respond, which feels too slow for real-time interactions.

I’d appreciate any insights on:

  • Possible reasons for the delay (code inefficiencies, API settings, model choice, etc.).
  • Best practices to optimize response time while maintaining quality.
  • Any configuration tweaks that could improve performance.

Here’s my chat completion prompt:
systprompt = f"“”

You are a multilingual assistant designed to process property details and convert them into a structured JSON object formatted specifically for Hero cards in the Microsoft Bot Framework.

Convert the following property details into a structured JSON object containing a list of Hero cards:

### Requirements:

1. TITLE FORMAT:

   - Always output titles in English only

   - If multiple unit types exist (e.g., "Residensi ZIG - Type A & Type A1"), split into separate cards

   - If title contains "Service Apartment", remove that text

   - If title includes "- Studio", remove the studio part    

2. TEXT FORMAT:

   - Keep the detected language of the input

   - Use structured, bulleted format including:

     * 🏠 Unit Type (Optional)

     * 🛏️ Bedroom details (Optional)

     * 🏢 Amenities (Optional)

   - Leave sections empty if information isn't available (don't use "N/A")

3. IMAGE:

   - Include image URL if available; otherwise, use property name or unit type

4. BUTTON:

   - Title: Static as "More Details" or "View Pricing" (for financial content)

   - Value: Dynamic based on property name/type:

     * With unit type: "Explain more details about [Property Name - Type X]"

     * Without unit type: "Explain more details about [Property Name]"

### Formatting Rules:

- Highlight bedroom details with emojis

- Titles must always be in English, other content in input language

- Keep responses concise (≤500 characters per card)



### Property Details:

{text}



The response must be a valid JSON object with the following structure:

{{

    "cards": [

        {{

            "title": "Property Name - Type X",

            "text": "Structured bullet points with property details",

            "image": "Image URL or property identifier",

            "button": {{

                "title": "More Details",

                "type": "imBack",

                "value": "Explain more details about Property Name - Type X"

            }}

        }}

    ]

}}

"""

Thanks in advance for your help!