Spaces:
Running
Running
# ruff: noqa: F401 | |
import os | |
import sys | |
from platform import node | |
import rich | |
from loguru import logger | |
from smolagents import LiteLLMModel, OpenAIServerModel | |
from exit_gracefully import exit_gracefully | |
print = rich.get_console().print # noqa | |
def openai_model( | |
model_id = None, | |
api_base = None, | |
api_key = None, | |
**kwargs, | |
): | |
kwargs = kwargs or {} | |
# default siliconflow | |
# api_base = api_base or "https://api.siliconflow.cn/v1" | |
# api_key = api_key or os.getenv("SILICONFLOW_API_KEY") | |
# model_id = model_id or "deepseek-ai/DeepSeek-V3" | |
# default llama4 | |
api_base = api_base or "https://api.llama.com/compat/v1" | |
if "golay" in node() and ("llama.com" in api_base or "openai.com" in api_base): | |
os.environ.update( | |
HTTPS_PROXY="http://localhost:8081", | |
HTTP_PROXY="http://localhost:8081", | |
ALL_PROXY="http://localhost:8081", | |
NO_PROXY="localhost,127.0.0.1", | |
) | |
api_key = api_key or os.getenv("LLAMA_API_KEY") | |
if isinstance(api_key, str): | |
# LLAMA_API_KEY contains | and in win10 need to assign env var with "" | |
api_key = api_key.strip('"') | |
assert api_key, "LLAMA_API_KEY not set, set it and try again" | |
default = "Llama-4-Maverick-17B-128E-Instruct-FP8" | |
# default = "Llama-4-Scout-17B-16E-Instruct-FP8" | |
logger.debug(f"{default=}") | |
model_id = model_id or default | |
return OpenAIServerModel( | |
model_id, | |
api_base=api_base, | |
api_key=api_key, | |
# temperature=0., | |
**kwargs, | |
) | |
def main(): | |
messages = [{'role': 'user', 'content': 'Say this is a test.'}] | |
logger.debug(sys.argv) | |
if not sys.argv[1:]: | |
model = openai_model() | |
logger.debug(model(messages)) | |
return | |
if len(sys.argv[1:]) < 3: | |
raise SystemExit("Provide at least three args (model_id, api_base, api_key)") | |
model_id, api_base, api_key, *_ = sys.argv[1:] | |
model = openai_model(model_id, api_base, api_key) | |
try: | |
response = model(messages) | |
logger.debug(response) | |
except Exception as e: | |
logger.error(e) | |
return | |
try: | |
print(response.content) | |
except Exception as e: | |
logger.error(e) | |
if __name__ == "__main__": | |
main() | |
# python openai_model.py | |
# deepseek-ai/DeepSeek-V3 https://api.siliconflow.cn/v1 %SILICONFLOW_API_KEY% | |
# python openai_model.py grok-3-beta https://api.x.ai/v1 %XAI_API_KEY% | |
# gemini-2.5-flash-preview-04-17 https://generativelanguage.googleapis.com/v1beta %GEMINI_API_KEY% | |
# gemini-2.0-flash | |
# https://api.together.ai/models/deepseek-ai/DeepSeek-V3 | |
# deepseek-ai/DeepSeek-V3 https://api.together.xyz/v1 %TOGETHER_API_KEY% | |
# deepseek-chat https://litellm.dattw.eu.org/v1 %LITELLM_API_KEY% | |
# | |
# LLM API proxy: https://linux.do/t/topic/290871 | |