[ { "id": "45ed920ef7184d5e", "type": "tab", "label": "Computer Use Example", "disabled": false, "info": "Responses computer-use example.\n\nThis flow teaches the request contract rather than claiming to automate the whole browser loop inside Node-RED.\n\nUse it in two stages:\n1. Send the initial request with `tools: [{ type: \"computer\" }]`.\n2. After the model returns a `computer_call`, edit the placeholder `previous_response_id`, `call_id`, and screenshot location in the second inject node, then send the follow-up request with a `computer_call_output` item.\n\nThe actual screenshot capture and action execution still need external orchestration.", "env": [] }, { "id": "af8473d616d4c73f", "type": "inject", "z": "45ed920ef7184d5e", "name": "Create Computer Request", "props": [ { "p": "ai.model", "v": "gpt-5.4", "vt": "str" }, { "p": "ai.tools[0]", "v": "{\"type\":\"computer\"}", "vt": "json" }, { "p": "ai.input", "v": "Open the target site, inspect the main page, and tell me what action to take next.", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 320, "y": 220, "wires": [ [ "1c6d500f04f70757" ] ] }, { "id": "f8116f42c7c6774d", "type": "comment", "z": "45ed920ef7184d5e", "name": "Stage 1: configure the red-marked node, then run the initial computer request.", "info": "This example teaches the Responses computer-use payload contract.\n\nBefore running:\n- import the flow, then configure the red-marked `OpenAI API` node with your own `Service Host`\n- keep or replace `gpt-5.4` as needed\n- understand that this flow does not capture screenshots or execute actions for you\n\nStage 1:\n- send `Create Computer Request`\n- inspect the debug output for a `computer_call` item and note its `call_id`\n- note the response id you need for `previous_response_id` in stage 2", "x": 480, "y": 160, "wires": [] }, { "id": "66fb2697d4d37b47", "type": "inject", "z": "45ed920ef7184d5e", "name": "Submit Computer Screenshot (edit placeholders)", "props": [ { "p": "ai.model", "v": "gpt-5.4", "vt": "str" }, { "p": "ai.previous_response_id", "v": "resp_replace_me", "vt": "str" }, { "p": "ai.input[0]", "v": "{\"type\":\"computer_call_output\",\"call_id\":\"call_replace_me\",\"output\":{\"type\":\"computer_screenshot\",\"image_url\":\"https://example.com/replace-with-real-screenshot.png\"}}", "vt": "json" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 390, "y": 300, "wires": [ [ "1c6d500f04f70757" ] ] }, { "id": "57a7d580372bcfd8", "type": "comment", "z": "45ed920ef7184d5e", "name": "Stage 2: replace the placeholders before submitting the screenshot payload.", "info": "Before running `Submit Computer Screenshot (edit placeholders)`:\n- replace `resp_replace_me` with the response id from stage 1\n- replace `call_replace_me` with the `computer_call` id returned by the model\n- replace the placeholder screenshot URL with a real screenshot location the model can read\n\nWhat this flow sends back:\n- `previous_response_id`\n- one `computer_call_output` item\n- one `computer_screenshot` payload inside `output`\n\nExpected result:\n- the model continues the computer-use loop using the screenshot you supplied", "x": 500, "y": 360, "wires": [] }, { "id": "1c6d500f04f70757", "type": "OpenAI API", "z": "45ed920ef7184d5e", "name": "Create Model Response", "property": "ai", "propertyType": "msg", "service": "", "method": "createModelResponse", "x": 660, "y": 260, "wires": [ [ "1b8c5a26f1517ac6" ] ] }, { "id": "1b8c5a26f1517ac6", "type": "debug", "z": "45ed920ef7184d5e", "name": "Computer Use Response", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 900, "y": 260, "wires": [] } ]