63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
import os
|
|
from ..tree import PRIMERE_ROOT
|
|
from .. import utility
|
|
|
|
def get_api_config(name: str) -> dict:
|
|
path = os.path.join(PRIMERE_ROOT, 'json')
|
|
fp = os.path.join(path, name)
|
|
config_json = utility.json2tuple(fp)
|
|
|
|
if not config_json:
|
|
return {}
|
|
|
|
for k, v in config_json.items():
|
|
match k:
|
|
case "OpenAI":
|
|
config_json['OpenAI']['APIKEY'] = os.environ.get("OPENAI_API_KEY") or config_json['OpenAI']['APIKEY']
|
|
case "Anthropic":
|
|
config_json['Anthropic']['APIKEY'] = os.environ.get("ANTHROPIC_API_KEY") or config_json['Anthropic']['APIKEY']
|
|
case "BlackForest":
|
|
config_json['BlackForest']['APIKEY'] = os.environ.get("BFL_API_KEY") or config_json['BlackForest']['APIKEY']
|
|
case "Gemini":
|
|
config_json['Gemini']['APIKEY'] = os.environ.get("GEMINI_API_KEY") or config_json['Gemini']['APIKEY']
|
|
case "HeyGen":
|
|
config_json['HeyGen']['APIKEY'] = os.environ.get("HEYGEN_API_KEY") or config_json['HeyGen']['APIKEY']
|
|
case "FAL":
|
|
config_json['FAL']['APIKEY'] = os.environ.get("FAL_API_KEY") or config_json['FAL']['APIKEY']
|
|
case "Elevenlabs":
|
|
config_json['Elevenlabs']['APIKEY'] = os.environ.get("ELEVENLABS_API_KEY") or config_json['Elevenlabs']['APIKEY']
|
|
|
|
return config_json
|
|
|
|
def create_api_client(api_provider, config_json):
|
|
if api_provider in config_json:
|
|
match api_provider:
|
|
case "OpenAI":
|
|
from openai import OpenAI
|
|
APIClient = OpenAI(api_key=config_json['OpenAI']['APIKEY'])
|
|
case "Anthropic":
|
|
import anthropic
|
|
APIClient = anthropic.Anthropic(api_key=config_json['Anthropic']['APIKEY'])
|
|
case "BlackForest":
|
|
APIClient = True
|
|
case "Gemini":
|
|
from google import genai
|
|
APIClient = genai.Client(api_key=config_json['Gemini']['APIKEY'])
|
|
case "HeyGen":
|
|
APIClient = True
|
|
case "FAL":
|
|
import fal_client # noqa: F401 — registers FAL SDK; key is set via env
|
|
APIClient = True
|
|
os.environ["FAL_KEY"] = config_json['FAL']['APIKEY']
|
|
case "Elevenlabs":
|
|
from dotenv import load_dotenv
|
|
from elevenlabs.client import ElevenLabs
|
|
load_dotenv()
|
|
APIClient = ElevenLabs(api_key=config_json['Elevenlabs']['APIKEY'])
|
|
case _:
|
|
return (None, None)
|
|
|
|
return (APIClient, api_provider)
|
|
else:
|
|
return (None, None)
|