docstr: Create a thread and run it in one request.
  
  Args:
    assistant_id: The ID of the
        [assistant](https://platform.openai.com/docs/api-reference/assistants) to use to
        execute this run.
  
    instructions: Override the default system message of the assistant. This is useful for
        modifying the behavior on a per-run basis.
  
    metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
        for storing additional information about the object in a structured format. Keys
        can be a maximum of 64 characters long and values can be a maxium of 512
        characters long.
  
    model: The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to
        be used to execute this run. If a value is provided here, it will override the
        model associated with the assistant. If not, the model associated with the
        assistant will be used.
  
    thread: If no thread is provided, an empty thread will be created.
  
    tools: Override the tools the assistant can use for this run. This is useful for
        modifying the behavior on a per-run basis.
  
    extra_headers: Send extra headers
  
    extra_query: Add additional query parameters to the request
  
    extra_body: Add additional JSON properties to the request
  
    timeout: Override the client-level default timeout for this request, in seconds
docstr_tok: ["Create","a","thread","and","run","it","in","one","request",".","Args",":","assistant_id",":","The","ID","of","the","[","assistant","]","(","https",":","\/\/platform.openai.com\/docs\/api-reference\/assistants",")","to","use","to","execute","this","run",".","instructions",":","Override","the","default","system","message","of","the","assistant",".","This","is","useful","for","modifying","the","behavior","on","a","per-run","basis",".","metadata",":","Set","of","16","key-value","pairs","that","can","be","attached","to","an","object",".","This","can","be","useful","for","storing","additional","information","about","the","object","in","a","structured","format",".","Keys","can","be","a","maximum","of","64","characters","long","and","values","can","be","a","maxium","of","512","characters","long",".","model",":","The","ID","of","the","[","Model","]","(","https",":","\/\/platform.openai.com\/docs\/api-reference\/models",")","to","be","used","to","execute","this","run",".","If","a","value","is","provided","here",",","it","will","override","the","model","associated","with","the","assistant",".","If","not",",","the","model","associated","with","the","assistant","will","be","used",".","thread",":","If","no","thread","is","provided",",","an","empty","thread","will","be","created",".","tools",":","Override","the","tools","the","assistant","can","use","for","this","run",".","This","is","useful","for","modifying","the","behavior","on","a","per-run","basis",".","extra_headers",":","Send","extra","headers","extra_query",":","Add","additional","query","parameters","to","the","request","extra_body",":","Add","additional","JSON","properties","to","the","request","timeout",":","Override","the","client-level","default","timeout","for","this","request",",","in","seconds"]
code: def create_and_run(
      self,
      *,
      assistant_id: str,
      instructions: Optional[str] | NotGiven = NOT_GIVEN,
      metadata: Optional[object] | NotGiven = NOT_GIVEN,
      model: Optional[str] | NotGiven = NOT_GIVEN,
      thread: thread_create_and_run_params.Thread
      | NotGiven = NOT_GIVEN,
      tools: Optional[List[thread_create_and_run_params.Tool]]
      | NotGiven = NOT_GIVEN,
      # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
      # The extra values given here take precedence over values defined on the client or passed to this method.
      extra_headers: Headers | None = None,
      extra_query: Query | None = None,
      extra_body: Body | None = None,
      timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
  ) -> Run:
      """
      Create a thread and run it in one request.
  
      Args:
        assistant_id: The ID of the
            [assistant](https://platform.openai.com/docs/api-reference/assistants) to use to
            execute this run.
  
        instructions: Override the default system message of the assistant. This is useful for
            modifying the behavior on a per-run basis.
  
        metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
            for storing additional information about the object in a structured format. Keys
            can be a maximum of 64 characters long and values can be a maxium of 512
            characters long.
  
        model: The ID of the [Model](https://platform.openai.com/docs/api-reference/models) to
            be used to execute this run. If a value is provided here, it will override the
            model associated with the assistant. If not, the model associated with the
            assistant will be used.
  
        thread: If no thread is provided, an empty thread will be created.
  
        tools: Override the tools the assistant can use for this run. This is useful for
            modifying the behavior on a per-run basis.
  
        extra_headers: Send extra headers
  
        extra_query: Add additional query parameters to the request
  
        extra_body: Add additional JSON properties to the request
  
        timeout: Override the client-level default timeout for this request, in seconds
      """
      extra_headers = {
          "OpenAI-Beta": "assistants=v1",
          **(extra_headers or {}),
      }
      return self._post(
          "/threads/runs",
          body=maybe_transform(
              {
                  "assistant_id": assistant_id,
                  "instructions": instructions,
                  "metadata": metadata,
                  "model": model,
                  "thread": thread,
                  "tools": tools,
              },
              thread_create_and_run_params.ThreadCreateAndRunParams,
          ),
          options=make_request_options(
              extra_headers=extra_headers,
              extra_query=extra_query,
              extra_body=extra_body,
              timeout=timeout,
          ),
          cast_to=Run,
      )
  
imports: from __future__ import annotations
  from typing import List, Optional
  import httpx
  from ....None import _legacy_response
  from .runs import Runs, AsyncRuns, RunsWithRawResponse, AsyncRunsWithRawResponse, RunsWithStreamingResponse, AsyncRunsWithStreamingResponse
  from .messages import Messages, AsyncMessages, MessagesWithRawResponse, AsyncMessagesWithRawResponse, MessagesWithStreamingResponse, AsyncMessagesWithStreamingResponse
  from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
  from ...._utils import maybe_transform
  from .runs.runs import Runs, AsyncRuns
  from ...._compat import cached_property
  from ...._resource import SyncAPIResource, AsyncAPIResource
  from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
  from ....types.beta import Thread, ThreadDeleted, thread_create_params, thread_update_params, thread_create_and_run_params
  from ...._base_client import make_request_options
  from .messages.messages import Messages, AsyncMessages
  from ....types.beta.threads import Run
label_desc: Use image node_id 9 for calling the Threads obj's underlying member method code with example usage: obj.create_and_run() and returns: self