From 6fd7f4e16025cf7017e610cc0825d16e18f389dd Mon Sep 17 00:00:00 2001 From: amber williams Date: Wed, 16 Apr 2025 20:58:24 +0100 Subject: [PATCH] feat: add system information context to prompt --- llm_cmd.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/llm_cmd.py b/llm_cmd.py index 33b9d33..5d02a72 100644 --- a/llm_cmd.py +++ b/llm_cmd.py @@ -1,6 +1,7 @@ import click import llm import subprocess +import platform from prompt_toolkit import PromptSession from prompt_toolkit.lexers import PygmentsLexer from prompt_toolkit.patch_stdout import patch_stdout @@ -29,7 +30,11 @@ def cmd(args, model, system, key): model_obj = llm.get_model(model_id) if model_obj.needs_key: model_obj.key = llm.get_key(key, model_obj.needs_key, model_obj.key_env_var) - result = model_obj.prompt(prompt, system=system or SYSTEM_PROMPT) + _system_prompt = system + if not _system_prompt: + system_context = get_system_info() + system = f"{SYSTEM_PROMPT}{system_context}".strip() + result = model_obj.prompt(prompt, system=_system_prompt) interactive_exec(str(result)) def interactive_exec(command): @@ -46,4 +51,22 @@ def interactive_exec(command): ) print(output.decode()) except subprocess.CalledProcessError as e: - print(f"Command failed with error (exit status {e.returncode}): {e.output.decode()}") \ No newline at end of file + print(f"Command failed with error (exit status {e.returncode}): {e.output.decode()}") + +def get_system_info(): + """Gathers system information using the platform module.""" + try: + uname = platform.uname() + info = ( + f"System: {uname.system}, " + f"Node Name: {uname.node}, " + f"Release: {uname.release}, " + f"Version: {uname.version}, " + f"Machine: {uname.machine}" + ) + if uname.processor: + info = info + f", Processor: {uname.processor}" + + return info + except Exception as e: + return ""