import asyncio
from gravixlayer import AsyncGravixLayer
async def optimized_batch():
# Limit concurrent requests
semaphore = asyncio.Semaphore(5) # Max 5 concurrent requests
async def limited_request(client, prompt):
async with semaphore:
return await client.chat.completions.create(
model="meta-llama/llama-3.1-8b-instruct",
messages=[{"role": "user", "content": prompt}]
)
async with AsyncGravixLayer(timeout=30) as client:
prompts = [f"Process item {i}" for i in range(20)]
tasks = [limited_request(client, prompt) for prompt in prompts]
results = await asyncio.gather(*tasks, return_exceptions=True)
for i, result in enumerate(results):
if isinstance(result, Exception):
print(f"Request {i} failed: {result}")
else:
print(f"Request {i} succeeded")
asyncio.run(optimized_batch())