Files

1 line
8.5 KiB
JSON

{"repo": "aziksh-ospanov/hermes", "files": {"demo.py": {"ff2152dd75fd6647e33bee6e0c8f7d13d3fb159c": {"t": 1785746631.5601375, "n": 4003, "h": "bf88b6e70d682c44", "c": "\"\"\"End-to-end demo running a Hermes-augmented react agent on a single problem.\n\nThis script wires together:\n- the Lean4 verification scheduler,\n- the Hermes verification tool, and\n- a chat LLM driving the agent loop.\n\nIt is intentionally minimal so it can be used as a template for batch\nevaluation on full datasets (which would replace the single ``problem``\nstring below with a data-loader iterator).\n\"\"\"\n# import compat # noqa: F401 # must run before langchain / langgraph imports\n\nimport json\nimport os\n\nfrom langgraph.prebuilt import create_react_agent\nfrom langchain_deepseek import ChatDeepSeek\n# from langchain_huggingface.embeddings import HuggingFaceEmbeddings\n\nfrom prover.utils import load_config, AttrDict\nfrom prover.lean.verifier import Lean4ServerScheduler\n\nfrom hermes import HermesReasoner\nfrom utils import timeout_handler\n\n\nMAX_RECURSION_LIMIT = 100\nLEANSERVER_CONFIG = 'configs/lean4_server.py'\n\nsetting = 'zero_shot'\n\nwith open(f'prompts/{setting}_cot.txt', 'r') as f:\n prompt_schema = f.read()\n\nwith open('setup.json', 'r') as f:\n setup = json.load(f)\nTRANSLATOR_CONFIG = setup['translator']\nPROVER_CONFIG = setup['prover']\n\n\ndef run_agent(prompt, agent):\n return agent.invoke(\n {\"messages\": [{\"role\": \"user\", \"content\": prompt}]},\n {\"recursion_limit\": MAX_RECURSION_LIMIT},\n )\n\n\ndef attempt_problem_with_lean(problem, agent):\n return run_agent(prompt_schema.replace('<question>', problem), agent)\n\n\ndef build_auxiliary_llm_config(model_name: str):\n \"\"\"Same API + model as the LangGraph reasoning agent (e.g. deepseek-reasoner).\"\"\"\n return {\n \"model_path\": model_name,\n \"api_key\": os.getenv(\"DEEPSEEK_API_KEY\"),\n \"base_url\": \"https://api.deepseek.com\",\n \"api_mode\": True,\n \"model_args\": AttrDict(\n temperature=0.95,\n max_tokens=8192,\n top_p=0.95,\n timeout=300,\n ),\n }\n\n\ndef predict_helper(data_sample, embedding_model, scheduler, llm, model_name: str):\n reasoner = HermesReasoner(\n scheduler=scheduler,\n translator_config=TRANSLATOR_CONFIG,\n prover_config=PROVER_CONFIG,\n embedding_model=embedding_model,\n auxiliary_llm_config=build_auxiliary_llm_config(model_name),\n user_id='abc123',\n )\n\n system_prompt = (\n \"You are a helpful assistant who is proficient in mathematics and \"\n \"uses verification tools to make sure every step is correct.\"\n )\n agent = create_react_agent(\n model=llm,\n tools=[reasoner],\n prompt=system_prompt,\n )\n\n return timeout_handler(\n attempt_problem_with_lean,\n args=(data_sample, agent),\n timeout_duration=1500,\n )\n\n\nif __name__ == '__main__':\n lean4server_cfg = load_config(LEANSERVER_CONFIG)\n translator_cfg = load_config(TRANSLATOR_CONFIG)\n prover_cfg = load_config(PROVER_CONFIG)\n\n scheduler = Lean4ServerScheduler(\n max_concurrent_requests=lean4server_cfg.get(\"lean_max_concurrent_requests\", 4),\n timeout=lean4server_cfg.get(\"lean_timeout\", 120),\n memory_limit=lean4server_cfg.get(\"lean_memory_limit\", 10),\n name=lean4server_cfg.get(\"name\", 'test-server'),\n )\n\n # Init Agent - Deepseek V3 (configure DEEPSEEK_API_KEY in your environment)\n model_name = 'deepseek-chat'\n llm = ChatDeepSeek(\n model=model_name,\n temperature=0.95,\n max_tokens=8192,\n timeout=300,\n max_retries=20,\n )\n\n # embedding_model = HuggingFaceEmbeddings(\n # model_name=\"Qwen/Qwen3-Embedding-0.6B\",\n # model_kwargs={'device': 'cuda:0'},\n # encode_kwargs={\"normalize_embeddings\": True},\n # )\n embedding_model=None\n\n problem = 'Prove that 2+2=5'\n try:\n answer = predict_helper(\n problem,\n embedding_model=embedding_model,\n scheduler=scheduler,\n llm=llm,\n model_name=model_name,\n )\n print(answer)\n finally:\n scheduler.close()\n"}, "6395290b9db07b00e94ffa1d6878158e4e202f8f": {"t": 1785766410.8167055, "n": 4003, "h": "bf88b6e70d682c44", "c": "\"\"\"End-to-end demo running a Hermes-augmented react agent on a single problem.\n\nThis script wires together:\n- the Lean4 verification scheduler,\n- the Hermes verification tool, and\n- a chat LLM driving the agent loop.\n\nIt is intentionally minimal so it can be used as a template for batch\nevaluation on full datasets (which would replace the single ``problem``\nstring below with a data-loader iterator).\n\"\"\"\n# import compat # noqa: F401 # must run before langchain / langgraph imports\n\nimport json\nimport os\n\nfrom langgraph.prebuilt import create_react_agent\nfrom langchain_deepseek import ChatDeepSeek\n# from langchain_huggingface.embeddings import HuggingFaceEmbeddings\n\nfrom prover.utils import load_config, AttrDict\nfrom prover.lean.verifier import Lean4ServerScheduler\n\nfrom hermes import HermesReasoner\nfrom utils import timeout_handler\n\n\nMAX_RECURSION_LIMIT = 100\nLEANSERVER_CONFIG = 'configs/lean4_server.py'\n\nsetting = 'zero_shot'\n\nwith open(f'prompts/{setting}_cot.txt', 'r') as f:\n prompt_schema = f.read()\n\nwith open('setup.json', 'r') as f:\n setup = json.load(f)\nTRANSLATOR_CONFIG = setup['translator']\nPROVER_CONFIG = setup['prover']\n\n\ndef run_agent(prompt, agent):\n return agent.invoke(\n {\"messages\": [{\"role\": \"user\", \"content\": prompt}]},\n {\"recursion_limit\": MAX_RECURSION_LIMIT},\n )\n\n\ndef attempt_problem_with_lean(problem, agent):\n return run_agent(prompt_schema.replace('<question>', problem), agent)\n\n\ndef build_auxiliary_llm_config(model_name: str):\n \"\"\"Same API + model as the LangGraph reasoning agent (e.g. deepseek-reasoner).\"\"\"\n return {\n \"model_path\": model_name,\n \"api_key\": os.getenv(\"DEEPSEEK_API_KEY\"),\n \"base_url\": \"https://api.deepseek.com\",\n \"api_mode\": True,\n \"model_args\": AttrDict(\n temperature=0.95,\n max_tokens=8192,\n top_p=0.95,\n timeout=300,\n ),\n }\n\n\ndef predict_helper(data_sample, embedding_model, scheduler, llm, model_name: str):\n reasoner = HermesReasoner(\n scheduler=scheduler,\n translator_config=TRANSLATOR_CONFIG,\n prover_config=PROVER_CONFIG,\n embedding_model=embedding_model,\n auxiliary_llm_config=build_auxiliary_llm_config(model_name),\n user_id='abc123',\n )\n\n system_prompt = (\n \"You are a helpful assistant who is proficient in mathematics and \"\n \"uses verification tools to make sure every step is correct.\"\n )\n agent = create_react_agent(\n model=llm,\n tools=[reasoner],\n prompt=system_prompt,\n )\n\n return timeout_handler(\n attempt_problem_with_lean,\n args=(data_sample, agent),\n timeout_duration=1500,\n )\n\n\nif __name__ == '__main__':\n lean4server_cfg = load_config(LEANSERVER_CONFIG)\n translator_cfg = load_config(TRANSLATOR_CONFIG)\n prover_cfg = load_config(PROVER_CONFIG)\n\n scheduler = Lean4ServerScheduler(\n max_concurrent_requests=lean4server_cfg.get(\"lean_max_concurrent_requests\", 4),\n timeout=lean4server_cfg.get(\"lean_timeout\", 120),\n memory_limit=lean4server_cfg.get(\"lean_memory_limit\", 10),\n name=lean4server_cfg.get(\"name\", 'test-server'),\n )\n\n # Init Agent - Deepseek V3 (configure DEEPSEEK_API_KEY in your environment)\n model_name = 'deepseek-chat'\n llm = ChatDeepSeek(\n model=model_name,\n temperature=0.95,\n max_tokens=8192,\n timeout=300,\n max_retries=20,\n )\n\n # embedding_model = HuggingFaceEmbeddings(\n # model_name=\"Qwen/Qwen3-Embedding-0.6B\",\n # model_kwargs={'device': 'cuda:0'},\n # encode_kwargs={\"normalize_embeddings\": True},\n # )\n embedding_model=None\n\n problem = 'Prove that 2+2=5'\n try:\n answer = predict_helper(\n problem,\n embedding_model=embedding_model,\n scheduler=scheduler,\n llm=llm,\n model_name=model_name,\n )\n print(answer)\n finally:\n scheduler.close()\n"}}}}