43 lines
1.2 KiB
Python
Executable File
43 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import json
|
|
import sys
|
|
import importlib.util
|
|
|
|
def load_module(func_name):
|
|
base_dir = os.path.dirname(os.path.abspath(__file__))
|
|
func_path = os.path.join(base_dir, f"../py/{func_name}")
|
|
if os.path.exists(func_path):
|
|
spec = importlib.util.spec_from_file_location(func_name, func_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
else:
|
|
print(f"Invalid py function: {func_name}")
|
|
sys.exit(1)
|
|
|
|
func_name = sys.argv[0]
|
|
if func_name.endswith("cmd.py"):
|
|
func_name = sys.argv[1]
|
|
else:
|
|
func_name = os.path.basename(func_name)
|
|
|
|
if not func_name.endswith(".py"):
|
|
func_name += ".py"
|
|
|
|
if os.getenv("LLM_FUNCTION_DECLARATE"):
|
|
module = load_module(func_name)
|
|
declarate = getattr(module, 'declarate')
|
|
print(json.dumps(declarate(), indent=2))
|
|
else:
|
|
data = None
|
|
try:
|
|
data = json.loads(os.getenv("LLM_FUNCTION_DATA"))
|
|
except (json.JSONDecodeError, TypeError):
|
|
print("Invalid LLM_FUNCTION_DATA")
|
|
sys.exit(1)
|
|
|
|
module = load_module(func_name)
|
|
execute = getattr(module, 'execute')
|
|
execute(data) |