Image-Text-to-Text
Transformers
Safetensors
Korean
English
qwen3_5
gui-agent
web-agent
computer-use
browser
korean
conversational
Instructions to use KORMo-VL/KORMo-Web-9B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use KORMo-VL/KORMo-Web-9B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="KORMo-VL/KORMo-Web-9B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("KORMo-VL/KORMo-Web-9B") model = AutoModelForMultimodalLM.from_pretrained("KORMo-VL/KORMo-Web-9B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use KORMo-VL/KORMo-Web-9B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "KORMo-VL/KORMo-Web-9B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KORMo-VL/KORMo-Web-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/KORMo-VL/KORMo-Web-9B
- SGLang
How to use KORMo-VL/KORMo-Web-9B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "KORMo-VL/KORMo-Web-9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KORMo-VL/KORMo-Web-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "KORMo-VL/KORMo-Web-9B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "KORMo-VL/KORMo-Web-9B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use KORMo-VL/KORMo-Web-9B with Docker Model Runner:
docker model run hf.co/KORMo-VL/KORMo-Web-9B
Download tools.json from KORMo-VL/KORMo-Web-9B: direct link, hf CLI and curl.
- Browser
- Download file 12.4 kB
-
https://huggingface.co/KORMo-VL/KORMo-Web-9B/resolve/main/tools.json
- Command line
-
hf download hf://KORMo-VL/KORMo-Web-9B/tools.json
-
curl -L -o tools.json https://huggingface.co/KORMo-VL/KORMo-Web-9B/resolve/main/tools.json
12.4 kB
| [ | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "click", | |
| "description": "Left-click.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "double_click", | |
| "description": "Double-click.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "right_click", | |
| "description": "Right-click.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "type", | |
| "description": "Type literal text into the input that currently has focus. It takes no coordinates: click (or focus) the target input first, then type. To replace existing text, use click → clear → type.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "text": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "text" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "hotkey", | |
| "description": "Press one key, or a key combination held down together, on the currently focused page/element. Pass the keys in order as a list: modifiers first, then the main key (e.g. [\"Control\", \"a\"]). Key names are case-sensitive and use these exact spellings (modifiers Control, Shift, Alt, Meta; named keys such as Enter, Escape, Tab, Backspace, Space, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, F1-F12; letters and digits in lowercase, e.g. a, 0, -). Keys and when to use them: Enter - submit a focused search box or form, or confirm a selection (use after type). Control+a - select all text in the focused input (e.g. before Backspace or before typing replacement text). Control+c - copy the current selection. Control+v - paste the clipboard into the focused input. Backspace - delete the character before the cursor, or the selected text. Tab / Shift+Tab - move focus to the next / previous element. Escape - close a popup, dialog, dropdown or autocomplete list. ArrowDown / ArrowUp - move through dropdown or autocomplete options, or scroll a little. ArrowLeft / ArrowRight - move the cursor in a text input, or switch slides/carousel items. Home / End - jump to the top / bottom of the page (or start / end of the input line). Control+Home / Control+End - jump to the very top / bottom of the page or document. PageDown / PageUp - scroll down / up by one screen. Space - toggle a focused checkbox/button, or scroll down. Control+f - open find-in-page. F3 - find the next match in find-in-page. Control+l / Alt+d / F6 - focus the address bar (prefer goto(url) to open a URL). Control+r / F5 - reload the current page. Control+Shift+r - hard reload the current page, ignoring the cache. Alt+ArrowLeft - go back in browser history (same as go_back). Alt+Home - open the browser home page. Control+t - open a new tab (prefer new_tab). Control+w - close the current tab (prefer close_tab). Control+n - open a new browser window. Control+Tab - switch to the next tab (prefer switch_tab). Control+1 ... Control+8 - switch to the tab at that position (prefer switch_tab). Control+- / Control+0 - zoom the page out / reset the zoom. F11 - toggle full-screen view. Control+h - open the browser history page. Control+j - open the browser downloads page. Control+d - bookmark the current page. Control+p - open the print dialog. Control+u - view the page source. F12 / Control+Shift+i / Control+Shift+j / Control+Shift+c - open the browser developer tools (console / element picker). Alt / Meta / Meta+r / Control+Escape / Alt+Tab / Control+Alt+t - operating-system or browser-menu keys (open the menu bar or start menu, run dialog, switch windows, open a terminal); they usually do not help with a web task. j / k / w - single-letter shortcuts that some websites define (for example next / previous item). Do not use hotkey to type text; use type for that. Clicking an input first gives it focus.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "keys": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| }, | |
| "minItems": 1, | |
| "description": "Keys pressed together, modifiers first. Examples: [\"Enter\"], [\"Control\", \"a\"], [\"Escape\"], [\"ArrowDown\"], [\"Control\", \"r\"]." | |
| } | |
| }, | |
| "required": [ | |
| "keys" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "scroll", | |
| "description": "Scroll by signed pixel deltas.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "scroll_dy": { | |
| "type": "number", | |
| "description": "Signed pixel delta, not a normalized coordinate." | |
| }, | |
| "scroll_dx": { | |
| "type": "number", | |
| "description": "Signed pixel delta, not a normalized coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "scroll_dy" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "wait", | |
| "description": "Wait for the specified duration.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "seconds": { | |
| "type": "number", | |
| "minimum": 0 | |
| } | |
| }, | |
| "required": [ | |
| "seconds" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "finished", | |
| "description": "Finish the task, optionally returning an answer.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "answer": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "fail", | |
| "description": "Terminate because the task cannot be completed.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "unknown", | |
| "description": "Signal that a reliable action cannot be determined.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "go_back", | |
| "description": "Go back in browser history.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "go_forward", | |
| "description": "Go forward in browser history.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "goto", | |
| "description": "Navigate to a URL.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "url": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "url" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "hover", | |
| "description": "Move the pointer without clicking.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "drag", | |
| "description": "Drag from (x,y) to (x2,y2).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "x2": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y2": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y", | |
| "x2", | |
| "y2" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "upload", | |
| "description": "Upload a local file to the web page. Use it right after the page has opened a file picker (e.g. after clicking a button such as 'Upload', 'Choose file', or '컴퓨터에서 선택'); the file is attached to that picker. Use only a file name or path that the user gave in the request — never invent one. If no file picker is open yet, click the page's upload button first.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "path": { | |
| "type": "string", | |
| "description": "File name or path exactly as given by the user, e.g. \"puppy.jpg\"." | |
| } | |
| }, | |
| "required": [ | |
| "path" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "focus", | |
| "description": "Focus the element at the coordinates.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "x": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| }, | |
| "y": { | |
| "type": "number", | |
| "minimum": 0, | |
| "maximum": 1000, | |
| "description": "Normalized 0-1000 screenshot coordinate." | |
| } | |
| }, | |
| "required": [ | |
| "x", | |
| "y" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "clear", | |
| "description": "Clear all text in the currently focused input. Give the input focus first (click or focus on it), then clear, then type.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "EXIT", | |
| "description": "Explicit final termination.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "new_tab", | |
| "description": "Open a new blank browser tab.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "switch_tab", | |
| "description": "Switch to the browser tab at the given 0-based index (see Available tabs in the observation).", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "index": { | |
| "type": "integer", | |
| "minimum": 0, | |
| "description": "0-based tab index." | |
| } | |
| }, | |
| "required": [ | |
| "index" | |
| ], | |
| "additionalProperties": false | |
| } | |
| } | |
| }, | |
| { | |
| "type": "function", | |
| "function": { | |
| "name": "close_tab", | |
| "description": "Close the current browser tab.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": {}, | |
| "required": [], | |
| "additionalProperties": false | |
| } | |
| } | |
| } | |
| ] |