# [[Flask]] ![[Flask.svg]] [site](https://flask.palletsprojects.com/en/stable/) Flask is a lightweight web application framework for [[Python]] apps. Here's an example of what a Flask wrapper might look like: ```python from flask import Flask, request, jsonify from two_player_dnd import create_game app = Flask(__name__) ( simulator, protagonist_name, storyteller_name, protagonist_description, storyteller_description, detailed_quest ) = create_game() @app.route("/play", methods=["POST"]) def play(): data = request.get_json() message = data.get("message") simulator.inject(protagonist_name, message) name, response = simulator.step() return jsonify({"speaker": name, "response": response}) @app.route("/", methods=["GET"]) @app.route("/", methods=["GET"]) def home(): return jsonify({ "protagonist": { "name": protagonist_name, "description": protagonist_description }, "storyteller": { "name": storyteller_name, "description": storyteller_description }, "quest": detailed_quest }) if __name__ == "__main__": app.run(debug=True, port=5050) ``` ## References - I used Flask for [my AI-based two-player D&D app](https://github.com/nicolevanderhoeven/asimov). %% # Excalidraw Data ## Text Elements ## Embedded Files cc3e46ce86dc9eca3025f13696a94a2ac9b59bbb: [[logo-flask.png]] ## Drawing ```compressed-json N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQBGAGZtAAYaOiCEfQQOKGZuAG1wMFAwMogSbgghFIAhZgBlYgANLn5y2EQqwn1opHbITG5nHgBWFIGIGGGxieLIChJ1bgAW AHY17R417d2d/cTJyQRCZWlucZTUlJvbu5uANknrZWDuObKBKFI2AGsEADCbHwbFIVW+1mYcFwgVy6U+EE0uGwv2UPyEHGIQJBYIkEI4UJhOSg8PKADNCPh8A1YG8JJJkRpAqSvj9/gB1JaSbjxSbMb5/BA0mB09CCDwsiDos4ccL5NC8+YQNjQ7BqaYKm6TdGY2XMeWoDhCKl8hAIYjcB6jRJrACck0YLHYXDQfCVjtYnAAcpwxDzEit4msVrbb WtRpMhHBiLgoOaeeH4g94rbRg8dok3QjCMwACKZOMWtBkghhSZo4RwACSxANBQAupNNMJMQBRYLZXJ1xtKogcX7cI0m3tsFHx4ulhCTCnBGtVbDYRIIFYPMQADgexGwtoQeESKTGZKSD1tD1wtpWuB4yNtmlGt80mklzHc4lQRU+YEVn/i8x72cxLAqlwNJigAX3Af8IFwOA4BpWM31KSB1CyN8IBjUgB3aBhCAQChamRVEdSxYFQSqABiMkqOo0 kIGwERYSgKs430Gk2UBUjcXQcj4gQXjeNo+jSEY5isgIlEKwxEicXBcgCWhRjBIY4lRP0AAxSlqVpNDxUqbChJEli2MFTliGWV19OU3JVOM/5hVFCBdItSzhJUliACVhBlOUeRcwysgAeVVdUeS1Yo6KspiWLUzgoDU3B9EpDVUBWPy3KyGLcgaQgjDfHgPkgAz0v0AAVLAoAAQSIZQXXQYIyRJNLrKMqJSEq4S2AoY5cCLQ1jXwJqoqyVtMQqjq upCXroPGpTXOarIxp+CgSvgNDiNol8fipZpuDWG5tHTFJrR4E6rQeMZsM24F8AATVWfajrXe8bQjcKjDYAxuCQyB6AIIQ31/MowMG1TPKkvUDSlFtnPCtESGy3LuHy7C4eIGkEDgC4UdIEgAFk2GIBARtwTRgl6kt8DLWGceksi0G+iBamBKbSGUJEAAoeCDaheG53m1h5q5RgASkldyEGUY0YSqVmOZ4fcefliZeAV1AhdF8DBtshAgqgZ0DSHA bwrJchsnFwCcY4ZQvqVHISbJ7hvn+yZsCITG0CdqclQ4BK309yZhCgPs/dIf7NfCuwACtdzyBofbgfHCeJ0nx1QCmqfKZE9cYEqPvwG2EU6HTMmwPXOElej+QMFaujQQ3JhBMdycnacflYkuy9q9OvYRfBQkq0vCBzvPB368DwGBugZ3CL6ILAoA ``` %%