From 2d23d7de536f3cb5111a708dfae7e5ed9cdfc4a5 Mon Sep 17 00:00:00 2001 From: Dina Boshnaq <90972733+16dina@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:22:44 +0200 Subject: [PATCH] Slightly edited notebook that matches the streamlit app's code --- notebooks/concepts_based_solution_2.ipynb | 558 ++++++++++++++++++++++ 1 file changed, 558 insertions(+) create mode 100644 notebooks/concepts_based_solution_2.ipynb diff --git a/notebooks/concepts_based_solution_2.ipynb b/notebooks/concepts_based_solution_2.ipynb new file mode 100644 index 0000000..07e19a9 --- /dev/null +++ b/notebooks/concepts_based_solution_2.ipynb @@ -0,0 +1,558 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Note: \n", + "This notebook is the same as concepts_based_solution.ipynb but with slightly different prompts for the answer compilation part, and using gpt-3.5-turbo for query generation. This notebook matches the code used in the StreamLit app.\n", + "\n", + "# ChatGent source code\n", + "\n", + "This notebook contains the the code of each step in the workflow designed to generate responses to users' questions in ChatGent. The code is accompanied with brief explanation as well as possible future improvements here and there." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing necessary libraries & defining variables\n", + "\n", + "The dataset worked with for this project is only the Decisions dataset. Decisions made by the city of Gent are stored in a SparQL endpoint from the previous PROBE project by District09. Example questions and queries are made in a json, as well as labels of decisions and the labels' URIs." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import requests\n", + "from openai import OpenAI\n", + "import re\n", + "from datetime import date\n", + "\n", + "# Define the SparQL endpoint\n", + "endpoint_url = \"https://probe.stad.gent/sparql\"\n", + "\n", + "# Just to have the AI double check its answer for \"when/wanneer\" questions\n", + "today = date.today()\n", + "\n", + "# Define the API key as an environment variable and this should work\n", + "client = OpenAI()\n", + "\n", + "# Loading the example questions and queries to be used as context in the prompt for generating queries\n", + "with open('../json_files/questions_and_queries.json', 'r', encoding='utf-8') as file:\n", + " example_data = json.load(file)\n", + "\n", + "# Loading the annotations of decisions: labels and their URIs\n", + "with open('../json_files/annotations.json', 'r', encoding='utf-8') as file:\n", + " label_data = json.load(file)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function to generate SparQL query\n", + "The following function uses gpt-3.5-turbo to translate the user's question to a SparQL query. Several instructions are given in the prompt and examples are also provided. This has proven to help the AI generate better and more correct/accurate queries." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_sparql_query(user_question, label_data, examples_data):\n", + " concepts_and_labels = \"\\n\".join(\n", + " f\"URI of Label: {pair['uri']}\\nLabel: {pair['label']}\\n\" for pair in label_data\n", + " )\n", + " example_queries = \"\\n\".join(\n", + " f\"User Question: {pair['user_question']}\\nSPARQL Query: {pair['sparql_query']}\\n\" for pair in examples_data\n", + " )\n", + "\n", + " prompt = f\"\"\"\n", + "\n", + " GIVE ONLY THE QUERY AS AN ANSWER TO THE FOLLOWING PROMPT:\n", + "\n", + " The following are all the labels for the decisions in the decisions dataset and their URIs:\n", + "\n", + " {concepts_and_labels}\n", + "\n", + " Based on the user's question: {user_question}, go through all the labels then choose all possible labels that best matches the question's theme and context.\n", + "\n", + " NEXT STEP:\n", + "\n", + " The following are examples of user questions in Dutch and their corresponding SPARQL queries:\n", + "\n", + " {example_queries}\n", + "\n", + " Based on the examples above and the URIs of the chosen labels, generate a SPARQL query for the following user question:\n", + "\n", + " User Question: {user_question}\n", + " SPARQL Query:\n", + "\n", + " But please make sure to use the URIs of the chosen labels in the \"?annotation oa:hasBody\" part of the query like in the examples. If there is more than one label chosen query for them using the same structure in the second example query in {example_queries}. This utilizes VALUES.\n", + " \n", + " If the user doesn't set a limit to the number of decisions they want to see, limit them to 3.\n", + "\n", + " Always choose the most recent decision (by ordering on publication date \"eli:date_publication\") unless prompted otherwise by the user.\n", + " \n", + " Don't add '`' as you wish.\n", + "\n", + " Then after filtering on label, add a filter for the title or description or motivering with keywords that you extract from the question. (NOTE: Do not use generic words that apply to all decisions about Gent, like 'Gent', as a keyword).\n", + "\n", + " \"\"\"\n", + " response = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo\",\n", + " #model=\"gpt-4o-mini\",\n", + " messages=[\n", + " {\"role\": \"system\", \"content\": \"You are a helpful assistant that generates SPARQL queries to be run on a SPARQL endpoint containing data about decisions of the city of Gent based on user questions and labels of decisions related to their questions. Your language is Dutch.\"},\n", + " {\"role\": \"user\", \"content\": prompt}\n", + " ],\n", + " max_tokens=1000,\n", + " temperature=0\n", + " )\n", + "\n", + " return response" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Checking/Re-writing SparQL query\n", + "In some cases, there might be decisions related to the user's question as in they fall under its category and could be useful for the user, but get filtered out when querying for decisions within this theme with certain keywords. This is because keyword matching is literal. For example, if the query is looking for the keyword \"zwembad\" and a decision is about swimming but doesn't contain that word specifically (instead it has \"zwemmen\"), it will filter out that decision. Another scenario is if the AI uses generic words that apply to any decision as keywords, like 'gent'. Although it's instructed to not do so in the prompt, just in case, we have the keyword matching removed from the query when no results are found. This way we only stick to filtering on labels of decisions.\n", + "\n", + "The following function has an AI model remove any keyword filtering and give back a proper SparQL query." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def check_sparql_query(query):\n", + "\n", + " prompt = f\"\"\"\n", + " If the query generated {query} contains looking for keywords, generate the same SPARQL query but remove the keywords filtering.\n", + " Don't add '`' to the query as you wish.\n", + " \"\"\"\n", + " response_2 = client.chat.completions.create(\n", + " model=\"gpt-3.5-turbo\",\n", + " #model=\"gpt-4o-mini\",\n", + " messages=[\n", + " {\"role\": \"system\", \"content\": \"You are a SPARQL query refiner.\"},\n", + " {\"role\": \"user\", \"content\": prompt}\n", + " ],\n", + " max_tokens=1000,\n", + " temperature=0\n", + " )\n", + "\n", + " return response_2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Function to run the query\n", + "\n", + "The following function is used to run the query on the SparQL endpoint using an http request. It returns a list of all queried decisions." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def run_query(query):\n", + " headers = {\n", + " \"Accept\": \"application/sparql-results+json\"\n", + " }\n", + " params = {\n", + " \"query\": query\n", + " }\n", + "\n", + " response = requests.get(endpoint_url, headers=headers, params=params)\n", + " results = None\n", + " if response.status_code == 200:\n", + " results = response.json()\n", + " #print(f\"Results for question '{user_question}':\", results)\n", + " else:\n", + " #print(f\"Failed to execute query for question '{user_question}':\", response.status_code)\n", + " return []\n", + " \n", + " if results is None:\n", + " return []\n", + " \n", + " results_content = results['results']['bindings']\n", + "\n", + " cleaned_decisions = []\n", + "\n", + " for decision in results_content:\n", + " cleaned_decision = {}\n", + " for key, detail in decision.items():\n", + " # Extract the value and remove any \\n or extra spaces\n", + " cleaned_value = re.sub(r'\\s+', ' ', detail['value']).strip()\n", + " cleaned_decision[key] = cleaned_value\n", + " cleaned_decisions.append(cleaned_decision)\n", + "\n", + " return cleaned_decisions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Running the main program\n", + "A test user question is defined, then the function to generate a SparQL query is run using that question.\n", + "The user question and SparQL query are printed out." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "User Question: Waar kan ik gaan zwemmen?\n", + "Generated SPARQL Query: ChatCompletion(id='chatcmpl-9rnPKIl2bo9PNXErraqBJlw8S4Rsv', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content=\"PREFIX dct: \\nPREFIX prov: \\nPREFIX besluit: \\nPREFIX eli: \\nPREFIX oa: \\nSELECT ?annotation ?target ?title ?motivering (GROUP_CONCAT(?value; separator=', ') AS ?values) ?description ?date ?derivedFrom\\nWHERE {\\n ?annotation oa:hasBody ;\\n oa:hasTarget ?target .\\n ?target eli:title ?title ;\\n besluit:motivering ?motivering ;\\n prov:value ?value ;\\n eli:description ?description ;\\n eli:date_publication ?date ;\\n prov:wasDerivedFrom ?derivedFrom .\\n FILTER (CONTAINS(LCASE(?title), 'zwemmen') || CONTAINS(LCASE(?description), 'zwemmen'))\\n}\\nORDER BY DESC(?date)\\nLIMIT 3\", role='assistant', function_call=None, tool_calls=None))], created=1722608334, model='gpt-3.5-turbo-0125', object='chat.completion', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=235, prompt_tokens=10333, total_tokens=10568))\n" + ] + } + ], + "source": [ + "# Example user question\n", + "user_question = \"Waar kan ik gaan zwemmen?\"\n", + "# user_question = \"Where can I go swimming?\"\n", + "\n", + "# Generate SPARQL query for the example user question\n", + "sparql_query = generate_sparql_query(user_question, label_data=label_data, examples_data=example_data)\n", + "print(f\"User Question: {user_question}\")\n", + "print(f\"Generated SPARQL Query: {sparql_query}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code snippet is just to clean the resulted query from any potential extra text generated by the AI before the query, and to remove new lines." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "query_content = sparql_query.choices[0].message.content\n", + "\n", + "prefix_position = query_content.find(\"PREFIX\")\n", + "if prefix_position != -1:\n", + " query_content = query_content[prefix_position:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the example we chose, there weren't any decisions retrieved using the generated SparQL query which had contained filtering on keywords i.e. \"FILTER (CONTAINS(LCASE(?title), 'middelbare school')\"." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'values': 'Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen. , Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.', 'title': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen', 'target': 'https://data.gent.be/id/besluiten/22.0518.8364.2858', 'motivering': 'Motivering Wat gaat aan deze beslissing vooraf Tijdens het weekend van 14-15 mei was zwemmen aan de Blaarmeersen ondanks de hoge temperaturen niet mogelijk. Het bijzonder goede weer was nochtans lang vooraf aangekondigd. De politie trad zoals in de pers werd gerapporteerd op tegen mensen die ondanks het zwemverbod toch het water in gingen. Tijdens de afgelopen commissie AFB antwoordde de burgemeester op mijn vraag ter zake dat zwemmen nog niet aangewezen was omwille van de watertemperatuur, doordat er geen redders beschikbaar zijn en omdat het zwemseizoen aan de Blaarmeersen pas op 25 mei start. Een aanpassing hiervan was niet mogelijk. Vorig jaar werd het stadsbestuur met een gelijkaardige situatie geconfronteerd: tijdens het naseizoen in september was het prachtig warm weer, maar zwemmen was niet mogelijk wegens het niet voorzien van redders. Dit pijnpunt werd ondertussen aangepakt door voor komende zomer tijdens het naseizoen redders te voorzien tot de derde zondag van september (19/09 in 2022 - zie ook de presentatie tijdens de voorbije commissie VPP). Waarom wordt deze beslissing genomen Weersomstandigheden zijn altijd wisselend, maar de trend van de afgelopen jaren is dat er ook tijdens het voorseizoen (eind april, begin mei) al warme dagen en weken kunnen voorkomen, die voldoende lang op voorhand met relatief grote zekerheid voorspeld worden. De strandzone aan de Blaarmeersen is voor veel Gentenaars een favoriete zwemplek. Het is dan ook belangrijk dat zwemmen er zo vaak als mogelijk – en vanzelfsprekend altijd in veilige omstandigheden – kan. Dat er in onze stad een vraag is naar meer buiten zwemmen blijkt bijvoorbeeld ook aan de recente Dobberdag-protestactie ten voordele van zwemmen aan het Houtdok.Op andere plaatsen in Vlaanderen is buiten zwemmen soms wel al vroeger mogelijk en toegelaten, bijvoorbeeld aan zee in Knokke-Heist of dichter bij huis in Nieuwdonk (beide vanaf 7 mei, tijdens de weekends en in het laatste geval ook op woensdag). De zwemvijver in De Ster in Sint-Niklaas opent al op 1 mei. Wat daar kan, moet toch ook kunnen in een stad als Gent. Redders blijken ondertussen ook in onze stad nu al beschikbaar te zijn om de politiecontroles te assisteren.Daarom, op vraag van de N-VA-fractie, Indiener(s) Anneleen Van Bossuyt Tijdstip van indienen di 17/05/2022 - 14:09', 'description': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/5e603b03-6254-4bd5-8380-52383a0bf1d7'}, {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”', 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376', 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12', 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}, {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”', 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376', 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12', 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}]\n" + ] + } + ], + "source": [ + "cleaned_decisions = run_query(query_content)\n", + "print(cleaned_decisions)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'values': 'Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen. , Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.',\n", + " 'title': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0518.8364.2858',\n", + " 'motivering': 'Motivering Wat gaat aan deze beslissing vooraf Tijdens het weekend van 14-15 mei was zwemmen aan de Blaarmeersen ondanks de hoge temperaturen niet mogelijk. Het bijzonder goede weer was nochtans lang vooraf aangekondigd. De politie trad zoals in de pers werd gerapporteerd op tegen mensen die ondanks het zwemverbod toch het water in gingen. Tijdens de afgelopen commissie AFB antwoordde de burgemeester op mijn vraag ter zake dat zwemmen nog niet aangewezen was omwille van de watertemperatuur, doordat er geen redders beschikbaar zijn en omdat het zwemseizoen aan de Blaarmeersen pas op 25 mei start. Een aanpassing hiervan was niet mogelijk. Vorig jaar werd het stadsbestuur met een gelijkaardige situatie geconfronteerd: tijdens het naseizoen in september was het prachtig warm weer, maar zwemmen was niet mogelijk wegens het niet voorzien van redders. Dit pijnpunt werd ondertussen aangepakt door voor komende zomer tijdens het naseizoen redders te voorzien tot de derde zondag van september (19/09 in 2022 - zie ook de presentatie tijdens de voorbije commissie VPP). Waarom wordt deze beslissing genomen Weersomstandigheden zijn altijd wisselend, maar de trend van de afgelopen jaren is dat er ook tijdens het voorseizoen (eind april, begin mei) al warme dagen en weken kunnen voorkomen, die voldoende lang op voorhand met relatief grote zekerheid voorspeld worden. De strandzone aan de Blaarmeersen is voor veel Gentenaars een favoriete zwemplek. Het is dan ook belangrijk dat zwemmen er zo vaak als mogelijk – en vanzelfsprekend altijd in veilige omstandigheden – kan. Dat er in onze stad een vraag is naar meer buiten zwemmen blijkt bijvoorbeeld ook aan de recente Dobberdag-protestactie ten voordele van zwemmen aan het Houtdok.Op andere plaatsen in Vlaanderen is buiten zwemmen soms wel al vroeger mogelijk en toegelaten, bijvoorbeeld aan zee in Knokke-Heist of dichter bij huis in Nieuwdonk (beide vanaf 7 mei, tijdens de weekends en in het laatste geval ook op woensdag). De zwemvijver in De Ster in Sint-Niklaas opent al op 1 mei. Wat daar kan, moet toch ook kunnen in een stad als Gent. Redders blijken ondertussen ook in onze stad nu al beschikbaar te zijn om de politiecontroles te assisteren.Daarom, op vraag van de N-VA-fractie, Indiener(s) Anneleen Van Bossuyt Tijdstip van indienen di 17/05/2022 - 14:09',\n", + " 'description': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/5e603b03-6254-4bd5-8380-52383a0bf1d7'},\n", + " {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”',\n", + " 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376',\n", + " 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12',\n", + " 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'},\n", + " {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”',\n", + " 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376',\n", + " 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12',\n", + " 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cleaned_decisions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The retrieved decisions list is checked. If it's empty, the check_sparql_query function is called. It will remove an filtering on keywords and give back a new query. We run the new query and print the results list which in this time is not empty." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "if not cleaned_decisions:\n", + " sparql_query_2 = check_sparql_query(query_content)\n", + " query_content_2 = sparql_query_2.choices[0].message.content\n", + " prefix_position = query_content.find(\"PREFIX\")\n", + " if prefix_position != -1:\n", + " query_content_2 = query_content_2[prefix_position:]\n", + "\n", + " print(\"SECOND SPARQL:\", query_content_2)\n", + "\n", + " cleaned_decisions = run_query(query_content_2)\n", + " print(\"AGAIN:\", cleaned_decisions)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'values': 'Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen. , Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.',\n", + " 'title': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0518.8364.2858',\n", + " 'motivering': 'Motivering Wat gaat aan deze beslissing vooraf Tijdens het weekend van 14-15 mei was zwemmen aan de Blaarmeersen ondanks de hoge temperaturen niet mogelijk. Het bijzonder goede weer was nochtans lang vooraf aangekondigd. De politie trad zoals in de pers werd gerapporteerd op tegen mensen die ondanks het zwemverbod toch het water in gingen. Tijdens de afgelopen commissie AFB antwoordde de burgemeester op mijn vraag ter zake dat zwemmen nog niet aangewezen was omwille van de watertemperatuur, doordat er geen redders beschikbaar zijn en omdat het zwemseizoen aan de Blaarmeersen pas op 25 mei start. Een aanpassing hiervan was niet mogelijk. Vorig jaar werd het stadsbestuur met een gelijkaardige situatie geconfronteerd: tijdens het naseizoen in september was het prachtig warm weer, maar zwemmen was niet mogelijk wegens het niet voorzien van redders. Dit pijnpunt werd ondertussen aangepakt door voor komende zomer tijdens het naseizoen redders te voorzien tot de derde zondag van september (19/09 in 2022 - zie ook de presentatie tijdens de voorbije commissie VPP). Waarom wordt deze beslissing genomen Weersomstandigheden zijn altijd wisselend, maar de trend van de afgelopen jaren is dat er ook tijdens het voorseizoen (eind april, begin mei) al warme dagen en weken kunnen voorkomen, die voldoende lang op voorhand met relatief grote zekerheid voorspeld worden. De strandzone aan de Blaarmeersen is voor veel Gentenaars een favoriete zwemplek. Het is dan ook belangrijk dat zwemmen er zo vaak als mogelijk – en vanzelfsprekend altijd in veilige omstandigheden – kan. Dat er in onze stad een vraag is naar meer buiten zwemmen blijkt bijvoorbeeld ook aan de recente Dobberdag-protestactie ten voordele van zwemmen aan het Houtdok.Op andere plaatsen in Vlaanderen is buiten zwemmen soms wel al vroeger mogelijk en toegelaten, bijvoorbeeld aan zee in Knokke-Heist of dichter bij huis in Nieuwdonk (beide vanaf 7 mei, tijdens de weekends en in het laatste geval ook op woensdag). De zwemvijver in De Ster in Sint-Niklaas opent al op 1 mei. Wat daar kan, moet toch ook kunnen in een stad als Gent. Redders blijken ondertussen ook in onze stad nu al beschikbaar te zijn om de politiecontroles te assisteren.Daarom, op vraag van de N-VA-fractie, Indiener(s) Anneleen Van Bossuyt Tijdstip van indienen di 17/05/2022 - 14:09',\n", + " 'description': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/5e603b03-6254-4bd5-8380-52383a0bf1d7'},\n", + " {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”',\n", + " 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376',\n", + " 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12',\n", + " 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'},\n", + " {'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”',\n", + " 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376',\n", + " 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12',\n", + " 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".',\n", + " 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen',\n", + " 'date': '2022-05-25',\n", + " 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cleaned_decisions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to maintain transparency with the citizens, we provide them with links to the decisions used to generate the answer, these are saved as resources below:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'values': 'Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen. , Artikel 1 De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.', 'title': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen', 'target': 'https://data.gent.be/id/besluiten/22.0518.8364.2858', 'motivering': 'Motivering Wat gaat aan deze beslissing vooraf Tijdens het weekend van 14-15 mei was zwemmen aan de Blaarmeersen ondanks de hoge temperaturen niet mogelijk. Het bijzonder goede weer was nochtans lang vooraf aangekondigd. De politie trad zoals in de pers werd gerapporteerd op tegen mensen die ondanks het zwemverbod toch het water in gingen. Tijdens de afgelopen commissie AFB antwoordde de burgemeester op mijn vraag ter zake dat zwemmen nog niet aangewezen was omwille van de watertemperatuur, doordat er geen redders beschikbaar zijn en omdat het zwemseizoen aan de Blaarmeersen pas op 25 mei start. Een aanpassing hiervan was niet mogelijk. Vorig jaar werd het stadsbestuur met een gelijkaardige situatie geconfronteerd: tijdens het naseizoen in september was het prachtig warm weer, maar zwemmen was niet mogelijk wegens het niet voorzien van redders. Dit pijnpunt werd ondertussen aangepakt door voor komende zomer tijdens het naseizoen redders te voorzien tot de derde zondag van september (19/09 in 2022 - zie ook de presentatie tijdens de voorbije commissie VPP). Waarom wordt deze beslissing genomen Weersomstandigheden zijn altijd wisselend, maar de trend van de afgelopen jaren is dat er ook tijdens het voorseizoen (eind april, begin mei) al warme dagen en weken kunnen voorkomen, die voldoende lang op voorhand met relatief grote zekerheid voorspeld worden. De strandzone aan de Blaarmeersen is voor veel Gentenaars een favoriete zwemplek. Het is dan ook belangrijk dat zwemmen er zo vaak als mogelijk – en vanzelfsprekend altijd in veilige omstandigheden – kan. Dat er in onze stad een vraag is naar meer buiten zwemmen blijkt bijvoorbeeld ook aan de recente Dobberdag-protestactie ten voordele van zwemmen aan het Houtdok.Op andere plaatsen in Vlaanderen is buiten zwemmen soms wel al vroeger mogelijk en toegelaten, bijvoorbeeld aan zee in Knokke-Heist of dichter bij huis in Nieuwdonk (beide vanaf 7 mei, tijdens de weekends en in het laatste geval ook op woensdag). De zwemvijver in De Ster in Sint-Niklaas opent al op 1 mei. Wat daar kan, moet toch ook kunnen in een stad als Gent. Redders blijken ondertussen ook in onze stad nu al beschikbaar te zijn om de politiecontroles te assisteren.Daarom, op vraag van de N-VA-fractie, Indiener(s) Anneleen Van Bossuyt Tijdstip van indienen di 17/05/2022 - 14:09', 'description': '2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/5e603b03-6254-4bd5-8380-52383a0bf1d7'}\n", + "{'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”', 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376', 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12', 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}\n", + "{'values': 'Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” , Artikel 1 Amendeert het voorstel van raadsbesluit van Anneleen Van Bossuyt betreffende \"Zwemmen aan de Blaarmeersen\" door de vervanging van artikel 1 van het voorstel van raadsbesluit door de hiernavolgende tekst:“De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.”', 'title': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'target': 'https://data.gent.be/id/besluiten/22.0523.4375.3376', 'motivering': 'Motivering Koppeling aan agendapunt 2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen Toelichting/Motivering/Aanleiding Raadslid Anneleen Van Bossuyt heeft een voorstel van raadsbesluit ingediend voor de gemeenteraad van 23 mei 2022 met als onderwerp \" Zwemmen aan de Blaarmeersen\". Het college van burgemeester en schepenen wenst het ingediende voorstel van raadsbesluit te amenderen, en dit door artikel 1 van het voorstel van raadsbesluit te vervangen door de volgende tekst: “De gemeenteraad draagt het college van burgemeester en schepenen op om samen met Farys een flexibele zwemregeling voor de Blaarmeersen te laten onderzoeken (inclusief financiële en operationele impact), zodat er ook vroeger tijdens het voorseizoen kan gezwommen worden op warme dagen.” Indiener(s) Sofie Bracke Tijdstip van indienen ma 23/05/2022 - 17:12', 'description': '2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".', 'derivedFrom': 'https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen', 'date': '2022-05-25', 'annotation': 'https://lblod.data.gift/concepts/ml2grow/annotations/21464d2e-4959-4516-8327-0e5e2d674113'}\n" + ] + } + ], + "source": [ + "resources = []\n", + "resources_names = []\n", + "\n", + "# Print or use the cleaned_decisions as needed\n", + "for d in cleaned_decisions:\n", + " print(d)\n", + "\n", + "for d in cleaned_decisions:\n", + " resources.append(d['derivedFrom'])\n", + " resources_names.append(d['title'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The final step is to compile the answer which will be shown to the user using the retrieved decisions' details. A prompt is made with the instructions that the LLM should take into account when generating the response:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Je vraag over waar je kunt gaan zwemmen is heel relevant! Op dit moment is de belangrijkste plek om te zwemmen in Gent de Blaarmeersen. De gemeenteraad heeft besloten om samen met Farys een flexibele zwemregeling te onderzoeken, zodat er ook eerder in het seizoen gezwommen kan worden op warme dagen. Dit is bedoeld om ervoor te zorgen dat je op mooie dagen, zelfs voor het officiële zwemseizoen, kunt genieten van het water.\\n\\nHoud er rekening mee dat deze besluiten uit 2022 zijn en dus niet recent zijn. Voor de meest actuele informatie over zwemmen in Gent, kun je de website van de stad bezoeken.\\n\\nHier zijn enkele relevante besluiten die je kunt bekijken:\\n- [2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen)\\n- [2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376)\\n- [2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen)\\n\\nAls je meer wilt weten, kun je ook [hier](https://stad.gent) kijken. Veel zwemplezier!'" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prompt_2 = f\"\"\"\n", + "ELEMENTS TO USE:\n", + "1. User's question: {user_question}\n", + "2. Data to use for answer: {cleaned_decisions}\n", + "\n", + "YOUR ROLE: \n", + "- You answer the user's question. However, chat normally if the user's prompt is not a question.\n", + "- You answer in the language the user asked in. For example,if they ask in English, you answer in English, and if they ask in Dutch, you answer in Dutch.\n", + "\n", + "INSTRUCTIONS:\n", + "- If it is a question, generate a response using ONLY the given data.\n", + "- The date today is {today}. Answer with that in mind.\n", + "- If you do not have data, the only external links you are allowed to refer to when looking for an answer are:\n", + " - https://stad.gent\n", + " - https://gentsefeesten.stad.gent\n", + "- If the question is asking about a date of an event and the data provided is from the past, say you do not know.\n", + "\n", + "REQUIREMENTS YOU MUST FOLLOW:\n", + "1. If the retrieved decisions' dates do not match the current date's year: {today}, you must tell the user that it's not recent.\n", + "2. If you don't have an answer, you are only allowed to refer the user to https://stad.gent website.\n", + "3. You are only allowed to use the provided data to compile the answer.\n", + "4. Use the word \"besluiten\" when referring to decisions in the Dutch language. Don't use \"beslissingen\".\n", + "5. Be friendly and use plain language, avoiding bureaucratic terms.\n", + "\n", + "LAST IMPORTANT STEPS YOU MUST FOLLOW: Before showing your answer, ensure it matches the user's question:\n", + "- If it relates but doesn't answer exactly, mention: \"It might relate but isn't necessarily the answer you want.\"\n", + "- Provide the resources in bullet points: {resources}, formatted with the {resources_names} as links ({resources}).\n", + "\n", + "\"\"\"\n", + "\n", + "completion_2 = client.chat.completions.create(\n", + " #model=\"gpt-3.5-turbo\",\n", + " model=\"gpt-4o-mini\",\n", + " messages=[\n", + " {\"role\": \"system\", \"content\": \"You are a helpful assistant for the citizens of Gent when they ask a question on the city's website regarding the decisions made by the city. Be friendly, speak in easy to use terms. You use both the user's question and relevant decisions passed to you.\"},\n", + " {\"role\": \"user\", \"content\": prompt_2}\n", + " ],\n", + " temperature=0\n", + ")\n", + "\n", + "msg_2 = completion_2.choices[0].message.content\n", + "\n", + "msg_2" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Je vraag over waar je kunt gaan zwemmen is heel relevant! Op dit moment is de belangrijkste plek om te zwemmen in Gent de Blaarmeersen. De gemeenteraad heeft besloten om samen met Farys een flexibele zwemregeling te onderzoeken, zodat er ook eerder in het seizoen gezwommen kan worden op warme dagen. Dit is bedoeld om ervoor te zorgen dat je op mooie dagen, zelfs voor het officiële zwemseizoen, kunt genieten van het water.\n", + "\n", + "Houd er rekening mee dat deze besluiten uit 2022 zijn en dus niet recent zijn. Voor de meest actuele informatie over zwemmen in Gent, kun je de website van de stad bezoeken.\n", + "\n", + "Hier zijn enkele relevante besluiten die je kunt bekijken:\n", + "- [2022_VVB_00015 - Geamendeerd voorstel tot raadsbesluit van raadslid Anneleen Van Bossuyt: Zwemmen aan de Blaarmeersen](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen)\n", + "- [2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/agendapunten/22.0523.4375.3376)\n", + "- [2022_AM_00005 - Amendement van het college van burgemeester en schepenen op het voorstel van raadsbesluit, ingediend door Anneleen Van Bossuyt, betreffende \"Zwemmen in de Blaarmeersen\".](https://ebesluitvorming.gent.be/zittingen/21.1004.3056.7946/notulen)\n", + "\n", + "Als je meer wilt weten, kun je ook [hier](https://stad.gent) kijken. Veel zwemplezier!\n" + ] + } + ], + "source": [ + "print(msg_2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In cases where there are no retrieved decisions from the query, the compiled answer states that it couldn't find anything. It is not meant to look at external resources on its own (this is included as an instruction in the prompt). This is to avoid hallucination." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}