code: def test_openai_completion_on_router():
      # [PROD Use Case] - Makes an acompletion call + async acompletion call, and sync acompletion call, sync completion + stream
      # 4 LLM API calls made here. If it fails, add retries. Do not remove this test.
      litellm.set_verbose = True
      print("\n Testing OpenAI on router\n")
      try:
          model_list = [
              {
                  "model_name": "gpt-3.5-turbo",
                  "litellm_params": {
                      "model": "gpt-3.5-turbo",
                  },
              },
          ]
          router = Router(model_list=model_list)
  
          async def test():
              response = await router.acompletion(
                  model="gpt-3.5-turbo",
                  messages=[
                      {
                          "role": "user",
                          "content": "hello from litellm test",
                      }
                  ],
              )
              print(response)
              assert len(response.choices[0].message.content) > 0
  
              print("\n streaming + acompletion test")
              response = await router.acompletion(
                  model="gpt-3.5-turbo",
                  messages=[
                      {
                          "role": "user",
                          "content": f"hello from litellm test {time.time()}",
                      }
                  ],
                  stream=True,
              )
              complete_response = ""
              print(response)
              # if you want to see all the attributes and methods
              async for chunk in response:
                  print(chunk)
                  complete_response += (
                      chunk.choices[0].delta.content or ""
                  )
              print("\n complete response: ", complete_response)
              assert len(complete_response) > 0
  
          asyncio.run(test())
          print("\n Testing Sync completion calls \n")
          response = router.completion(
              model="gpt-3.5-turbo",
              messages=[
                  {
                      "role": "user",
                      "content": "hello from litellm test2",
                  }
              ],
          )
          print(response)
          assert len(response.choices[0].message.content) > 0
  
          print("\n streaming + completion test")
          response = router.completion(
              model="gpt-3.5-turbo",
              messages=[
                  {
                      "role": "user",
                      "content": "hello from litellm test3",
                  }
              ],
              stream=True,
          )
          complete_response = ""
          print(response)
          for chunk in response:
              print(chunk)
              complete_response += chunk.choices[0].delta.content or ""
          print("\n complete response: ", complete_response)
          assert len(complete_response) > 0
          router.reset()
      except Exception as e:
          traceback.print_exc()
          pytest.fail(f"Error occurred: {e}")
  
imports: import sys, os, time
  import traceback, asyncio
  import pytest
  import litellm
  from litellm import Router
  from concurrent.futures import ThreadPoolExecutor
  from collections import defaultdict
  from dotenv import load_dotenv
label_desc: Use image node_id 11 for calling a global function with example usage: test_openai_completion_on_router() without return types