本文介绍了如何使用边缘大模型网关平台预置的组装质检智能体。
注意
组装质检智能体现已推出 Beta 版本。如需体验和测试该智能体,请提交工单。
组装质检智能体能够基于视觉交互提示,检测 DPU(Data Processing Unit,数据处理单元)机箱上的连接器是否正确组装。
通过以下示例获取对智能体能力的直观理解:
DPU 机箱上需要正确组装多个连接器。通过向智能体提供一些视觉提示,可使智能体检测样本图片上的连接器是否正确组装。
需要的视觉提示包括:
您可调用 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]]
}
# 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)