Files
CosmicLaca-ComfyUI_Primere_…/components/API/api_helper.py
T

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)