Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -22,8 +22,7 @@ CURRENT_USER = os.getenv("USER", "ErRickow")
|
|
| 22 |
|
| 23 |
# Default API Keys (fallback if user doesn't provide their own)
|
| 24 |
DEFAULT_XAI_KEY = os.getenv(
|
| 25 |
-
"XAI_API_KEY"
|
| 26 |
-
"xai-vfjhklL384Z4HKdItsZomqpFlXubTZJAFnISQUpV7dE8lRnWwYBVPSCxSTlu08wDbAcv720bx2dDiQ9x",
|
| 27 |
)
|
| 28 |
DEFAULT_GEMINI_KEY = os.getenv("GEMINI_API_KEY")
|
| 29 |
GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/openai/"
|
|
@@ -121,8 +120,11 @@ async def get_available_models(provider: str, api_key: str = None) -> List[str]:
|
|
| 121 |
if provider == AIProvider.XAI:
|
| 122 |
if not api_key and not DEFAULT_XAI_KEY:
|
| 123 |
return ["grok-2-latest"], "⚠️ API Key diperlukan untuk mendapatkan daftar model lengkap"
|
| 124 |
-
|
| 125 |
-
client = AsyncOpenAI(
|
|
|
|
|
|
|
|
|
|
| 126 |
models = await client.models.list()
|
| 127 |
available_models = [m.id for m in models.data if "grok" in m.id.lower()]
|
| 128 |
return available_models, None
|
|
@@ -130,16 +132,32 @@ async def get_available_models(provider: str, api_key: str = None) -> List[str]:
|
|
| 130 |
elif provider == AIProvider.GEMINI:
|
| 131 |
if not api_key and not DEFAULT_GEMINI_KEY:
|
| 132 |
return ["gemini-pro"], "⚠️ API Key diperlukan untuk mendapatkan daftar model lengkap"
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 137 |
|
| 138 |
else: # OLLAMA
|
| 139 |
try:
|
| 140 |
response = requests.get(f"{OLLAMA_API}/api/tags")
|
| 141 |
if response.status_code == 200:
|
| 142 |
-
models = [m[
|
| 143 |
return models, None
|
| 144 |
return ["llama2"], f"⚠️ Error mengakses Ollama API: {response.status_code}"
|
| 145 |
except Exception as e:
|
|
@@ -148,7 +166,6 @@ async def get_available_models(provider: str, api_key: str = None) -> List[str]:
|
|
| 148 |
except Exception as e:
|
| 149 |
return [], f"⚠️ Error mendapatkan daftar model: {str(e)}"
|
| 150 |
|
| 151 |
-
|
| 152 |
class AIProvider:
|
| 153 |
OLLAMA = "ollama"
|
| 154 |
GEMINI = "gemini"
|
|
|
|
| 22 |
|
| 23 |
# Default API Keys (fallback if user doesn't provide their own)
|
| 24 |
DEFAULT_XAI_KEY = os.getenv(
|
| 25 |
+
"XAI_API_KEY"
|
|
|
|
| 26 |
)
|
| 27 |
DEFAULT_GEMINI_KEY = os.getenv("GEMINI_API_KEY")
|
| 28 |
GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/openai/"
|
|
|
|
| 120 |
if provider == AIProvider.XAI:
|
| 121 |
if not api_key and not DEFAULT_XAI_KEY:
|
| 122 |
return ["grok-2-latest"], "⚠️ API Key diperlukan untuk mendapatkan daftar model lengkap"
|
| 123 |
+
|
| 124 |
+
client = AsyncOpenAI(
|
| 125 |
+
api_key=api_key or DEFAULT_XAI_KEY,
|
| 126 |
+
base_url=XAI_BASE_URL
|
| 127 |
+
)
|
| 128 |
models = await client.models.list()
|
| 129 |
available_models = [m.id for m in models.data if "grok" in m.id.lower()]
|
| 130 |
return available_models, None
|
|
|
|
| 132 |
elif provider == AIProvider.GEMINI:
|
| 133 |
if not api_key and not DEFAULT_GEMINI_KEY:
|
| 134 |
return ["gemini-pro"], "⚠️ API Key diperlukan untuk mendapatkan daftar model lengkap"
|
| 135 |
+
|
| 136 |
+
client = AsyncOpenAI(
|
| 137 |
+
api_key=api_key or DEFAULT_GEMINI_KEY,
|
| 138 |
+
base_url=GEMINI_BASE_URL
|
| 139 |
+
)
|
| 140 |
+
try:
|
| 141 |
+
models = await client.models.list()
|
| 142 |
+
available_models = []
|
| 143 |
+
if hasattr(models, 'data'):
|
| 144 |
+
for model in models.data:
|
| 145 |
+
if "gemini" in model.id.lower():
|
| 146 |
+
# Remove 'models/' prefix if exists
|
| 147 |
+
model_name = model.id.replace("models/", "")
|
| 148 |
+
available_models.append(model_name)
|
| 149 |
+
|
| 150 |
+
if not available_models: # Fallback if no models found
|
| 151 |
+
available_models = GEMINI_MODELS
|
| 152 |
+
return available_models, None
|
| 153 |
+
except Exception as e:
|
| 154 |
+
return GEMINI_MODELS, f"⚠️ Error listing models: {str(e)}"
|
| 155 |
|
| 156 |
else: # OLLAMA
|
| 157 |
try:
|
| 158 |
response = requests.get(f"{OLLAMA_API}/api/tags")
|
| 159 |
if response.status_code == 200:
|
| 160 |
+
models = [m['name'] for m in response.json()['models']]
|
| 161 |
return models, None
|
| 162 |
return ["llama2"], f"⚠️ Error mengakses Ollama API: {response.status_code}"
|
| 163 |
except Exception as e:
|
|
|
|
| 166 |
except Exception as e:
|
| 167 |
return [], f"⚠️ Error mendapatkan daftar model: {str(e)}"
|
| 168 |
|
|
|
|
| 169 |
class AIProvider:
|
| 170 |
OLLAMA = "ollama"
|
| 171 |
GEMINI = "gemini"
|