python调用openai兼容api实现视觉识别坐标完成自动化操作电脑示例代码
代码语言:python
所属分类:其他
代码描述:python调用openai兼容api实现视觉识别坐标完成自动化操作电脑示例代码,具体步骤:1. 用户输入任务。2. 截取当前屏幕,3. 将截图和任务描述发送给OpenAI Vision API。 4. OpenAI分析截图和任务,规划下一步操作(例如点击某个坐标、输入文本)。它会以特定的JSON格式返回操作指令。5. 解析OpenAI的指令,使用`pyautogui`模拟鼠标点击或键盘输入。** 6. 重复2-5步,直到OpenAI指示任务完成。
代码标签: python 调用 openai 兼容 api 视觉 识别 坐标 完成 自动化 操作 电脑 示例 代
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
#pip install openai pyautogui mss Pillow
#`openai`: 用于与OpenAI API交互。
# `pyautogui`: 用于模拟鼠标和键盘操作。
# `mss`: 更高效的屏幕截图库。
#`Pillow`: 处理图像(`mss`通常配合它使用)。
#2. **获取OpenAI API Key:**
#在 OpenAI 官网 ([https://platform.openai.com/](https://platform.openai.com/)) 获取你的 API Key。
# **MacOS 用户额外设置:**
#确保Python和你的终端应用有“辅助功能”和“屏幕录制”权限:`系统设置` -> `隐私与安全性` -> `辅助功能` / `屏幕录制`,找到你的终端或IDE并勾选。
#如果遇到`pyautogui`错误,可能需要安装`opencv-python`: `pip install opencv-python`
import base64
import json
import time
import pyautogui
import mss
from openai import OpenAI
import re
import os
# --- 配置 ---
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") # 建议通过环境变量设置
if not OPENAI_API_KEY:
print("WARNING: OPENAI_API_KEY not found in environment variables.")
OPENAI_API_KEY = "YOUR_OPENAI_API_KEY_HERE" # 如果没有环境变量,请直接在这里替换你的API Key
OPENAI_MODEL = "gpt-4o" # 或 "gpt-4-turbo" (推荐gpt-4o,更具视觉理解能力)
# PyAutoGUI 的一些设置
# pyautogui.FAILSAFE = True # 启用安全模式,将鼠标移动到屏幕左上角会停止程序
pyautogui.PAUSE = 0.5 # 每个pyautogui调用后暂停的时间,方便观察
# --- 初始化 OpenAI 客户端 ---
client = OpenAI(api_key=OPENAI_API_KEY)
# --- 辅助函数 ---
def take_screenshot():
"""
使用 mss 库截取当前屏幕,并将其编码为 base64 字符串。
"""
with mss.mss() as sct:
monitor = sct.monitors[1] # 通常是主显示器,如果有多显示器,可以调整
sct_img = sct.grab(monitor)
img_bytes = mss.tools.to_png(sct_img.rgb, sct_img.size)
return base64.b64encode(img_bytes).decode("utf-8")
def get_ai_action(base64_image, user_prompt, conversation_history):
"""
将截图和用户/AI历史消息发送给OpenAI Vision API,
获取AI规划的下一步操作。
"""
# 构建消息列表
messages = [
{
"role": "system",
"content": """
你是一个电脑操作自动化助手。你的任务是根据用户的需求和当前屏幕截图,规划并执行下一步操作。
你的输出必须是严格的JS.........完整代码请登录后点击上方下载按钮下载查看















网友评论0