本文介绍了如何使用边缘大模型网关平台预置的机箱组装智能体。
注意
机箱组装智能体现已推出 Beta 版本。如需体验和测试该智能体,请提交工单。
机箱组装智能体能够基于视觉交互提示,检测 DPU(Data Processing Unit,数据处理单元)机箱上的连接器是否正确组装。
通过以下示例获取对智能体能力的直观理解:
DPU 机箱上需要正确组装多个连接器。通过向智能体提供一些视觉提示,可使智能体检测样本图片上的连接器是否正确组装。
需要的视觉提示包括:
您可调用 API 向智能体发起检测请求,智能体处理请求后返回样本图片上每个连接器的组装检测结果。
要使用机箱组装智能体,您需要:
创建一个网关访问密钥,并为该密钥绑定 机箱组装智能体。相关操作,请参见调用平台预置智能体。
获取网关访问密钥的 API key。相关操作,请参见查看密钥(API Key)。
调用机箱组装智能体 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]] }
# 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)