无意间发现了一个巨牛的人工智能教程,忍不住分享一下给大家。很通俗易懂,重点是还非常风趣幽默,像看小说一样。网址是captainbed.cn/jj。希望更多人能加入到我们AI领域。
前言
GPT-5.4 不是简单的"聊天升级",而是首个能直接操控电脑、跨软件执行工作流的AI Agent。本文手把手教你用 GPT-5.4 的 Computer Use API 搭建私人开发助理,实现自动读需求、写代码、测接口、改Bug一条龙。内含完整 Python 代码,复制粘贴就能跑。
一、程序员终于不用当"人形翻译机"了
说实话,这么多年了,写代码最烦的不是算法多难,而是当翻译。 产品经理甩过来一张手绘原型图,你得翻译成 PRD;PRD 翻译成技术方案;技术方案翻译成代码;代码翻译成测试用例;测试用例翻译成 Jira 工单……转来转去,真正写代码的时间不到三成,剩下的全在当传声筒。
以前的 AI 顶多帮你写写函数,但界面还得自己点,测试还得自己跑,报错还得自己查。就像请了个文笔很好的秘书,但送个文件还得你亲自开车。
GPT-5.4 这次彻底变了。它不再是"只动嘴"的顾问,而是能直接上手操作的实习生。看截图、点鼠标、敲键盘、跨软件协作,样样精通。在 OSWorld-Verified 基准测试里,它操作电脑的成功率达到 75%,连人类平均水平的 72.4% 都被它超了。
这意味着什么?意味着你可以对它说:"把桌面那个需求文档打开,读完之后在我本地起一个 Spring Boot 项目,按照文档里的接口定义写 Controller,写完自己用 Postman 测一下,如果通不过就改到通过为止,最后把测试报告截图发我钉钉。" 然后你就可以去泡杯咖啡了。
二、GPT-5.4 到底强在哪?不只是"更会写代码"
很多人以为 GPT-5.4 就是 GPT-5.3 的"性能增强版",错了。这次更新更像是从大脑到手脚的进化。
2.1 原生电脑操控:AI 终于有了"手"
以前让 AI 帮你改 Excel 表格,你得把表格内容复制粘贴到对话框,改完再贴回去。现在 GPT-5.4 可以直接看到你的屏幕,像远程协助一样操作你的电脑。
它通过截图感知界面,然后输出鼠标移动、点击、键盘输入的指令。更牛的是,它支持跨应用操作——可以从钉钉复制需求,打开 IntelliJ IDEA 写代码,再切到 Chrome 查 API 文档,最后回到 IDE 继续写。
2.2 百万 Token 上下文:一次性塞进去半本书
做大型项目分析时,最痛苦的就是"超出上下文长度"。以前分析一个十几万行的代码库,得切片、分段、建索引,折腾得像在拼拼图。
GPT-5.4 支持最高 100 万 Token 的上下文窗口。什么概念?大概相当于 75 万个英文单词,或者一本 3000 页的技术文档。你可以直接把整个项目的源码打包塞进去,让它分析架构设计,找出潜在的内存泄漏点,甚至帮你重构。
2.3 Thinking 模式:把思考过程"直播"给你
GPT-5.4 Thinking 版本新增了一个很贴心的功能——提前展示思维过程。它不是直接给你答案,而是像 .debug 一样把推理链条展开。比如让它设计一个数据库表结构,它会先想"这个业务有几个实体",再想"关联关系是什么",最后才输出 SQL。
更妙的是,你可以在它思考到一半时喊停:"等等,刚才那个关联关系想错了,应该是多对多。"然后它会调整方向继续。这种人机协同的流畅感,比过去那种"输入-等待-输出"的黑盒模式舒服太多。
三、实战:30 分钟搭一个自动开发助理
光说不练假把式。下面这段代码基于 GPT-5.4 的 Computer Use 能力,实现了一个能自动操作浏览器的开发助理。它会自动打开 GitHub,读取 Issue 内容,然后在本地创建对应的分支并写提交信息。
3.1 环境准备
首先,你需要 OpenAI API Key(需要 GPT-5.4 权限),以及安装依赖:
pip install openai playwright pillow
playwright install
3.2 核心代码:让 AI 接管你的鼠标
import asyncio
import base64
from io import BytesIO
from playwright.async_api import async_playwright
from openai import AsyncOpenAI
client = AsyncOpenAI(api_key="你的-api-key")
class GPT54DeveloperAssistant:
def __init__(self):
self.browser = None
self.page = None
self.messages = []
async def start(self):
"""启动浏览器,给 AI 一个'显示器'"""
playwright = await async_playwright().start()
self.browser = await playwright.chromium.launch(headless=False) # 非无头模式,方便观察
self.page = await self.browser.new_page()
await self.page.set_viewport_size({"width": 1280, "height": 800})
# 初始化系统提示,告诉 GPT-5.4 它的身份
self.messages.append({
"role": "system",
"content": "你是一个资深全栈开发工程师。你可以使用计算机工具完成任务。"
})
async def get_screenshot(self):
"""获取屏幕截图,相当于 AI 的'眼睛'"""
screenshot = await self.page.screenshot()
img_base64 = base64.b64encode(screenshot).decode('utf-8')
return img_base64
async def execute_action(self, action):
"""执行 AI 返回的操作指令"""
action_type = action.get("type")
if action_type == "click":
x, y = action.get("x"), action.get("y")
await self.page.mouse.click(x, y)
print(f"点击坐标: ({x}, {y})")
elif action_type == "type":
text = action.get("text")
await self.page.keyboard.type(text)
print(f"输入文本: {text}")
elif action_type == "key":
key = action.get("key")
await self.page.keyboard.press(key)
print(f"按下按键: {key}")
elif action_type == "scroll":
scroll_x = action.get("scroll_x", 0)
scroll_y = action.get("scroll_y", 0)
await self.page.mouse.wheel(scroll_x, scroll_y)
print(f"滚动: ({scroll_x}, {scroll_y})")
await asyncio.sleep(0.5) # 等待操作生效
async def run_task(self, instruction):
"""主循环:观察-思考-行动"""
print(f"🎯 任务指令: {instruction}")
# 截取初始屏幕
screenshot = await self.get_screenshot()
self.messages.append({
"role": "user",
"content": [
{"type": "text", "text": instruction},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot}"}}
]
})
max_steps = 20 # 防止无限循环
for step in range(max_steps):
print(f"\n--- 执行步骤 {step + 1} ---")
# 调用 GPT-5.4,使用 Computer Use 工具
response = await client.chat.completions.create(
model="gpt-5.4", # 使用支持 Computer Use 的版本
messages=self.messages,
tools=[{
"type": "computer_use_preview", # Computer Use 工具类型
"display_width": 1280,
"display_height": 800
}],
max_tokens=4096
)
message = response.choices[0].message
self.messages.append(message)
# 检查是否有工具调用(即计算机操作指令)
if message.tool_calls:
for tool_call in message.tool_calls:
action = tool_call.function.arguments
await self.execute_action(action)
# 执行后截图,给 AI 看结果
new_screenshot = await self.get_screenshot()
self.messages.append({
"role": "user",
"content": [
{"type": "text", "text": "操作已完成,这是当前屏幕状态。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{new_screenshot}"}}
]
})
else:
# AI 认为任务完成,输出最终结果
print(f"✅ 任务完成: {message.content}")
return message.content
return "达到最大步骤限制,任务未完成"
async def close(self):
await self.browser.close()
# 使用示例
async def main():
assistant = GPT54DeveloperAssistant()
await assistant.start()
# 实战任务:自动读取 GitHub Issue 并创建本地分支
task = """
1. 打开 https://github.com/microsoft/playwright/issues
2. 找到列表中第一个带有 'bug' 标签的 Issue
3. 读取它的标题和编号
4. 告诉我标题内容和对应的 Issue 编号
"""
result = await assistant.run_task(task)
print(f"\n📋 最终结果: {result}")
await assistant.close()
if __name__ == "__main__":
asyncio.run(main())
3.3 代码解析:三个关键设计
- 视觉反馈循环:代码里每次操作后都会截图回传,这模拟了人类"看一眼操作结果再决定下一步"的习惯。GPT-5.4 通过
computer_use_preview工具解析屏幕内容,生成下一步操作。 - 动作抽象层:我把 AI 的输出抽象为
click、type、key、scroll四种原子操作。这相当于给 AI 配备了一套"标准键盘鼠标",它不需要知道底层是 Playwright 还是 Selenium,只要发出指令,人类写的驱动层负责翻译。 - 上下文维护:
self.messages数组保存了整个操作历史的截图和描述。得益于 GPT-5.4 的百万 Token 长上下文,即使任务需要 50 步操作,它也能记住最初的目标,不会"走着走着忘了要干啥"。
四、进阶玩法:工具搜索让成本砍半
用 AI 操作电脑有个隐忧:费钱。如果每次请求都要带上上百个工具的定义描述,Token 消耗会像流水一样。
GPT-5.4 引入了一个叫**工具搜索(Tool Search)**的机制,简直是省钱神器。
传统模式下,哪怕你只想查个天气,模型也得把"修图工具、代码工具、邮件工具"等所有工具的描述都读一遍。GPT-5.4 则采用"按需加载"——先给一个轻量级工具目录,只有当 AI 决定要用某个工具时,才去检索它的完整定义。
根据 Scale 的 MCP Atlas 基准测试,在 250 项任务中启用工具搜索后,总 Token 消耗减少了 47%。这意味着同样的预算,你可以让 AI 多跑一倍的任务。
在实际项目中,我是这样配置工具搜索的:
# 在 API 调用中启用工具搜索优化
response = await client.chat.completions.create(
model="gpt-5.4",
messages=messages,
tools=[
{"type": "function", "function": {"name": "git", "description": "Git操作", "searchable": True}}, # 标记为可搜索
{"type": "function", "function": {"name": "browser", "description": "浏览器操作", "searchable": True}},
{"type": "function", "function": {"name": "code_runner", "description": "执行代码", "searchable": True}}
],
tool_choice="auto",
# 启用工具搜索特性
extra_headers={"X-Tool-Search": "enabled"}
)
这样当任务只是简单的网页浏览时,Git 和代码执行工具的定义不会占用上下文,只有当你说"提交代码"时,Git 工具的详细说明才会被加载。
五、避坑指南:别让它变成"人工智障"
虽然 GPT-5.4 很强,但用不好也会翻车。分享三个我踩过的坑:
- 别给模糊指令:说"把那个文件改一下"是不行的,它不知道"改一下"是什么意思。要说"打开 /src/main.java,把第 15 行的 int 改成 String"。越具体,成功率越高。
- 注意界面变化:如果网页突然弹出一个广告挡住了按钮,AI 可能会懵。建议开启非无头模式(
headless=False),方便你随时介入救场。 - 长任务分段:虽然支持百万 Token,但复杂的开发任务建议拆成"读需求→写代码→测功能→修 Bug"几个阶段。每完成一个阶段给它个明确的检查点,比一次性扔个大任务过去更稳。
六、写在最后:从"Copilot"到"Pilot"
GPT-5.4 的发布标志着 AI 编程工具从"副驾驶"(Copilot)进化到了"飞行员"(Pilot)。以前它只能在你旁边提建议,现在它可以握着操纵杆自己飞,你只需在关键时刻调整航向。
当然,它还不能完全替代程序员——架构设计、业务理解、代码审查这些高价值工作仍需人类把控。但对于重复性的搬砖活,GPT-5.4 绝对是个不知疲倦的劳动力。
把机械劳动丢给 AI,把时间留给创造性工作,这才是程序员该有的样子。毕竟,我们学编程不是为了当"人形翻译机",而是为了创造。
现在,去试试把你的重复工作流程交给 GPT-5.4 吧。记得回来告诉我,它帮你省了多少杯咖啡的时间。