diff options
| author | sigoden <sigoden@gmail.com> | 2024-12-12 12:22:51 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-12 12:22:51 +0800 |
| commit | 3584b5c31f4f1f1baa1c350fa46a18752f8bf7c4 (patch) | |
| tree | 586df9099399c8c8a3a0e9abd85d7d4577726231 /scripts/run-agent.py | |
| parent | 2fc9b476907e6fb830fd57f69d59c794548ad28b (diff) | |
| download | llm-functions-docker-3584b5c31f4f1f1baa1c350fa46a18752f8bf7c4.tar.gz | |
feat: support env var `LLM_DUMP_RESULTS` (#144)
Diffstat (limited to 'scripts/run-agent.py')
| -rwxr-xr-x | scripts/run-agent.py | 65 |
1 files changed, 28 insertions, 37 deletions
diff --git a/scripts/run-agent.py b/scripts/run-agent.py index c58612a..9367ea5 100755 --- a/scripts/run-agent.py +++ b/scripts/run-agent.py @@ -1,6 +1,9 @@ #!/usr/bin/env python +# Usage: ./run-agent.py <agent-name> <agent-func> <agent-data> + import os +import re import json import sys import importlib.util @@ -14,7 +17,7 @@ def main(): setup_env(root_dir, agent_name, agent_func) agent_tools_path = os.path.join(root_dir, f"agents/{agent_name}/tools.py") - run(agent_tools_path, agent_func, agent_data) + run(agent_name, agent_tools_path, agent_func, agent_data) def parse_raw_data(data): @@ -90,7 +93,7 @@ def load_env(file_path): os.environ.update(env_vars) -def run(agent_path, agent_func, agent_data): +def run(agent_name, agent_path, agent_func, agent_data): try: spec = importlib.util.spec_from_file_location( os.path.basename(agent_path), agent_path @@ -105,31 +108,37 @@ def run(agent_path, agent_func, agent_data): value = getattr(mod, agent_func)(**agent_data) return_to_llm(value) - dump_result() + dump_result(rf'{agent_name}:{agent_func}') -def dump_result(): - if not os.isatty(1): +def return_to_llm(value): + if value is None: return - if not os.getenv("LLM_OUTPUT"): - return + if "LLM_OUTPUT" in os.environ: + writer = open(os.environ["LLM_OUTPUT"], "w") + else: + writer = sys.stdout - show_result = False - agent_name = os.environ["LLM_AGENT_NAME"].upper().replace("-", "_") - agent_env_name = f"LLM_AGENT_DUMP_RESULT_{agent_name}" - agent_env_value = os.getenv(agent_env_name, os.getenv("LLM_AGENT_DUMP_RESULT")) + value_type = type(value).__name__ + if value_type in ("str", "int", "float", "bool"): + writer.write(str(value)) + elif value_type == "dict" or value_type == "list": + value_str = json.dumps(value, indent=2) + assert value == json.loads(value_str) + writer.write(value_str) - func_name = os.environ["LLM_AGENT_FUNC"].upper().replace("-", "_") - func_env_name = f"{agent_env_name}_{func_name}" - func_env_value = os.getenv(func_env_name) - if agent_env_value in ("1", "true"): - if func_env_value not in ("0", "false"): - show_result = True - else: - if func_env_value in ("1", "true"): +def dump_result(name): + if (not os.getenv("LLM_DUMP_RESULTS")) or (not os.getenv("LLM_OUTPUT")) or (not os.isatty(1)): + return + + show_result = False + try: + if re.search(rf'\b({os.environ["LLM_DUMP_RESULTS"]})\b', name): show_result = True + except: + pass if not show_result: return @@ -143,23 +152,5 @@ def dump_result(): print(f"\x1b[2m----------------------\n{data}\n----------------------\x1b[0m") -def return_to_llm(value): - if value is None: - return - - if "LLM_OUTPUT" in os.environ: - writer = open(os.environ["LLM_OUTPUT"], "w") - else: - writer = sys.stdout - - value_type = type(value).__name__ - if value_type in ("str", "int", "float", "bool"): - writer.write(str(value)) - elif value_type == "dict" or value_type == "list": - value_str = json.dumps(value, indent=2) - assert value == json.loads(value_str) - writer.write(value_str) - - if __name__ == "__main__": main()
\ No newline at end of file |
