You need to enable JavaScript to run this app.
文档中心
火山方舟

火山方舟

复制全文
下载 pdf
火山方舟
复制全文
下载 pdf
组装质检智能体(Beta)

本文介绍了如何使用边缘大模型网关平台预置的组装质检智能体。

注意

组装质检智能体现已推出 Beta 版本。如需体验和测试该智能体,请提交工单

能力介绍

组装质检智能体能够基于视觉交互提示,检测 DPU(Data Processing Unit,数据处理单元)机箱上的连接器是否正确组装。

通过以下示例获取对智能体能力的直观理解:

  • DPU 机箱上需要正确组装多个连接器。通过向智能体提供一些视觉提示,可使智能体检测样本图片上的连接器是否正确组装。
    需要的视觉提示包括:

    • 连接器正确组装的 DPU 机箱参照图片及各个连接器的位置信息
    • 对应于每个连接器的引脚号(一般可从安装说明中获取)

    alt

  • 您可调用 API 向智能体发起检测请求,智能体处理请求后返回样本图片上每个连接器的组装检测结果。

    alt

使用流程

要使用组装质检智能体,您需要:

  1. 创建一个网关访问密钥,并为该密钥绑定 组装质检智能体。相关操作,请参见调用平台预置智能体
  2. 获取网关访问密钥的 API key。相关操作,请参见查看密钥(API Key)
  3. 调用组装质检智能体 API 执行检测任务。关于如何使用 API,请参见 API 使用方法

API 使用方法

请求参数

API 请求中需要携带以下参数:

  • api_key: string
    您的网关访问密钥 API key。

  • image_fn: string
    待检测图片的存储路径。

  • tid: string
    待检测图片对应的机箱型号 ID。

  • image_guided_fn: string
    检测参照图片(连接器正确组装的 DPU 机箱图片)的存储路径。

  • ref_fn: string
    检查参照文件(.json)的存储路径。参照文件(.json)描述了检测参照信息,即检测参照图片上的连接器信息。
    检测参照文件(.json)示例:

    {
        "NAS99000025G": {  # 机箱型号ID
            "boxes": [                 # 参照图片上的连接器位置
                [467.20801612180935,1148.927675772503,923.2760859829818,1327.6110613524406],
                [513.1551724137923,1359.9442454097625,955.6092700403037,1516.5049261083743],
                [1040.6965965069408,1155.7346618898343,1501.8699059561122,1319.102328705777],
                [1079.8367666815939,1339.5232870577697,1525.6943573667704,1501.1892073443798],
                [1643.1148678907293,1148.9276757725033,2051.534034930586,1310.5935960591132],
                [1661.8340797133897,1339.5232870577697,2102.5864308105683,1489.2769816390505],
                [2216.603448275862,1121.6997313031795,2665.864532019704,1305.4883564711151],
                [2237.0244066278547,1322.5058217644423,2693.092476489028,1507.9961934617106],
                [2796.899014778325,1130.2084639498432,3108.3186296462154,1317.4005821764442],
                [2819.0217196596504,1337.821540528437,3118.529108822212,1489.2769816390505],
                [3142.35356023287,1126.8049708911776,3373.791088222122,1312.295342588446],
                [3172.984997760859,1336.1197939991043,3414.633004926108,1490.9787281683834]],
            "texts": [                # 参照图片上的连接器引脚号
                ["011 012 013 014 021 022 023 024"],
                ["031 032 033 034 041 042 043 044"],
                ["051 052 053 054 061 062 063 064"],
                ["071 072 073 074 081 082 083 084"],
                ["091 092 093 094 101 102 103 104"],
                ["111 112 113 114 121 122 123 124"],
                ["131 132 133 134 141 142 143 144"],
                ["151 152 153 154 161 162 163 164"],
                ["X31 X32 X33 X34 X35"],
                ["X41 X42 X43 X44 X45"],
                ["X81 X82 X83 X84"],
                ["X91 X92 X93 X94"]]
        }
    }
    

    参照信息(object[])中的每个元素表示一个机箱型号模板(object{})。每个机箱型号模板(object{})以机箱型号 ID 为字段名,并包含以下参数:

    • boxes: 由所有连接器位置信息组成的数组。每个元素表示一个连接器的位置信息。格式为 [x1,y1,x2,y2]。x1 和 y1 表示连接器边界框左上顶点的水平、垂直像素坐标;x2 和 y2 表示连接器边界框右下顶点的水平、垂直像素坐标。

    • texts: 由所有连接器的引脚号组成的数组。每个元素表示一个连接器上的所有引脚号(string[])。

返回结果

返回结果包含以下两个参数:

  • labels: integer[]
    连接器安装检测结果。取值只有 1 和 0。1 表示连接器正确安装;0 表示连接器安装不正确。

  • boxes: array[]
    每个连接器的位置信息。格式为 [x1,y1,x2,y2]。x1 和 y1 表示连接器边界框左上顶点的水平、垂直像素坐标;x2 和 y2 表示连接器边界框右下顶点的水平、垂直像素坐标。

返回结果示例:

{
    "labels": [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1],
    "boxes": [
        [521.4167432785034: 1601.544771194458: 992.5063247680664: 1757.1681175231934]: 
        [571.6965579986572: 1758.4208850860596: 982.2514171600342: 1923.638780593872]: 
        [1103.2706336975098: 1592.567310333252: 1558.9436073303223: 1754.5600061416626],
        [1151.6408557891846: 1747.2482271194458: 1551.7310886383057: 1909.1928148269653]: 
        [1755.324462890625: 1587.5738525390625: 2061.3154678344727: 1731.0310678482056]: 
        [1808.866985321045: 1746.1472854614258: 2097.0920219421387: 1882.156551361084]: 
        [2241.386100769043: 1581.686562538147: 2713.4303970336914: 1731.1300563812256]: 
        [2277.2250595092773: 1744.4140892028809: 2707.4804306030273: 1886.2657985687256]: 
        [2794.8960571289062: 1574.529218673706: 3142.582489013672: 1724.3592081069946]: 
        [2795.4283447265625: 1723.012996673584: 3127.0269927978516: 1875.0691680908203]: 
        [3135.6423110961914: 1564.4548931121826: 3363.983253479004: 1707.886178970337]: 
        [3131.689727783203: 1715.3023281097412: 3339.7285079956055: 1853.321044921875]]
}

Python 调用示例

# pip install openai
# https://platform.openai.com/docs/api-reference
import base64
from openai import OpenAI
import json

def img_to_base64(img_path):
   if img_path.find("http") >= 0:
       base64_str = base64.b64encode(httpx.get(img_path).content).decode("utf-8")
   else:
       with open(img_path, "rb") as f:
           base64_str = base64.b64encode(f.read()).decode("utf-8")
   return base64_str
   
client = OpenAI(
   base_url="https://ai-gateway.vei.volces.com/v1",
   api_key="sk-xxxxxxxxxxx"
)

# 待检测图片
image_fn = "./test_data/倾斜NAS9884703ROHS负样本.jpg"

# 检测参照信息
image_guided_fn = "./test_data/pos_NAS9884703ROHS正样本.jpg"
ref_data = {
       "NAS99000025G": {       # "NAS99000025G" 为机箱型号ID,对应value为具体模板信息
       boxes:[[x1: y1: x2: y2],[],[]]:   # "boxes" 和 "texts" 为该型号机箱具体的参照信息。 boxes 表示连接器的位置信息,texts 表示连接器的引脚号: 它们需要一一对应
       texts: [["011 012 013 021 022 023"],[],[]]}}

# 数据处理
ref_info = json.dumps(ref_data)
b64 = img_to_base64(image_fn)
b64_guided = img_to_base64(image_guided_fn)

messages = [
   {
       "role": "user",
       "content": [
           {
               "type": "text",
               "text": f"<ref_info>{ref_info}</ref_info>"},
           {
               "type": "image_url",
               "image_url": {"url": f"data:image/jpeg;base64,{b64}"},
           },
           {
               "type": "image_url",
               "image_url": {"url": f"data:image/jpeg;base64,{b64_guided}"},
           },
       ],
   }
]

completion = client.chat.completions.create(
 model="AG-DPU-assembly-agent",
 messages=messages,
 max_tokens=300,
)
print(completion)
最近更新时间:2025.04.08 10:18:14
这个页面对您有帮助吗?
有用
有用
无用
无用