An AI agent system for solving International Mathematical Olympiad (IMO) problems using Google's Gemini, OpenAI, and XAI APIs.
932
Stars
122
Forks
12
Watchers
7
Issues
这是一个利用 Google Gemini、OpenAI 和 XAI API 求解国际数学奥林匹克竞赛(IMO)问题的 AI 智能体系统。
MIT License
Copyright (c) 2025 Lin Yang, Yichen Huang
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
本项目包含以下组件:
code/agent.py:使用 Google Gemini 2.5 Pro 作为默认基础模型的单个 AI 智能体。code/agent_oai.py:使用 OpenAI GPT-5 模型的单个 AI 智能体(CLI/用法与 agent.py 相同)。code/agent_xai.py:使用 XAI Grok-4-0709 模型的单个 AI 智能体(CLI/用法与 agent.py 相同)。code/run_parallel.py:用于同时运行多个智能体的并行执行系统。code/res2md.py:一个小工具,用于解析包含 JSON 的结果文件(如 JSONL),并打印最后一个 JSON 对象。这些智能体在内部测试中成功解决了 IMO 2025 第 1-5 题(见附带日志),达到了金牌水平的表现。
run_logs/:使用 Google Gemini 2.5 Pro 作为基础模型的初步运行结果。run_logs_gpt5/:使用 OpenAI GPT-5 作为基础模型的运行结果。run_logs_grok4/:使用 XAI Grok-4 作为基础模型的运行结果。这些文件夹包含了展示各基础模型生成端到端解决方案的成功运行日志示例。
pip install requests
export GOOGLE_API_KEY=your_google_api_keyexport OPENAI_API_KEY=your_openai_api_keyexport XAI_API_KEY=your_xai_api_keyagent.py, agent_oai.py, agent_xai.py)运行单个智能体来求解 IMO 问题(三个智能体的用法和标志相同):
python agent.py problem.txt [options]
参数:
problem.txt:问题描述文件的路径(必需);imo2025 问题位于 problems 目录下。选项:
--log LOG_FILE:指定输出的日志文件(默认:打印到控制台)。--other_prompts PROMPTS:通过逗号分隔的附加提示词。示例:
python agent.py imo2025_p1.txt --log agent_output.log
若要改用 OpenAI 或 XAI 运行,只需调用相应的脚本并使用相同的选项即可:
python agent_oai.py imo2025_p1.txt --log agent_output_oai.log
python agent_xai.py imo2025_p1.txt --log agent_output_xai.log
code/run_parallel.py)并行运行多个智能体以增加找到解决方案的概率:
python IMO25/code/run_parallel.py [options]
参数:
problem.txt:问题描述文件的路径(必需)。请使用绝对路径,或确保在 IMO25/code/ 下路径有效(该脚本运行智能体时会将工作目录设置为 IMO25/code/)。选项:
--num-agents N 或 -n N:并行智能体数量(默认:10)。--log-dir DIR 或 -d DIR:日志文件所在目录(默认:logs)。--timeout SECONDS 或 -t SECONDS:每个智能体的超时时间(单位:秒,默认:无超时)。--max-workers N 或 -w N:最大工作进程数(默认:与智能体数量相同)。--other_prompts PROMPTS 或 -o PROMPTS:通过逗号分隔的附加提示词。--agent-file PATH 或 -a PATH:要运行的智能体文件路径(默认:IMO25/code/ 下的 agent.py)。--exit-immediately 或 -e:一旦有任何智能体找到正确解,立即终止整个运行(否则所有智能体将运行直至结束)。示例:
# 运行 20 个智能体,每个智能体超时时间为 5 分钟
python IMO25/code/run_parallel.py problems/imo2025_p1.txt -n 20 -t 300
IMO25 是一个基于 AI 智能体架构的竞赛数学求解系统,旨在通过调用 Google Gemini、OpenAI 以及 XAI 等前沿大模型解决国际数学奥林匹克(IMO)难度的题目。该项目通过自动化推理流程,能够有效提升 AI 在高难度数学竞赛场景下的解题表现。
系统内置了针对不同大模型厂商的专用智能体接口,支持灵活切换模型后端。提供并行执行脚本,能够同时启动多个智能体以增加获取正确解的概率。具备完善的日志记录与结果解析工具,方便用户追踪模型推理过程及提取最终答案。
本项目适用于数学研究者、AI 研究人员及对大模型推理能力感兴趣的开发者,可用于评估不同模型在复杂逻辑推演任务中的实战性能。