code: def test_router_azure_acompletion():
      # [PROD TEST CASE]
      # This is 90% of the router use case, makes an acompletion call, acompletion + stream call and verifies it got a response
      # DO NOT REMOVE THIS TEST. It's an IMP ONE. Speak to Ishaan, if you are tring to remove this
      litellm.set_verbose = False
      import openai
  
      try:
          print(
              "Router Test Azure - Acompletion, Acompletion with stream"
          )
  
          # remove api key from env to repro how proxy passes key to router
          old_api_key = os.environ["AZURE_API_KEY"]
          os.environ.pop("AZURE_API_KEY", None)
  
          model_list = [
              {
                  "model_name": "gpt-3.5-turbo",  # openai model name
                  "litellm_params": {  # params for litellm completion/embedding call
                      "model": "azure/chatgpt-v-2",
                      "api_key": old_api_key,
                      "api_version": os.getenv("AZURE_API_VERSION"),
                      "api_base": os.getenv("AZURE_API_BASE"),
                  },
                  "rpm": 1800,
              },
              {
                  "model_name": "gpt-3.5-turbo",  # openai model name
                  "litellm_params": {  # params for litellm completion/embedding call
                      "model": "azure/gpt-turbo",
                      "api_key": os.getenv("AZURE_FRANCE_API_KEY"),
                      "api_version": os.getenv("AZURE_API_VERSION"),
                      "api_base": "https://openai-france-1234.openai.azure.com",
                  },
                  "rpm": 1800,
              },
          ]
  
          router = Router(
              model_list=model_list,
              routing_strategy="simple-shuffle",
              set_verbose=True,
          )  # type: ignore
  
          async def test1():
              response = await router.acompletion(
                  model="gpt-3.5-turbo",
                  messages=[
                      {
                          "role": "user",
                          "content": "hello this request will pass",
                      }
                  ],
              )
              str_response = response.choices[0].message.content
              print("\n str_response", str_response)
              assert len(str_response) > 0
              print("\n response", response)
  
          asyncio.run(test1())
  
          print("\n Testing streaming response")
  
          async def test2():
              response = await router.acompletion(
                  model="gpt-3.5-turbo",
                  messages=[
                      {
                          "role": "user",
                          "content": "hello this request will fail",
                      }
                  ],
                  stream=True,
              )
              completed_response = ""
              async for chunk in response:
                  if chunk is not None:
                      print(chunk)
                      completed_response += (
                          chunk.choices[0].delta.content or ""
                      )
              print("\n completed_response", completed_response)
              assert len(completed_response) > 0
  
          asyncio.run(test2())
          print("\n Passed Streaming")
          os.environ["AZURE_API_KEY"] = old_api_key
          router.reset()
      except Exception as e:
          os.environ["AZURE_API_KEY"] = old_api_key
          print(f"FAILED TEST")
          pytest.fail(f"Got unexpected exception on router! - {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 4 for calling a global function with example usage: test_router_azure_acompletion() without return types