马可波罗 item_search - 根据关键词获取商品列表接口对接全攻略:从入门到精通

马可波罗 item_search 接口(官方标准命名 mkb.item.search )是面向工业品、原材料、机电设备、五金工具 等 B 端批发交易场景的核心检索接口,支持按关键词、品类、价格区间、供应能力、交易保障等多维度筛选分页商品列表,返回数据包含商品基础标识与核心采购属性,是联动 item_get 接口获取商品详情的前置依赖。该接口采用 HTTPS+AppKey/Secret+Token 三重签名认证,支持 JSON/XML 双格式返回,具备筛选维度贴合 B 端采购需求、数据实时性强、交易属性完整的特点,是构建工业品采购平台、供应链选品系统的核心工具。本攻略提供从接口认知、权限准备、实操对接、调试排错到生产级优化的全链路标准化指导。


一、接口核心认知:功能与适配场景

1. 接口定位与核心价值

  • 核心功能 :输入关键词、品类编码、价格区间、最小起订量、是否现货 / 定制等筛选条件,返回分页商品列表;支持按价格、产能、发布时间、诚信等级等维度排序,单页最大返回 50 条数据;可联动 cate_tree 接口获取标准品类层级,实现精准的多级品类筛选。
  • 马可波罗数据特性
    • B 端采购属性专属:筛选条件包含最小起订量、月产能、是否支持非标定制、质保期限等批发核心维度,适配企业批量采购决策需求;
    • 交易保障维度完整:支持按发票类型、退换货政策、质保期限等交易属性筛选,满足企业合规采购与风险管控需求;
    • 数据实时性强 :商品上架、价格调整、库存更新等动态数据3 分钟内同步,保障列表数据时效性;
    • 权限分级严格:基础列表数据对所有权限开放,敏感筛选条件(如厂家直供、独家代理、出厂价区间)需企业采购资质备案授权。
  • 典型应用场景
    1. 工业品采购平台:构建多维度商品检索页面,支持企业按关键词、品类、交易保障条件快速筛选目标商品;
    2. 供应链选品系统:批量获取指定品类商品列表,分析竞品价格带、供应能力、交易条款,优化自身采购策略;
    3. 厂家招商工具:按品类筛选优质商品,匹配下游经销商需求,实现精准招商;
    4. 采购价格监控系统:定时检索指定商品,统计价格波动趋势与供应稳定性,辅助采购决策。

2. 核心参数与返回字段

(1)请求参数(GET/POST 提交,需签名认证)
参数类型 参数名称 类型 是否必填 说明 应用示例
公共参数 app_key string 应用唯一标识(开放平台获取) mkb_appkey_2026_abc123
app_secret string 应用秘钥(开放平台获取) mkb_secret_2026_def456
token string 访问令牌(token_get接口获取,有效期 24h) mkb_token_2026_xyz789
api_name string 接口名称,固定为item_search mkb.item.search
format string 响应格式,默认 JSON json/xml
timestamp string 秒级时间戳,与服务器时差≤5 分钟 1735689600
业务参数 q string 搜索关键词,需 URL 编码 DN150 碳钢闸阀/304不锈钢工字钢
cate_id string 品类编码(cate_tree接口获取) 305008(阀门类)
price_min float 最低批发价(元 / 单位) 1000
price_max float 最高批发价(元 / 单位) 5000
min_order_min int 最小起订量下限 10
min_order_max int 最小起订量上限 100
is_in_stock int 是否现货(0 = 不限,1 = 现货,2 = 非现货) 1
is_custom int 是否支持定制(0 = 不限,1 = 支持,2 = 不支持) 1
has_invoice int 是否可开票(0 = 不限,1 = 可开,2 = 不可开) 1
sort_type string 排序方式,默认publish_time_desc price_asc(低价优先)/capacity_desc(产能优先)/credit_desc(诚信优先)
page_num int 页码,默认 1 2
page_size int 单页条数,默认 20,最大 50 50

注意事项

  1. q 为必填参数,关键词需精准匹配商品规格型号(如 "DN150 铸钢法兰闸阀"),模糊关键词会降低检索精度;
  2. timestamp 与服务器时间误差超过 5 分钟会触发签名验证失败,建议对接时调用平台时间接口同步;
  3. 签名生成需包含所有非空参数 ,按参数名 ASCII 升序排序后拼接app_secret进行 MD5 加密,参数缺失会导致认证失败。
(2)返回核心字段(按业务分类)
字段分类 核心字段 说明
商品基础标识 product_id、product_name、cate_name、brand、model product_id为调用item_get接口的唯一凭证
价格与供应信息 price_wholesale、min_order、month_capacity、is_in_stock、is_custom price_wholesale:基准批发价;month_capacity:月产能
商家基础信息 supplier_name、supplier_type、credit_level supplier_type:生产厂家 / 经销商 / 代理商;credit_level:商家诚信等级
交易保障信息 has_invoice、warranty_period has_invoice:是否可开票;warranty_period:质保期限
商品状态信息 publish_time、status、view_count status:在售 / 下架 / 预售 / 定制款;view_count:采购商浏览量
分页信息 total、page_num、page_size、has_next total:搜索结果总条数;has_next:是否有下一页

提示:item_search 接口仅返回商品基础采购与交易属性,详细技术参数、资质证书、物流售后信息需调用 item_get 接口获取。

3. 接口限制与注意事项

权限类型 日调用上限 调用频率 适用场景
个人测试权限 100 次 / 天 1 次 / 秒 功能调试、小范围商品检索
企业基础权限 1000 次 / 天 3 次 / 秒 中小型采购商选品、经销商比价
企业高级权限 10000 次 / 天 10 次 / 秒 大型供应链平台、生产企业采购系统
  • 数据缓存规则 :列表数据缓存15 分钟,短时间内重复调用相同筛选条件的接口会直接返回缓存数据;
  • 地域与品类限制:危化品、特种设备等受监管品类,仅对具备对应采购资质的企业开放;部分区域厂家商品仅支持本地配送;
  • 调用频率限制 :超出频率上限会触发临时封禁 10 分钟,多次超限会导致权限降级;
  • 合规要求:数据仅可用于企业内部采购决策或自有平台展示,严禁转售、篡改或用于恶意竞品分析,违反协议会被永久封禁账号。

二、对接前准备:权限与环境搭建

1. 获取接口权限(官方唯一合规路径)

马可波罗 item_search 接口权限需通过马可波罗开放平台,步骤如下:

  1. 注册开发者账号 :选择个人开发者企业开发者,填写基本信息并完成实名认证;
  2. 提交资质审核
    • 企业用户:上传营业执照、工业品采购备案证明(如有)、法人身份证;
    • 个人用户:上传身份证,填写应用用途(如 "个人采购商品检索工具");
  3. 创建应用:填写应用名称、服务器 IP 白名单、数据用途说明,提交审核(1-2 个工作日完成);
  4. 获取密钥与令牌 :审核通过后,在 "应用管理 - 密钥管理" 中获取app_keyapp_secret;调用token_get接口生成token
  5. 申请接口权限 :在 "权限管理" 中选择mkb.item.search接口,提交申请,基础权限即时开通,高级权限需额外提交《数据合规使用承诺书》。

风险提示:严禁通过爬虫、抓包等非官方方式获取商品数据,违反协议会承担法律责任。

2. 技术环境准备

(1)支持语言与协议
  • 协议:HTTPS(强制),HTTP 请求会被直接拦截并返回 403 错误;
  • 开发语言:Python、Java、PHP、Go 等主流语言均可,推荐 Python(代码简洁,适配异步并发与数据解析)。
(2)必备工具与依赖
工具类型 推荐工具 用途
调试工具 马可波罗开放平台调试工具 在线填写参数、生成签名、测试接口响应
Postman 模拟 GET/POST 请求,保存不同品类的检索测试用例
开发依赖(Python) requests 发送 HTTPS 请求
hashlib 生成 MD5 签名
jsonpath-ng 快速解析 JSON 格式的商品列表数据
pandas 整理商品列表数据并导出 Excel
辅助工具 Redis 缓存搜索结果,减少重复调用
logging 记录接口调用日志,便于问题排查

三、实操步骤:接口对接全流程(Python 示例)

步骤 1:理解签名认证规则(核心,必掌握)

马可波罗 item_search 接口采用 app_key+app_secret+token+timestamp 签名认证 机制,签名生成步骤如下:

  1. 收集所有非空请求参数(含公共参数和业务参数);
  2. 按参数名ASCII 升序 排序(如api_name排在app_key之前);
  3. 拼接参数为 key1value1key2value2... 的字符串格式(无分隔符,参数值需与传入一致);
  4. app_secret 拼接在参数串末尾,生成签名原串;
  5. 对原串进行 MD5 加密 ,转为小写字符串,即为签名 sign
  6. sign 添加到请求参数中,发送 HTTPS GET 请求。

步骤 2:完整代码实现(含签名生成 + 调用 + 数据标准化)

(1)依赖安装

bash

复制代码
pip install requests hashlib jsonpath-ng pandas
(2)Python 代码实现
python 复制代码
import requests
import hashlib
import time
import logging
import pandas as pd
from urllib.parse import quote
from typing import Optional, Dict, List
# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
# 日志配置:记录调用日志,便于问题排查与审计
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    handlers=[logging.FileHandler("mkb_item_search.log"), logging.StreamHandler()]
)

# 配置信息(替换为你的开放平台密钥与令牌)
CONFIG = {
    "app_key": "你的app_key",
    "app_secret": "你的app_secret",
    "token": "你的token",
    "api_url": "https://openapi.makepolo.com/mkb/item_search",
    "format": "json"
}

def generate_sign(params: Dict[str, str], app_secret: str) -> str:
    """生成马可波罗接口签名(MD5加密,小写)"""
    # 1. 按参数名ASCII升序排序
    sorted_params = sorted(params.items(), key=lambda x: x[0])
    # 2. 拼接参数为 key1value1key2value2 格式
    param_str = "".join([f"{k}{v}" for k, v in sorted_params])
    # 3. 拼接app_secret并MD5加密
    sign_str = param_str + app_secret
    sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().lower()
    return sign

def standardize_product_list(raw_product: Dict) -> Dict:
    """标准化商品列表数据,统一输出格式"""
    # 处理现货与定制标识
    is_in_stock = raw_product.get("is_in_stock", 0)
    stock_desc = "现货" if is_in_stock == 1 else "非现货" if is_in_stock == 2 else "不限"

    is_custom = raw_product.get("is_custom", 0)
    custom_desc = "支持" if is_custom == 1 else "不支持" if is_custom == 2 else "不限"

    # 处理开票与质保
    has_invoice = raw_product.get("has_invoice", 0)
    invoice_desc = "可开" if has_invoice == 1 else "不可开" if has_invoice == 2 else "不限"
    warranty_period = raw_product.get("warranty_period", "暂无")

    # 处理供应能力
    month_capacity = raw_product.get("month_capacity", 0)
    min_order = raw_product.get("min_order", 0)

    return {
        "商品ID": raw_product.get("product_id", ""),
        "商品名称": raw_product.get("product_name", ""),
        "所属品类": raw_product.get("cate_name", ""),
        "品牌": raw_product.get("brand", "暂无"),
        "型号": raw_product.get("model", "暂无"),
        "批发价(元/单位)": raw_product.get("price_wholesale", 0.0),
        "最小起订量": min_order,
        "月产能": month_capacity,
        "是否现货": stock_desc,
        "是否支持定制": custom_desc,
        "是否可开票": invoice_desc,
        "质保期限": warranty_period,
        "商家名称": raw_product.get("supplier_name", "暂无"),
        "商家类型": raw_product.get("supplier_type", "暂无"),
        "商家诚信等级": raw_product.get("credit_level", "暂无"),
        "发布时间": raw_product.get("publish_time", ""),
        "商品状态": raw_product.get("status", "暂无"),
        "浏览量": raw_product.get("view_count", 0),
        "数据请求时间": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    }

def mkb_item_search(
    keyword: str,
    cate_id: Optional[str] = None,
    price_min: Optional[float] = None,
    price_max: Optional[float] = None,
    min_order_min: Optional[int] = None,
    min_order_max: Optional[int] = None,
    is_in_stock: int = 0,
    is_custom: int = 0,
    has_invoice: int = 0,
    sort_type: str = "publish_time_desc",
    page_num: int = 1,
    page_size: int = 20
) -> Dict:
    """调用马可波罗item_search接口获取商品列表"""
    # 1. 校验必填参数
    if not keyword:
        return {"success": False, "error_msg": "搜索关键词不能为空", "data": [], "pagination": {}}
    if not CONFIG["token"]:
        return {"success": False, "error_msg": "token未配置,请先调用token_get接口", "data": [], "pagination": {}}

    # 2. 构建公共参数
    params = {
        "app_key": CONFIG["app_key"],
        "token": CONFIG["token"],
        "api_name": "item_search",
        "format": CONFIG["format"],
        "timestamp": str(int(time.time())),  # 秒级时间戳
        "q": quote(keyword, encoding="utf-8"),
        "is_in_stock": str(is_in_stock),
        "is_custom": str(is_custom),
        "has_invoice": str(has_invoice),
        "sort_type": sort_type,
        "page_num": str(page_num),
        "page_size": str(min(page_size, 50))  # 限制最大条数为50
    }

    # 3. 添加工业务参数
    if cate_id:
        params["cate_id"] = cate_id
    if price_min is not None:
        params["price_min"] = str(price_min)
    if price_max is not None:
        params["price_max"] = str(price_max)
    if min_order_min is not None:
        params["min_order_min"] = str(min_order_min)
    if min_order_max is not None:
        params["min_order_max"] = str(min_order_max)

    # 4. 生成签名
    sign = generate_sign(params, CONFIG["app_secret"])
    params["sign"] = sign

    try:
        # 5. 发送HTTPS请求
        response = requests.get(
            url=CONFIG["api_url"],
            params=params,
            timeout=15,
            verify=True  # 生产环境必须开启证书验证
        )
        response.raise_for_status()  # 抛出HTTP状态码异常
        result = response.json()

        # 6. 解析响应结果
        if result.get("code") != 200:
            error_msg = f"[{result.get('code', '未知错误')}] {result.get('msg', '无错误信息')}"
            logging.error(f"搜索失败(关键词:{keyword}):{error_msg}")
            return {"success": False, "error_msg": error_msg, "data": [], "pagination": {}}

        raw_products = result.get("data", {}).get("product_list", [])
        pagination = {
            "total": result.get("data", {}).get("total", 0),
            "page_num": page_num,
            "page_size": page_size,
            "has_next": result.get("data", {}).get("has_next", False)
        }

        if not raw_products:
            logging.warning(f"无匹配商品(关键词:{keyword})")
            return {"success": True, "error_msg": "", "data": [], "pagination": pagination}

        # 7. 标准化数据
        standard_products = [standardize_product_list(product) for product in raw_products]
        return {
            "success": True,
            "error_msg": "",
            "data": standard_products,
            "pagination": pagination
        }

    except requests.exceptions.RequestException as e:
        logging.error(f"网络请求异常(关键词:{keyword}):{str(e)}")
        return {"success": False, "error_msg": f"网络异常:{str(e)}", "data": [], "pagination": {}}
    except Exception as e:
        logging.error(f"数据解析异常(关键词:{keyword}):{str(e)}")
        return {"success": False, "error_msg": f"解析异常:{str(e)}", "data": [], "pagination": {}}
# 封装好API供应商demo url=https://console.open.onebound.cn/console/?i=Lex
# 调用示例
if __name__ == "__main__":
    # 示例:搜索DN150碳钢闸阀,价格1000-5000元,现货+支持定制+可开票
    keyword = "DN150 碳钢闸阀"
    cate_id = "305008"  # 阀门类品类编码
    price_min = 1000.0
    price_max = 5000.0
    min_order_min = 10
    min_order_max = 100
    is_in_stock = 1  # 仅现货
    is_custom = 1    # 仅支持定制
    has_invoice = 1  # 仅可开票

    result = mkb_item_search(
        keyword=keyword,
        cate_id=cate_id,
        price_min=price_min,
        price_max=price_max,
        min_order_min=min_order_min,
        min_order_max=min_order_max,
        is_in_stock=is_in_stock,
        is_custom=is_custom,
        has_invoice=has_invoice,
        sort_type="price_asc",
        page_size=20
    )

    if result["success"]:
        print(f"搜索成功!共找到 {result['pagination']['total']} 件商品")
        print("=== 前5条商品信息 ===")
        for product in result["data"][:5]:
            print(f"{product['商品ID']} | {product['商品名称']} | {product['批发价(元/单位)']} | {product['是否现货']} | {product['是否可开票']}")
        # 保存为Excel
        df = pd.DataFrame(result["data"])
        df.to_excel(f"马可波罗商品搜索结果_{keyword}.xlsx", index=False)
        # 翻页示例
        if result["pagination"]["has_next"]:
            next_page_result = mkb_item_search(
                keyword=keyword,
                cate_id=cate_id,
                price_min=price_min,
                price_max=price_max,
                min_order_min=min_order_min,
                min_order_max=min_order_max,
                is_in_stock=is_in_stock,
                is_custom=is_custom,
                has_invoice=has_invoice,
                page_num=2,
                page_size=20
            )
            print(f"下一页获取到 {len(next_page_result['data'])} 件商品")
    else:
        print(f"获取失败:{result['error_msg']}")

四、调试与问题排查:快速解决对接异常

1. 优先用官方工具调试(排除签名与参数问题)

  1. 登录马可波罗开放平台调试工具,选择 mkb.item.search 接口;
  2. 输入关键词、品类编码、价格区间等参数,点击 "生成签名" 并发送请求;
  3. 若官方工具调用成功 → 问题出在代码的签名生成逻辑或参数拼接错误(如关键词未 URL 编码、数值参数未转字符串);
  4. 若官方工具调用失败 → 问题出在权限配置或参数有效性(如品类编码错误、IP 未加入白名单)。

2. 高频问题排查表

问题现象 常见原因 解决方案
签名验证失败(401) 1. app_key/app_secret 错误或过期;2. token 失效或未传入;3. 参数未按 ASCII 升序排序;4. timestamp 与服务器时差 > 5 分钟 1. 核对开放平台密钥信息,过期则重新申请;2. 调用token_get接口刷新 token;3. 严格按参数名 ASCII 升序排序所有非空参数;4. 同步服务器时间,确保时间戳误差≤5 分钟
权限不足(403) 1. 未申请item_search接口权限;2. 服务器 IP 不在白名单;3. 调用频率超限;4. 使用敏感筛选条件但无高级权限 1. 在开放平台 "权限管理" 中申请接口;2. 添加服务器公网 IP 到应用白名单;3. 降低调用频率,控制并发数≤权限上限;4. 移除敏感筛选条件或升级企业高级权限
参数错误(400) 1. 关键词为空;2. cate_id 为非法品类编码;3. price_min > price_max 或 min_order_min > min_order_max;4. page_size 超过 50 1. 确保传入非空关键词;2. 从cate_tree接口获取标准品类编码;3. 校验参数合法性,确保区间下限≤上限;4. 将 page_size 限制在 50 以内
无商品数据返回(200 但 data 为空) 1. 筛选条件过严(如价格区间过小、仅选现货 + 定制 + 可开票);2. 关键词过于模糊或无匹配商品;3. 品类编码正确但无对应商品 1. 放宽筛选条件(如扩大价格区间、is_in_stock 设为 0);2. 优化关键词,加入规格型号等精准信息;3. 更换品类编码或直接用关键词检索
响应超时(504) 1. 网络波动或服务器负载高;2. page_size 设置过大(如 50)且筛选结果多;3. 高峰期调用(工作日 9:00-12:00/14:00-18:00) 1. 添加重试机制,设置超时时间为 15 秒;2. 减小 page_size(如改为 20),分批次获取数据;3. 避开高峰期调用,调度到凌晨低峰期

五、进阶优化:生产级稳定性提升

1. 性能与配额优化

  • 批量翻页优化 :通过 pagination.has_next 字段判断是否继续翻页,采用 异步并发框架 (如 Python 的aiohttp)批量获取多页数据,并发数严格控制在权限允许的频率上限内(如企业基础权限 3 次 / 秒);避免同步循环翻页导致的效率低下。
  • 智能缓存策略 :用 Redis 缓存搜索结果,缓存 key 设计为 mkb_search_关键词_品类ID_价格区间_页码,缓存时间区分场景:
    • 热门品类 / 高频关键词:缓存 15 分钟;
    • 冷门品类 / 低频关键词:缓存 30 分钟;缓存失效触发条件:当接口返回的total数据量变化超过 10% 时,主动更新缓存。
  • 筛选条件预处理 :前端检索组件做参数合法性校验 ,例如:
    • 限制price_minprice_maxmin_order_minmin_order_max
    • 仅展示当前品类支持的筛选字段;
    • 对关键词做长度和敏感词过滤;减少无效的接口调用。

2. 数据质量优化

  • 数据清洗与标准化
    1. product_id去重,避免同一商品重复出现在不同页码或不同筛选条件的结果中;
    2. 过滤异常值(如批发价≤0、最小起订量≤0 的商品);
    3. 统一字段格式(如价格保留 2 位小数,产能统一为 "件 / 月" 单位);
    4. 缺失值填充(如无品牌的商品填充为 "无品牌",无商家类型的填充为 "未知")。
  • 多品类适配优化 :根据cate_id动态解析和展示字段,避免非目标品类字段干扰(如查询阀门类商品时隐藏钢材类专属字段)。

3. 合规与安全优化

  • 密钥与 Token 安全管理
    1. 生产环境禁止硬编码 app_key/app_secret/token,推荐存入配置中心(如 Nacos、Apollo),应用启动时动态拉取;
    2. Token 有效期为 24 小时,需设置定时任务自动刷新,避免因 Token 过期导致接口调用失败;
    3. 定期轮换 app_secret(建议每 3 个月一次),降低密钥泄露风险。
  • 重试与熔断机制
    1. 临时性错误 (403 频率超限、504 超时),采用指数退避重试策略(首次间隔 1 秒,之后翻倍,最多重试 3 次);
    2. 永久性错误(401 签名错误、400 参数错误),直接抛出异常,不重试;
    3. 引入熔断机制(如pybreaker库),当接口连续失败次数≥5 次时,暂停调用 5 分钟,避免雪崩效应。
  • 日志审计:记录每次调用的关键词、品类 ID、筛选条件、响应状态、耗时、返回数据量等信息,日志保留至少 30 天,满足合规审计要求。

六、扩展场景:接口联动与功能升级

  1. 全链路工业品采购闭环 :联动 cate_tree 获取品类层级 → item_search 按条件筛选商品列表 → item_get 批量获取商品详情 → supplier_get 查询商家资质 → 实现 "品类筛选 - 商品检索 - 详情查看 - 商家对接" 的采购全流程自动化;
  2. 商品价格监控系统 :定时调用 item_search 接口,统计指定品类商品的价格中位数、均价走势,生成日报 / 周报,当价格波动超过阈值时触发采购预警;
  3. 供应商匹配系统 :基于 item_search 返回的商家类型、供货能力、诚信等级数据,结合企业采购需求,智能匹配优质生产厂家或经销商;
  4. 定制化商品需求发布平台 :整合 item_search 中支持定制的商品数据,搭建定制需求对接平台,实现采购方需求与供应商产能的精准匹配
相关推荐
张彦峰ZYF26 分钟前
一套「策略化 Elasticsearch 召回平台」架构设计思路
大数据·elasticsearch·搜索引擎
Yuer202529 分钟前
为什么说在真正的合规体系里,“智能”是最不重要的指标之一。
人工智能·edca os·可控ai
一切尽在,你来30 分钟前
1.4 LangChain 1.2.7 核心架构概览
人工智能·langchain·ai编程
Giggle121833 分钟前
外卖 O2O 系统怎么选?从架构到部署方式的完整拆解
大数据·架构
爱吃大芒果33 分钟前
CANN ops-nn 算子开发指南:NPU 端神经网络计算加速实战
人工智能·深度学习·神经网络
聆风吟º35 分钟前
CANN ops-nn 实战指南:异构计算场景中神经网络算子的调用、调优与扩展技巧
人工智能·深度学习·神经网络·cann
2601_9495936541 分钟前
CANN加速人脸检测推理:多尺度特征金字塔与锚框优化
人工智能
小刘的大模型笔记42 分钟前
大模型LoRA微调全实战:普通电脑落地,附避坑手册
人工智能·电脑
乾元42 分钟前
身份与访问:行为生物识别(按键习惯、移动轨迹)的 AI 建模
运维·网络·人工智能·深度学习·安全·自动化·安全架构
happyprince43 分钟前
2026年02月07日全球AI前沿动态
人工智能