# import sys, os
# import traceback
# from dotenv import load_dotenv
# import copy

# load_dotenv()
# sys.path.insert(
#     0, os.path.abspath("../..")
# )  # Adds the parent directory to the system path
# import asyncio
# from litellm import Router, Timeout


# async def call_acompletion(semaphore, router: Router, input_data):
#     async with semaphore:
#         try:
#             # Use asyncio.wait_for to set a timeout for the task
#             response = await router.acompletion(**input_data)
#             # Handle the response as needed
#             return response
#         except Timeout:
#             print(f"Task timed out: {input_data}")
#             return None  # You may choose to return something else or raise an exception


# async def main():
#     # Initialize the Router
#     model_list= [{
#             "model_name": "gpt-3.5-turbo",
#             "litellm_params": {
#                 "model": "gpt-3.5-turbo",
#                 "api_key": os.getenv("OPENAI_API_KEY"),
#             },
#         }, {
#             "model_name": "gpt-3.5-turbo",
#             "litellm_params": {
#                 "model": "azure/chatgpt-v-2",
#                 "api_key": os.getenv("AZURE_API_KEY"),
#                 "api_base": os.getenv("AZURE_API_BASE"),
#                 "api_version": os.getenv("AZURE_API_VERSION")
#             },
#         }, {
#             "model_name": "gpt-3.5-turbo",
#             "litellm_params": {
#                 "model": "azure/chatgpt-functioncalling",
#                 "api_key": os.getenv("AZURE_API_KEY"),
#                 "api_base": os.getenv("AZURE_API_BASE"),
#                 "api_version": os.getenv("AZURE_API_VERSION")
#             },
#         }]
#     router = Router(model_list=model_list, num_retries=3, timeout=10)

#     # Create a semaphore with a capacity of 100
#     semaphore = asyncio.Semaphore(100)

#     # List to hold all task references
#     tasks = []

#     # Launch 1000 tasks
#     for _ in range(1000):
#         task = asyncio.create_task(call_acompletion(semaphore, router, {"model": "gpt-3.5-turbo", "messages": [{"role":"user", "content": "Hey, how's it going?"}]}))
#         tasks.append(task)

#     # Wait for all tasks to complete
#     responses = await asyncio.gather(*tasks)
#     # Process responses as needed
#     print(f"NUMBER OF COMPLETED TASKS: {len(responses)}")
# # Run the main function
# asyncio.run(main())
