code: def bkapp(doc):
      df = sea_surface_temperature.copy()
      source = ColumnDataSource(data=df)
  
      plot = figure(
          x_axis_type="datetime",
          y_range=(0, 25),
          y_axis_label="Temperature (Celsius)",
          title="Sea Surface Temperature at 43.18, -70.43",
      )
      plot.line("time", "temperature", source=source)
  
      def callback(attr, old, new):
          if new == 0:
              data = df
          else:
              data = df.rolling(f"{new}D").mean()
          source.data = ColumnDataSource.from_df(data)
  
      slider = Slider(
          start=0, end=30, value=0, step=1, title="Smoothing by N Days"
      )
      slider.on_change("value", callback)
  
      doc.add_root(column(slider, plot))
  
      doc.theme = Theme(filename="theme.yaml")
  
file_path: bokeh/examples/server/api/flask_embed.py
imports: from threading import Thread
  from flask import Flask, render_template
  from tornado.ioloop import IOLoop
  from bokeh.embed import server_document
  from bokeh.layouts import column
  from bokeh.models import ColumnDataSource, Slider
  from bokeh.plotting import figure
  from bokeh.sampledata.sea_surface_temperature import sea_surface_temperature
  from bokeh.server.server import Server
  from bokeh.themes import Theme
label_desc: Use image node_id 1 for calling a global function with example usage: bkapp(doc) without return types