Invoke a model
This recipe invokes a model hosted on Mosaic AI Model Serving using the Databricks SDK for Python and returns the result. Choose either a traditional ML model or a large language model (LLM).
Code snippets
Traditional Machine Learning
Using dataframe_split (JSON-serialized DataFrame in split orientation)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="custom-regression-model",
    dataframe_split={
        "columns": ["feature1", "feature2"],
        "data": [[1.5, 2.5]]
    }
)
st.json(response.as_dict())
Using dataframe_records (JSON-serialized DataFrame in records orientation)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="custom-regression-model",
    dataframe_records={
        "feature1": [1.5],
        "feature2": [2.5]
    }
)
st.json(response.as_dict())
Using instances (Tensor inputs in row format for TensorFlow/PyTorch models)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
tensor_input = [[1.0, 2.0, 3.0]]
response = w.serving_endpoints.query(
    name="tensor-processing-model",
    instances=tensor_input,
)
st.json(response.as_dict())
Using inputs (Tensor inputs in columnar format for TensorFlow/PyTorch models)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
tensor_input = {
    "input1": [1.0, 2.0, 3.0],
    "input2": [4.0, 5.0, 6.0],
}
response = w.serving_endpoints.query(
    name="tensor-processing-model",
    inputs=tensor_input,
)
st.json(response.as_dict())
Large language models (LLMs)
Using prompt (Input text for completion tasks)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="llm-text-completions-model",
    prompt="Generate a recipe for building scalable Databricks Apps.",
    temperature=0.5,
)
st.json(response.as_dict())
Using messages (List of chat messages for conversational models)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole
w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="chat-assistant-model",
    messages=[
        ChatMessage(
            role=ChatMessageRole.SYSTEM,
            content="You are a helpful assistant.",
        ),
        ChatMessage(
            role=ChatMessageRole.USER,
            content="Provide tips for deploying Databricks Apps.",
        ),
    ],
)
st.json(response.as_dict())
Using input (Input text for embedding tasks)
app.py
import streamlit as st
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="embedding-model",
    input="Databricks provides a unified analytics platform.",
)
st.json(response.as_dict())
Resources
Permissions
Your app service principal needs the following permissions:
- CAN QUERYon the model serving endpoint
See Manage permissions on your model serving endpoint for more information.
Dependencies
- Databricks SDK for Python - databricks-sdk
- Streamlit - streamlit
requirements.txt
databricks-sdk
streamlit