python调用openai兼容api实现视觉识别坐标完成自动化操作电脑示例代码

代码语言:python

所属分类:其他

代码描述:python调用openai兼容api实现视觉识别坐标完成自动化操作电脑示例代码,具体步骤: 接收一句话任务描述(中文或英文),截屏发给 OpenAI 多模态模型做规划(偏向用热键,必要时给出点击坐标),用 pyautogui 执行点击、输入、热键、滚动等动作, 迭代执行-再截屏-再规划,直到模型返回 done=true,重复2-5步,直到OpenAI指示任务完成。

代码标签: python 调用 openai 兼容 api 视觉 识别 坐标 完成 自动化 操作 电脑 示例

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开


# 准备工作
# - Python 3.9+
# - pip install openai pyautogui pillow
# - macOS/Windows 需开启屏幕录制与辅助控制权限(首次运行会提示)
# - 设置环境变量:OPENAI_API_KEY

# -*- coding: utf-8 -*-
"""
AI 电脑自动化(截图->AI 规划->鼠标键盘执行)
依赖:
  pip install openai pyautogui pillow

环境:
  - 需要设置环境变量 OPENAI_API_KEY
  - macOS/Windows 需要开启屏幕录制/辅助控制权限
  - 把鼠标快速移动到左上角可触发 PyAutoGUI 的 FAILSAFE 保护立即中断

用法示例:
  1) 直接运行后按提示输入任务:
     我想打开记事本,写入“这是一个测试”,并保存到桌面为 test.txt

  2) 也可通过命令行参数:
     python ai_desktop_agent.py 我想打开记事本写一段文字并保存

注意:
  - 该脚本为演示/原型,实际界面/分辨率/系统语言不同会影响效果
  - 优先让模型使用快捷键(更稳),必要时给出点击坐标
"""

import os
import io
import json
import time
import base64
import platform
import sys
from typing import List, Dict, Any

import pyautogui
from PIL import Image
from openai import OpenAI


# ---------- 全局配置 ----------
MODEL_NAME = os.environ.get("OPENAI_MODEL", "gpt-4o")  # 可改为 gpt-4o-mini 降成本
MAX_ROUNDS = 8            # 迭代回合上限,避免无限循环
STEPS_PER_ROUND = 6       # 每轮最多动作数
SLEEP_BETWEEN_STEPS = 0.35
SLEEP_AFTER_BATCH = 0.8
DRY_RUN = False           # True 时只打印动作不执行
CONFIRM_FIRST_PLAN = False  # True 首轮需回车确认后再执行

# 触发角落保护(把鼠标移到屏幕左上角触发异常,立即终止)
pyautogui.FAILSAFE = True


def b64_png(pil_image: Image.Image) -> str:
    buf = io.BytesIO()
    pil_image.save(buf, format="PNG")
    return base64.b64encode(buf.getvalue()).decode("utf-8")


def take_screenshot() -> Image.Image:
    # 主显示器全屏截图
    return pyautogui.screenshot()


def os_profile() -> Dict[str, Any]:
    sysname = platform.system()
    rel = platform.release()
    ver = platform.version()
    lang = os.environ.get("LANG", "")
    return {"system": sysname, "release": rel, "version": ver, "lang": lang}


def screen_profile() -> Dict[str, Any]:
    w, h = pyautogui.size()
    return {"width": int(w), "height": int(h), "scale_hint": "pyautogui logical pixels"}


def get_json_schema() -> Dict[str, Any]:
    # 让模型仅输出符合该 schema 的 JSON
    return {
        "name": "ui_plan",
        "strict": True,
        "schema": {
            "type": "object",
            "properties": {
                "done": {"type": "boolean"},
                "reasoning": {"type": "string"},
                "steps": {
                    "type": "array",
                    "items": {
        .........完整代码请登录后点击上方下载按钮下载查看

网友评论0