code: def test_completion_openai_with_functions():
      function1 = [
          {
              "name": "get_current_weather",
              "description": "Get the current weather in a given location",
              "parameters": {
                  "type": "object",
                  "properties": {
                      "location": {
                          "type": "string",
                          "description": "The city and state, e.g. San Francisco, CA",
                      },
                      "unit": {
                          "type": "string",
                          "enum": ["celsius", "fahrenheit"],
                      },
                  },
                  "required": ["location"],
              },
          }
      ]
      try:
          litellm.set_verbose = False
          response = completion(
              model="gpt-3.5-turbo-1106",
              messages=[
                  {
                      "role": "user",
                      "content": "what's the weather in SF",
                  }
              ],
              functions=function1,
              stream=True,
          )
          # Add any assertions here to check the response
          print(response)
          for chunk in response:
              print(chunk)
              if chunk["choices"][0]["finish_reason"] == "stop":
                  break
              print(chunk["choices"][0]["finish_reason"])
              print(chunk["choices"][0]["delta"]["content"])
      except Exception as e:
          pytest.fail(f"Error occurred: {e}")
  
imports: import sys, os, asyncio
  import traceback
  import time, pytest
  from dotenv import load_dotenv
  import litellm
  from litellm import completion, acompletion, AuthenticationError, BadRequestError, RateLimitError, ModelResponse
label_desc: Use image node_id 27 for calling a global function with example usage: test_completion_openai_with_functions() without return types