# ------------------------------------------------------------------ # Workaround for Starlette expecting query_string as bytes # ------------------------------------------------------------------ import starlette.datastructures as _sd _original_init = _sd.URL.__init__ def _patched_init(self, url="", scope=None, **kwargs): if scope is not None: scope = dict(scope) qs = scope.get("query_string") if isinstance(qs, str): scope["query_string"] = qs.encode("latin-1") return _original_init(self, url=url, scope=scope, **kwargs) _sd.URL.__init__ = _patched_init # ------------------------------------------------------------------ # Gradio app # ------------------------------------------------------------------ import gradio as gr def respond(message, history): response = f"You said: {message}\nAnd I say I love learning AI Engineering with SuperDataScience!" return response gr.ChatInterface(fn=respond).launch() # Same syntax as requirements.txt