本项目展示了如何借助 Google Gemini 模型,通过中间件控制协议(MCP)服务器来实现 MSPaint 应用的自动化控制。AI 代理能够接收复杂的数学表达式,逐步完成计算与结果验证,并将最终答案绘制于 MSPaint 之中。
本项目利用 Google Gemini 模型和 MCP 服务器,实现 MSPaint 应用的自动化控制及数学表达式的计算与绘制。以下是启动项目的基本步骤:
python mcp_server.py
python mcp_client.py
pywinauto
库实现对 MSPaint 应用的自动化操作。conda create -n eagenv python=3.11
conda activate eagenv
pip install -r requirements.txt
创建一个名为 .env
的文件,并添加以下内容:
GEMINI_API_KEY=your_api_key_here
mcp_server.py
)from fastmcp import MCPServer
class MSPaintMCP(MCPServer):
def __init__(self):
super().__init__()
self.add_tool(open_paint)
self.add_tool(draw_rectangle)
self.add_tool(add_text_in_paint)
# 添加其他工具...
if __name__ == "__main__":
server = MSPaintMCP()
server.start()
mcp_client.py
)from fastmcp import MCPClient
client = MCPClient('localhost', 5000)
client.send_goal("solve_math_expression", {
'expression': '123 + 456 * 789',
'draw_result': True
})
mcp_server.py
)open_paint
, draw_rectangle
, add_text_in_paint
)以及各种数学运算工具(如 add
, subtract
, multiply
, divide
, verify_calculation
, verify_consistency
)。pywinauto
库实现对 MSPaint 应用的自动化控制。fastmcp
库将这些工具暴露给外部客户端。mcp_client.py
)mcp_client.py
提供)系统提示词定义了 AI 的行为边界和可用工具。以下是一个简化示例:
open_paint()
: 打开 MSPaint 应用。draw_rectangle(x1, y1, x2, y2)
: 在指定坐标绘制矩形。add_text_in_paint(text, x, y)
: 在指定位置添加文本。add(a, b)
: 返回 a 和 b 的和。subtract(a, b)
: 返回 a 减去 b 的结果。multiply(a, b)
: 返回 a 乘以 b 的结果。divide(a, b)
: 返回 a 除以 b 的结果,需处理除零异常。verify_calculation(a, b, expected_result)
: 验证 a 和 b 的计算是否与预期结果一致。verify_consistency(steps)
: 确保所有计算步骤的正确性。pywinauto
库实现对 MSPaint 应用的自动化操作,通过模拟用户操作实现应用的启动、绘制等功能。fastmcp
库将工具暴露给 Google Gemini 模型,模型根据系统提示词生成指令,调用相应工具解决数学表达式。⚠️ 重要提示
- 确保所有工具调用都包含适当的异常处理。
- 根据需要优化图形绘制和数学计算的效率。
欢迎提交问题报告和功能建议,详情请参考项目仓库。