Spaces:
Sleeping
Sleeping
File size: 1,846 Bytes
0ef482f ec3d9e7 6c10eb2 0ef482f 6c10eb2 c071669 23f2922 444e2a5 0ef482f c071669 d117752 23f2922 0ef482f 71865dd d117752 71865dd ec3d9e7 0ef482f d117752 71865dd 0ef482f 71865dd d117752 71865dd d117752 0ef482f d117752 eb6d527 ec3d9e7 0ef482f d081bf3 0ef482f d117752 0ef482f 444e2a5 0ef482f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import gradio as gr
import json
import base64
import requests
import os
HF_TOKEN = os.environ.get("HF_CV_ROBOT_TOKEN")
MODEL = "Qwen/Qwen2.5-VL-7B-Instruct"
def process(payload: dict):
try:
if not HF_TOKEN:
return {"error": "Missing token"}
robot_id = payload.get("robot_id", "unknown")
image_b64 = payload["image_b64"]
data = {
"model": MODEL,
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image in detail."},
{
"type": "image_data",
"image_data": {"b64": image_b64}
}
]
}
]
}
resp = requests.post(
"https://router.huggingface.co/v1/chat/completions",
headers={
"Authorization": f"Bearer {HF_TOKEN}",
"Content-Type": "application/json"
},
data=json.dumps(data),
timeout=60
)
if resp.status_code != 200:
return {"error": f"VLM API error: {resp.status_code}, {resp.text}"}
try:
content = resp.json()["choices"][0]["message"]["content"]
first = content[0]["text"]
except:
return {"error": f"Bad response: {resp.text}"}
return {
"received": True,
"robot_id": robot_id,
"vllm_analysis": first
}
except Exception as e:
return {"error": str(e)}
demo = gr.Interface(
fn=process,
inputs=gr.JSON(label="Input Payload"),
outputs=gr.JSON(label="Reply"),
api_name="predict"
)
if __name__ == "__main__":
demo.launch(mcp_server=True)
|