FastApi / groq_instance_provider.py
Soumik Bose
go
274e9c9
# instance_provider.py
import os
from typing import List, Optional
from pydantic_ai.models.openai import OpenAIModel
from pydantic_ai.providers.openai import OpenAIProvider
from dotenv import load_dotenv
load_dotenv()
class InstanceProvider:
"""Manages multiple Groq API instances with simple rotation"""
def __init__(self):
self.instances: List[OpenAIModel] = []
self.current_index = 0
self._initialize_instances()
def _initialize_instances(self):
"""Load all API keys and create instances"""
api_keys = os.getenv("GROQ_API_KEYS", "").split(",")
base_url = os.getenv("GROQ_OPENAI_URL")
model_name = os.getenv("GROQ_LLM_MODEL")
for key in api_keys:
key = key.strip()
if key:
self.instances.append(
OpenAIModel(
model_name,
provider=OpenAIProvider(
base_url=base_url,
api_key=key
)
)
)
def get_next_instance(self) -> Optional[OpenAIModel]:
"""Get next instance in rotation"""
if not self.instances:
return None
instance = self.instances[self.current_index]
self.current_index = (self.current_index + 1) % len(self.instances)
return instance
def get_total_instances(self) -> int:
"""Return total number of instances available"""
return len(self.instances)