The Nebuly SDK enables you to monitor all the requests made to the Assistants you have created using the OpenAI SDK or on the OpenAI platform.


In the code snippet below, we assume that you have already created an Assistant following the OpenAI documentation. You can find your Assistant ID on your dedicated page on OpenAI platform.

import nebuly

import time
import openai

assistant_id = "<YOUR_ASSISTANT_ID>"

client = openai.OpenAI(api_key="<YOUR_OPENAI_KEY>")

assistant = client.beta.assistants.retrieve(assistant_id)

# create new thread
thread = client.beta.threads.create()

# add message to thread
message = client.beta.threads.messages.create(,
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
run = client.beta.threads.runs.create(,,
  instructions="Please address the user as Jane Doe. The user has a premium account."

while run.status != "completed":
    run = client.beta.threads.runs.retrieve(,

messages = client.beta.threads.messages.list(,
  # Nebuly additional kwargs

You can find a detailed explanation of the allowed nebuly additional keyword arguments below:


An id or username uniquely identifying the end-user. We recommend hashing their username or email address, in order to avoid sending us any identifying information.


Tag user interactions by adding key-value pairs using this parameter. Each key represents the tag name, and the corresponding value is the tag value.

For example, if you want to tag an interaction with the model version used to reply to user input, provide it as an argument for nebuly_tags, e.g. {"version": "v1.0.0"}. You have the flexibility to define custom tags, making them available as potential filters on the Nebuly platform.


You can use this field to temporarily override the Nebuly API key for the selected model call. The interaction will be stored in the project associated with the provided API key.