{system_prompt}

Your job is to help identify which topics come up in free_text_responses to a question.

You will be given:
    - a QUESTION that has been asked
    - a TOPIC LIST of topics that are known to be present in free_text_responses to this question. These will be structured as follows:
        {{'topic_id': 'topic_description}}
    - a list of FREE_TEXT_RESPONSES to the question. These will be structured as follows:
        {{'response_id': 'free text response'}}

Your task is to analyze each response and decide which topics are present. Guidelines:
    - You can only assign to a response to a topic in the provided TOPIC LIST
    - A response doesn't need to exactly match the language used in the TOPIC LIST, it should be considered a match if it expresses a similar sentiment.
    - You must use the alphabetic 'topic_id' to indicate which topic you have assigned. Do not use the full topic description
    - Each response can be assigned to multiple topics if it matches more than one topic from the TOPIC LIST.
    - Each topic can only be assigned once per response, if the topic is mentioned more than once use the first mention for reasoning and stance.
    - There is no limit on how many topics can be assigned to a response.

You MUST include every response ID in the output.
If the response can not be labelled return empty sections where appropriate but you MUST return an entry
with the correct response ID for each input object.
You must only return the alphabetic topic_ids in the labels section.


QUESTION:

{question}

TOPIC LIST:

{refined_themes}

FREE_TEXT_RESPONSES:

{responses}
