
上個(gè)月朋友找我?guī)兔徍艘慌鷾?zhǔn)備上架的電商資料六個(gè)文檔加一張商品主圖按他們運(yùn)營(yíng)的說(shuō)法人工過(guò)一遍至少要半小時(shí)還總擔(dān)心漏掉細(xì)節(jié)。我實(shí)在不想對(duì)著Excel和Word來(lái)回切著看干脆用Qwen3.8-Max搭了一個(gè)商品資料包體檢助手把資料一次性丟進(jìn)去幾分鐘跑完一次查出27個(gè)問(wèn)題其中好幾個(gè)是人工審核時(shí)特別容易忽略的。這篇文章就把這個(gè)項(xiàng)目的完整思路、數(shù)據(jù)建模、提示詞設(shè)計(jì)、代碼寫法和踩坑經(jīng)歷都攤開(kāi)講適合正在做電商運(yùn)營(yíng)、供應(yīng)鏈管理、商品數(shù)據(jù)治理或者打算用大模型做文檔審核工具的朋友參考。1. 為什么需要給商品資料做體檢1.1 電商上架前資料審核的真實(shí)痛點(diǎn)電商的商品資料從來(lái)都不是一個(gè)文件而是散落在各個(gè)協(xié)作環(huán)節(jié)里的。商品基礎(chǔ)信息表可能由運(yùn)營(yíng)維護(hù)詳情頁(yè)文案是文案寫的規(guī)格參數(shù)在研發(fā)或采購(gòu)手里資質(zhì)證書(shū)在法務(wù)或品控那里價(jià)格庫(kù)存又是另一個(gè)系統(tǒng)導(dǎo)出的。每個(gè)人維護(hù)一份沒(méi)有人能保證它們完全同步。結(jié)果就是上架前必須有人把這幾份資料逐項(xiàng)比對(duì)發(fā)現(xiàn)問(wèn)題再一個(gè)個(gè)找人確認(rèn)修改。人工審核最大的問(wèn)題不是能力而是穩(wěn)定性和效率。人看前兩份資料時(shí)注意力還在線看到第五份時(shí)已經(jīng)麻木了很多不一致就順手放過(guò)去了。更麻煩的是每個(gè)審核人員的標(biāo)準(zhǔn)不一樣有的人會(huì)查極限詞有的人只看價(jià)格有的人只關(guān)心規(guī)格參數(shù)是否齊全最后商品上架后不是被平臺(tái)駁回就是被用戶投訴描述不符。我之前也試過(guò)用傳統(tǒng)規(guī)則腳本做檢查比如寫正則查手機(jī)號(hào)格式、用關(guān)鍵詞列表匹配違禁詞但效果很有限。規(guī)則引擎只能查長(zhǎng)得不對(duì)的問(wèn)題查不了語(yǔ)義不對(duì)的問(wèn)題。比如標(biāo)題寫無(wú)線吸塵器規(guī)格參數(shù)表里卻出現(xiàn)電源線長(zhǎng)度5米這在規(guī)則引擎看來(lái)沒(méi)有任何語(yǔ)法錯(cuò)誤但任何有常識(shí)的人都知道這是矛盾的。這類問(wèn)題必須靠語(yǔ)義理解才能發(fā)現(xiàn)。1.2 為什么選擇大模型而非純規(guī)則引擎?zhèn)鹘y(tǒng)自動(dòng)化審核的邏輯是窮舉把所有可能出錯(cuò)的地方變成規(guī)則一條條匹配。問(wèn)題是電商資料的錯(cuò)誤形態(tài)太開(kāi)放了而且很多錯(cuò)誤藏在上下文關(guān)系里。比如詳情頁(yè)文案里寫銷量全網(wǎng)第一這不是格式錯(cuò)誤是合規(guī)風(fēng)險(xiǎn)。比如價(jià)格表里的劃線價(jià)和實(shí)際售價(jià)倒掛平臺(tái)會(huì)判定為虛假促銷。再比如商品參數(shù)表標(biāo)注的容量是500ml但詳情頁(yè)主圖里印的卻是600ml這種圖文不一致靠關(guān)鍵詞規(guī)則幾乎不可能捕獲。大模型的優(yōu)勢(shì)在于它能同時(shí)理解多份資料中的語(yǔ)義并且能跨越文檔做比對(duì)。它不需要你事先定義什么算錯(cuò)誤而是根據(jù)你的檢查維度、行業(yè)常識(shí)和文檔內(nèi)容推斷出哪些地方存在矛盾、缺失或風(fēng)險(xiǎn)。用Qwen3.8-Max來(lái)做的另一個(gè)原因是它對(duì)中文電商語(yǔ)料的理解比通用模型更細(xì)能識(shí)別出全網(wǎng)最低價(jià)頂級(jí)品質(zhì)這類常見(jiàn)但違規(guī)的表達(dá)也能理解規(guī)格表里約/左右/±這些詞帶來(lái)的不確定性。1.3 整體方案選型Qwen3.8-Max在流程中的定位在設(shè)計(jì)這個(gè)體檢助手時(shí)我一開(kāi)始考慮的是讓模型一次性把所有文件和圖片都讀進(jìn)去直接輸出問(wèn)題列表。但實(shí)際跑下來(lái)發(fā)現(xiàn)不行六份資料的文本量加起來(lái)非常大再加上圖片信息很容易把上下文撐爆而且模型在一個(gè)超長(zhǎng)上下文里做精細(xì)比對(duì)容易遺漏中間部分的內(nèi)容顧頭不顧尾。后來(lái)我把流程改成三階段第一階段是資料結(jié)構(gòu)化和信息抽取第二階段是基于抽取結(jié)果做多維交叉檢查第三階段是把模型輸出結(jié)果整理成可執(zhí)行的問(wèn)題工單。Qwen3.8-Max在三個(gè)階段都有參與但它不是簡(jiǎn)單地被調(diào)用一次而是按需被調(diào)用多輪。第一階段用一次調(diào)用來(lái)抽取所有資料的關(guān)鍵信息并匯總成統(tǒng)一JSON第二階段按檢查維度分多次調(diào)用如果一次能塞下也可以一次調(diào)用每個(gè)維度獨(dú)立做交叉比對(duì)第三階段則主要靠本地代碼把模型返回的JSON結(jié)構(gòu)化成報(bào)表不再需要模型參與。這樣做的好處是每一輪任務(wù)更聚焦上下文更短模型的穩(wěn)定性和準(zhǔn)確率都會(huì)明顯提升。另一方面一旦某個(gè)維度出現(xiàn)問(wèn)題我只需要重新檢查對(duì)應(yīng)的那一段而不是重新讀一遍所有資料排查問(wèn)題的成本也低很多。2. 資料清單與數(shù)據(jù)建模把7個(gè)輸入變成統(tǒng)一結(jié)構(gòu)2.1 資料包里到底有什么先說(shuō)說(shuō)這次體檢的輸入。這里說(shuō)的6份資料和1張商品圖分別對(duì)應(yīng)真實(shí)的商品上架前常見(jiàn)的文件集合我按實(shí)際使用頻率整理成了一張清單序號(hào)資料名稱常見(jiàn)格式主要內(nèi)容1商品基礎(chǔ)信息表Excel/CSV商品名稱、標(biāo)題、賣點(diǎn)、類目、品牌、產(chǎn)地2規(guī)格參數(shù)表Excel/Word型號(hào)、尺寸、重量、功率、容量、材質(zhì)、執(zhí)行標(biāo)準(zhǔn)3詳情頁(yè)文案Word/Markdown商品賣點(diǎn)描述、功能說(shuō)明、使用場(chǎng)景、營(yíng)銷文案4價(jià)格與庫(kù)存表Excel/CSV售價(jià)、劃線價(jià)、成本價(jià)、庫(kù)存數(shù)量、SKU編碼5資質(zhì)與證書(shū)文件PDF/圖片質(zhì)檢報(bào)告、3C認(rèn)證、授權(quán)書(shū)、檢測(cè)標(biāo)準(zhǔn)編號(hào)6營(yíng)銷活動(dòng)說(shuō)明Excel/Word活動(dòng)名稱、優(yōu)惠力度、贈(zèng)品信息、活動(dòng)時(shí)間7商品主圖JPG/PNG商品外觀圖、包裝圖、宣傳視覺(jué)實(shí)際業(yè)務(wù)里還可能更多比如說(shuō)明書(shū)、售后政策、物流說(shuō)明但核心配置就是這七類。很多錯(cuò)誤不是某個(gè)文件內(nèi)部的問(wèn)題而是文件與文件之間對(duì)同一事實(shí)的描述不一致。所以第一步要做的不是檢查而是把不同格式的資料拉平放到同一個(gè)結(jié)構(gòu)里。2.2 數(shù)據(jù)建模定義一個(gè)統(tǒng)一的商品資料包模型我在設(shè)計(jì)時(shí)給所有輸入定義了一個(gè)統(tǒng)一的JSON結(jié)構(gòu)相當(dāng)于把六份資料和一個(gè)圖片縮略信息都映射到一份商品資料檔案里。給模型看的Prompt和最后的輸出檢查結(jié)果都基于這個(gè)結(jié)構(gòu)展開(kāi)。這個(gè)模型的結(jié)構(gòu)大致如下我簡(jiǎn)化了部分字段方便說(shuō)明思路{ product_name: 便攜榨汁杯, basic_info: { title: 無(wú)線便攜榨汁杯 家用隨行果汁機(jī), brand: 某品牌, category: 廚房小電, selling_points: [無(wú)線便攜, 一鍵操作, 易清洗] }, specs: { model: XZ-500, capacity_ml: 500, weight_g: 380, power_w: 60, material: Tritan, voltage_v: 5V/2A }, detail_copy: { sections: [ {heading: 核心賣點(diǎn), content: 600ml大容量一次榨汁滿足全天需求}, {heading: 續(xù)航, content: 滿電可榨15杯出差旅行必備} ] }, price_stock: { sku_list: [ {sku: XZ-500-白, price: 129, original_price: 199, stock: 320}, {sku: XZ-500-綠, price: 139, original_price: 199, stock: 0} ] }, certificates: { cert_numbers: [質(zhì)檢報(bào)告編號(hào): QZ-2024-0158], cert_status: 有效, cert_issuer: 某檢測(cè)機(jī)構(gòu) }, activity: { activity_name: 春季煥新, discount_info: 前100名下單立減30元, gift_info: 贈(zèng)定制杯刷 }, main_image_text: 容量500ml杯身材質(zhì)Tritan功率60W }這個(gè)模型不需要每個(gè)字段都填滿凡是能從資料里抽取到的就填抽不到的就保留空字符串或null。這樣設(shè)計(jì)有三個(gè)好處一是后續(xù)檢查腳本可以直接按字段做一致性比對(duì)二是模型在抽取時(shí)會(huì)更認(rèn)真因?yàn)樗滥愫竺嬉眠@個(gè)做檢查三是檢查結(jié)果可以追溯到具體是哪個(gè)環(huán)節(jié)丟了信息。2.3 圖片和PDF怎么進(jìn)模型OCR與多模態(tài)輸入的取舍商品圖在資料包中很重要但也是最難處理的。如果直接用多模態(tài)能力把整張圖送進(jìn)模型模型固然能看圖但是它對(duì)圖上的小字、標(biāo)簽、參數(shù)表細(xì)節(jié)的識(shí)別不一定可靠。實(shí)際項(xiàng)目中我更推薦把圖片分成兩條路處理商品主圖這種以視覺(jué)表達(dá)為主的圖直接讓模型看圖判斷圖片風(fēng)格、構(gòu)圖與文案是否匹配但圖片上如果印了參數(shù)、容量、生產(chǎn)日期等關(guān)鍵信息就必須先用OCR或表格識(shí)別工具把文字抽取出來(lái)再作為文本輸入補(bǔ)充進(jìn)去。我在這套體檢助手里也是這么做的。商品主圖先過(guò)一遍本地部署的OCR服務(wù)抽取到容量500ml材質(zhì)Tritan功率60W這樣的文本片段然后和圖片本身一起傳給后續(xù)檢查模塊。這樣既保留了模型對(duì)圖像內(nèi)容的感知又避免了圖片里有一行小字模型根本沒(méi)看到這種翻車場(chǎng)景。需要注意的是OCR的識(shí)別結(jié)果一定要保留坐標(biāo)或段落位置不要只抽文本。有時(shí)候詳情頁(yè)圖片上有500ml淡色水印OCR識(shí)別出來(lái)后你可能誤以為它是實(shí)際參數(shù)。寧可多保留一些上下文信息也不要讓后續(xù)模型被OCR噪音帶偏。3. 體檢助手核心實(shí)現(xiàn)提示詞、代碼與輸出設(shè)計(jì)3.1 檢查維度設(shè)計(jì)27個(gè)問(wèn)題從哪里來(lái)一次查出27個(gè)問(wèn)題不是瞎數(shù)的我在模型輸出格式里強(qiáng)制要求了多維度的檢查項(xiàng)。每個(gè)維度下預(yù)置了一些子項(xiàng)同時(shí)允許模型補(bǔ)充它認(rèn)為重要的額外問(wèn)題。我最終使用的檢查維度如下維度檢查內(nèi)容典型問(wèn)題示例完整性必填字段是否缺失、證書(shū)是否缺失缺少質(zhì)檢報(bào)告編號(hào)、缺少規(guī)格表中的材質(zhì)一致性不同資料對(duì)同一信息的描述是否矛盾標(biāo)題寫500ml參數(shù)表寫600ml合規(guī)性是否含極限詞、違禁詞全網(wǎng)銷量第一、最強(qiáng)吸力、絕對(duì)化用語(yǔ)規(guī)范性單位、格式、數(shù)值范圍是否規(guī)范電壓寫成5V/2A、容量單位不統(tǒng)一為ml圖片一致性圖片展示內(nèi)容與參數(shù)/文案是否一致主圖標(biāo)顏色綠色實(shí)際圖片是白色價(jià)格合理性劃線價(jià)、售價(jià)、成本之間關(guān)系是否合理劃線價(jià)與售價(jià)差值異常、成本高于售價(jià)活動(dòng)沖突活動(dòng)信息與價(jià)格、庫(kù)存、贈(zèng)品是否沖突活動(dòng)寫全店包郵實(shí)際商品為海外直郵我在提示詞里把每個(gè)維度都展開(kāi)成具體的檢查指令同時(shí)要求模型輸出問(wèn)題時(shí)必須帶上發(fā)現(xiàn)該問(wèn)題所在的文件來(lái)源不能只給一個(gè)結(jié)論。3.2 Prompt模板的寫法和參數(shù)選擇給模型的system prompt我采用的是角色定義任務(wù)說(shuō)明輸出格式約束三段式結(jié)構(gòu)。我沒(méi)有用請(qǐng)你扮演一名資深電商審核專家這種泛泛的角色扮演而是直接告訴它要干什么以及輸出什么格式的數(shù)據(jù)實(shí)測(cè)下來(lái)前者更容易產(chǎn)出穩(wěn)定結(jié)構(gòu)。下面是我實(shí)際用的一個(gè)簡(jiǎn)化版Prompt你是一位電商商品資料審核助手。你會(huì)收到一份整理后的商品資料JSON和一張商品主圖的OCR文本。請(qǐng)按照以下維度檢查問(wèn)題完整性、一致性、合規(guī)性、規(guī)范性、圖片一致性、價(jià)格合理性、活動(dòng)沖突。 要求 1. 對(duì)比不同資料之間的描述重點(diǎn)檢查數(shù)據(jù)不一致。 2. 合規(guī)性檢查重點(diǎn)關(guān)注絕對(duì)化用語(yǔ)、極限詞、虛假宣稱。 3. 每個(gè)問(wèn)題必須包括問(wèn)題編號(hào)、所屬檢查維度、涉及的文件、問(wèn)題描述、具體位置引用、修復(fù)建議。 4. 只輸出JSON數(shù)組不要輸出解釋文字。 輸出格式 [ { issue_id: ISSUE-001, dimension: 一致性, source: [規(guī)格參數(shù)表, 詳情頁(yè)文案], description: 規(guī)格參數(shù)表標(biāo)注容量為500ml詳情頁(yè)文案描述為600ml。, location: 規(guī)格參數(shù)表-容量字段詳情頁(yè)文案-核心賣點(diǎn)段落, suggestion: 確認(rèn)實(shí)際容量統(tǒng)一兩處描述并修改對(duì)應(yīng)參數(shù)。 } ]這種明確到輸出JSON數(shù)組的寫法配合response_format之類的結(jié)構(gòu)化輸出參數(shù)能極大減少后續(xù)解析的負(fù)擔(dān)。參數(shù)設(shè)置上我把temperature調(diào)到了0.1top_p調(diào)到0.9。溫度低是因?yàn)閷徍巳蝿?wù)要的是穩(wěn)定、可復(fù)現(xiàn)的結(jié)果不需要?jiǎng)?chuàng)造性發(fā)揮。如果你發(fā)現(xiàn)模型漏檢或者誤報(bào)先不要急著改溫度先檢查是不是Prompt里把檢查維度描述得不夠具體。3.3 關(guān)鍵代碼實(shí)現(xiàn)調(diào)用Qwen3.8-Max的完整流程下面這段代碼是我這個(gè)項(xiàng)目里的核心流程簡(jiǎn)化掉了一些業(yè)務(wù)細(xì)節(jié)。整體思路是讀入多份資料 - 用第一輪調(diào)用抽取并歸納資料 - 組裝成統(tǒng)一JSON - 用第二輪調(diào)用得到問(wèn)題列表 - 解析JSON并生成報(bào)表。import json from openai import OpenAI client OpenAI( api_keyyour_api_key, base_urlyour_dashscope_base_url # 以官方SDK文檔為準(zhǔn) ) def load_documents(file_paths: dict) - str: 加載多份資料并拼接成文本用于第一輪抽取。 sections [] for key, path in file_paths.items(): with open(path, r, encodingutf-8) as f: content f.read() sections.append(f### {key}\n{content}) return \n\n.join(sections) def extract_product_json(documents_text: str) - dict: 第一輪從多份資料中抽取統(tǒng)一商品資料模型。 prompt f 請(qǐng)從以下多份商品資料中抽取關(guān)鍵信息輸出為JSON。 必須覆蓋product_name、basic_info、specs、detail_copy、price_stock、certificates、activity。 無(wú)法確定的字段留空字符串。 {documents_text} resp client.chat.completions.create( modelqwen-max-v38, # 以官方模型版本為準(zhǔn) messages[ {role: system, content: 你是一個(gè)嚴(yán)謹(jǐn)?shù)纳唐焚Y料抽取器只輸出JSON。}, {role: user, content: prompt} ], temperature0.1, response_format{type: json_object} ) return json.loads(resp.choices[0].message.content) def check_product_issues(product_json: dict, image_ocr_text: str) - list: 第二輪基于統(tǒng)一JSON模型做多維度體檢。 prompt f 商品資料JSON {json.dumps(product_json, ensure_asciiFalse)} 商品主圖OCR文本 {image_ocr_text} 請(qǐng)按照系統(tǒng)指令中的7個(gè)檢查維度檢查問(wèn)題輸出JSON數(shù)組。 resp client.chat.completions.create( modelqwen-max-v38, # 以官方模型版本為準(zhǔn) messages[ {role: system, content: SYSTEM_CHECK_PROMPT}, {role: user, content: prompt} ], temperature0.1, response_format{type: json_object} ) data json.loads(resp.choices[0].message.content) return data.get(issues, data) if isinstance(data, dict) else data # 使用示例 documents { 商品基礎(chǔ)信息表: files/basic_info.xlsx, 規(guī)格參數(shù)表: files/specs.xlsx, 詳情頁(yè)文案: files/detail.docx, 價(jià)格與庫(kù)存表: files/price_stock.xlsx, 資質(zhì)與證書(shū)文件: files/cert.pdf, 營(yíng)銷活動(dòng)說(shuō)明: files/activity.xlsx } docs_text load_documents(documents) product_json extract_product_json(docs_text) issues check_product_issues(product_json, image_ocr_text容量500mlTritan材質(zhì)60W) print(json.dumps(issues, ensure_asciiFalse, indent2))實(shí)際項(xiàng)目中l(wèi)oad_documents這一步不是簡(jiǎn)單讀文本就能解決的。Excel要用openpyxl或pandas讀成文本PDF要用專門的庫(kù)抽取文本圖片上的表格信息可能要先用PP-Structure這類工具做版面識(shí)別。我當(dāng)時(shí)是把每個(gè)文件都先轉(zhuǎn)成markdown風(fēng)格的文本塊每個(gè)表格轉(zhuǎn)成管道的文本表這樣模型理解起來(lái)負(fù)擔(dān)最小。3.4 輸出層設(shè)計(jì)把模型結(jié)果變成可直接執(zhí)行的工單模型返回的是一堆JSON但這還不算完。真正要交付給運(yùn)營(yíng)、客服、供應(yīng)鏈同事的是一個(gè)可執(zhí)行的問(wèn)題清單。我在本地寫了一個(gè)后處理腳本做幾件事第一把模型返回的JSONissues數(shù)組轉(zhuǎn)成Excel表格列包括問(wèn)題編號(hào)、維度、涉及文件、問(wèn)題描述、位置引用、修復(fù)建議第二按風(fēng)險(xiǎn)等級(jí)給問(wèn)題排序把價(jià)格倒掛極限詞風(fēng)險(xiǎn)證書(shū)缺失這類嚴(yán)重問(wèn)題排到最前面第三為每個(gè)問(wèn)題生成一個(gè)簡(jiǎn)短的修復(fù)動(dòng)作描述方便對(duì)接人直接復(fù)制進(jìn)工單系統(tǒng)。這里有個(gè)很實(shí)用的技巧輸出Excel時(shí)盡量把涉及文件和具體位置做成獨(dú)立的列。因?yàn)殡娚虉F(tuán)隊(duì)大多用飛書(shū)或釘釘協(xié)作這些字段可以直接作為表格篩選條件誰(shuí)負(fù)責(zé)哪個(gè)文件就篩出誰(shuí)的問(wèn)題。模型給出問(wèn)題列表后人工復(fù)核的成本會(huì)低很多。4. 實(shí)操實(shí)錄一次真實(shí)的體檢結(jié)果分析4.1 輸入資料概覽為了說(shuō)清楚這套東西的實(shí)際效果我把當(dāng)時(shí)其中一個(gè)測(cè)試項(xiàng)目匿名化后拿出來(lái)講。這是一個(gè)便攜式榨汁杯商品資料包里有商品基礎(chǔ)信息表、規(guī)格參數(shù)表、詳情頁(yè)文案、價(jià)格與庫(kù)存表、資質(zhì)證書(shū)PDF、營(yíng)銷活動(dòng)說(shuō)明以及一張商品主圖。產(chǎn)品定位是無(wú)線便攜目標(biāo)人群是有通勤和出差場(chǎng)景的年輕人。資料不算復(fù)雜但我特意沒(méi)有預(yù)先做任何清洗完全模擬運(yùn)營(yíng)把一堆文件丟過(guò)來(lái)的真實(shí)場(chǎng)景。文件里既有表格又有長(zhǎng)段文案PDF證書(shū)里還夾雜著掃描件的水印。整個(gè)文本量折算下來(lái)大概1.8萬(wàn)個(gè)token左右。4.2 27個(gè)問(wèn)題分類和分布模型跑完一輪檢查之后返回了27個(gè)問(wèn)題。我按維度做了統(tǒng)計(jì)檢查維度問(wèn)題數(shù)量典型例子一致性8詳情頁(yè)寫600ml規(guī)格表寫500ml標(biāo)題寫無(wú)線參數(shù)表卻出現(xiàn)電源線長(zhǎng)1.5米合規(guī)性6文案出現(xiàn)最強(qiáng)榨汁活動(dòng)說(shuō)明寫全網(wǎng)最低價(jià)完整性5資質(zhì)證書(shū)掃描件缺報(bào)告編號(hào)綠色SKU缺少庫(kù)存對(duì)應(yīng)圖片規(guī)范性3充電參數(shù)寫成5V/2A未標(biāo)注單位容量單位在ml和L之間混用圖片一致性3主圖杯身顏色為白色標(biāo)題寫抹茶綠圖上有600ml水印實(shí)際規(guī)格為500ml價(jià)格合理性2綠色SKU售價(jià)139元?jiǎng)澗€價(jià)199元折扣力度約7折但成本價(jià)120元毛利偏低活動(dòng)沖突0本次活動(dòng)信息與價(jià)格庫(kù)存無(wú)沖突這個(gè)分布很有參考價(jià)值一致性類問(wèn)題最多這也是人工審核最容易漏掉的部分。模型一次性把這些差異找出來(lái)省去了運(yùn)營(yíng)在多個(gè)文件之間反復(fù)切來(lái)切去的痛苦。4.3 幾個(gè)典型問(wèn)題的處理細(xì)節(jié)我挑三個(gè)當(dāng)時(shí)印象最深的問(wèn)題展開(kāi)說(shuō)。第一個(gè)是容量標(biāo)識(shí)不一致。規(guī)格參數(shù)表里是500ml詳情頁(yè)正文第一段寫的是600ml商品主圖的OCR文本里又出現(xiàn)了600ml水印。人工只看單個(gè)文件根本發(fā)現(xiàn)不了問(wèn)題因?yàn)槊總€(gè)文件內(nèi)部讀起來(lái)都挺通順。模型把三個(gè)來(lái)源放在同一個(gè)上下文里對(duì)比后立刻給出容量信息存在三處沖突的結(jié)論。修復(fù)建議也很明確以規(guī)格參數(shù)表為準(zhǔn)或確認(rèn)實(shí)際容量后統(tǒng)一所有位置。第二個(gè)是合規(guī)風(fēng)險(xiǎn)。詳情頁(yè)文案里的最強(qiáng)榨汁和活動(dòng)說(shuō)明里的全網(wǎng)最低價(jià)都是絕對(duì)化用語(yǔ)。這類詞如果靠關(guān)鍵詞字典確實(shí)也能命中一部分但模型能看到上下文能更好判斷最強(qiáng)是在描述性能還是在違規(guī)宣傳減少誤報(bào)。第三個(gè)是圖片一致性。商品主圖顯示杯身是白色但標(biāo)題和商品基礎(chǔ)信息表里寫的顏色是抹茶綠。這種錯(cuò)誤發(fā)生的原因一般是運(yùn)營(yíng)套用了舊圖或者顏色字段填錯(cuò)。模型返回問(wèn)題時(shí)還把圖片OCR里識(shí)別到的白色字段一并列出修復(fù)建議是重新拍攝或替換主圖同時(shí)核對(duì)基礎(chǔ)信息表顏色字段。5. 避坑指南與問(wèn)題排查5.1 常見(jiàn)問(wèn)題速查表我把自己在這套方案落地過(guò)程中遇到的典型問(wèn)題整理成了一個(gè)速查表方便你直接對(duì)照排查現(xiàn)象可能原因處理辦法模型返回的JSON解析失敗未開(kāi)啟結(jié)構(gòu)化輸出或溫度過(guò)高設(shè)置response_format為json_object降低temperature到0.2以下漏檢某個(gè)文件里的問(wèn)題上下文太長(zhǎng)模型注意力分散拆分為多輪檢查每個(gè)文件或每個(gè)維度單獨(dú)調(diào)用一次把沒(méi)問(wèn)題說(shuō)成有問(wèn)題提示詞范圍太寬模型過(guò)度發(fā)揮增加僅基于資料中明確出現(xiàn)的信息判斷不推測(cè)同一問(wèn)題重復(fù)出現(xiàn)多次多個(gè)維度都觸發(fā)同一異常在提示詞中增加去重規(guī)則同一問(wèn)題只輸出一次問(wèn)題定位不到具體文件提取階段丟失了來(lái)源信息在抽取階段要求模型輸出每條信息的source_file字段處理速度太慢單次調(diào)用塞入過(guò)多內(nèi)容評(píng)估token數(shù)文本超過(guò)2萬(wàn)時(shí)優(yōu)先做分塊再做結(jié)果合并5.2 三個(gè)容易踩的坑第一個(gè)坑是過(guò)度相信模型的全知視角。一開(kāi)始我試圖讓模型直接讀取原始Excel和PDF文件內(nèi)容覺(jué)得大模型既然什么都會(huì)應(yīng)該能自己處理這些格式。結(jié)果發(fā)現(xiàn)不行表格結(jié)構(gòu)稍復(fù)雜一點(diǎn)模型就會(huì)讀串行。老老實(shí)實(shí)先用代碼把各種文件轉(zhuǎn)成Markdown文本再喂給模型穩(wěn)定性和準(zhǔn)確率都提升了一個(gè)級(jí)別。第二個(gè)坑是忽略了輸出字段約束。最初版本的Prompt只要求輸出所有問(wèn)題結(jié)果模型有時(shí)候輸出的是自然語(yǔ)言段落有時(shí)候又是結(jié)構(gòu)化的列表下游解析代碼要兼容好幾種格式寫得很痛苦。后來(lái)系統(tǒng)里強(qiáng)制約定輸出JSON數(shù)組每個(gè)問(wèn)題必須包含issue_id/dimension/source/description/location/suggestion這些字段缺一不可解析邏輯才穩(wěn)定下來(lái)。第三個(gè)坑是成本失控。一開(kāi)始我圖省事全文一次性丟給模型每次調(diào)用消耗大量token。后來(lái)發(fā)現(xiàn)第一階段抽取和第二輪檢查分開(kāi)跑總token反而少了很多因?yàn)槌槿‰A段可以把重復(fù)的表格內(nèi)容精簡(jiǎn)掉檢查階段只面對(duì)一個(gè)干凈的結(jié)構(gòu)化JSON檢查效率和效果都會(huì)提高。5.3 成本與響應(yīng)時(shí)間控制建議用大模型做批處理審核心里一定要有成本賬。我當(dāng)時(shí)統(tǒng)計(jì)了一下一個(gè)標(biāo)準(zhǔn)資料包6份文檔1張圖如果全部用文本方式處理總token大概在2萬(wàn)到3萬(wàn)之間。用Qwen3.8-Max跑一輪的成本并不高但如果每天要處理幾百個(gè)SKU積少成多也是一筆不小的開(kāi)支。控制成本的辦法有幾個(gè)。一是先做規(guī)則預(yù)篩選比如用正則把必填字段缺失、價(jià)格倒掛這種規(guī)則性很強(qiáng)的問(wèn)題先篩掉剩下的語(yǔ)義類問(wèn)題再交給大模型。二是合理利用模型上下文能力一個(gè)模型實(shí)例在同一輪里盡量讓它處理多個(gè)SKU減少重復(fù)的Prompt開(kāi)銷和網(wǎng)絡(luò)請(qǐng)求開(kāi)銷。三是對(duì)結(jié)果做緩存同一個(gè)商品資料如果沒(méi)變過(guò)就直接讀歷史檢查結(jié)果不用重新跑一遍。四是設(shè)置好超時(shí)和重試機(jī)制避免因?yàn)閭€(gè)別調(diào)用超時(shí)導(dǎo)致整個(gè)批次失敗重新跑一遍反而更費(fèi)錢。在實(shí)際使用中我建議把抽取商品資料模型和問(wèn)題檢查做成兩個(gè)獨(dú)立的API調(diào)用不要合并成一個(gè)超級(jí)Prompt。兩者的目的不同合并了反而會(huì)影響模型的專注度增加token消耗還對(duì)排錯(cuò)不友好。6. 這個(gè)助手還能怎么擴(kuò)展項(xiàng)目跑通之后我又順手做了兩個(gè)小擴(kuò)展。一個(gè)是在輸出Excel之外生成了一個(gè)Markdown格式的上架修改清單運(yùn)營(yíng)可以直接把它貼到飛書(shū)文檔里問(wèn)題、負(fù)責(zé)人、修改狀態(tài)一目了然。另一個(gè)是把檢查結(jié)果接了個(gè)簡(jiǎn)單的回調(diào)如果某個(gè)SKU連續(xù)兩次檢查都出現(xiàn)合規(guī)類問(wèn)題會(huì)自動(dòng)把對(duì)應(yīng)商品標(biāo)記為高危需復(fù)審方便品控團(tuán)隊(duì)優(yōu)先處理。目前這套體檢助手已經(jīng)不只是我自己在用我把它包裝成了一個(gè)簡(jiǎn)單的內(nèi)部工具輸入是商品資料壓縮包輸出是一個(gè)問(wèn)題報(bào)告。整個(gè)流程走下來(lái)最大的感受是大模型解決的不是能不能發(fā)現(xiàn)矛盾的問(wèn)題而是把發(fā)現(xiàn)矛盾這件本來(lái)要人工花大量時(shí)間做的事情變成了一個(gè)可以隨時(shí)調(diào)用、可重復(fù)、可追溯的標(biāo)準(zhǔn)流程。如果你也想搭一個(gè)類似的工具我的建議是從最痛的一兩個(gè)場(chǎng)景切入先別急著做成全流程自動(dòng)化。比如只看價(jià)格與庫(kù)存的一致性或者只看詳情頁(yè)的合規(guī)性跑通之后再逐步加維度。資料類型越收斂模型的表現(xiàn)越可控后續(xù)維護(hù)成本也越低。最后再分享一個(gè)小技巧在Prompt里給模型留一個(gè)其他問(wèn)題的開(kāi)放檢查項(xiàng)讓它在完成預(yù)設(shè)維度檢查之外自主判斷還有哪些值得關(guān)注的問(wèn)題。我這次查出的27個(gè)問(wèn)題里有好幾個(gè)就是模型主動(dòng)補(bǔ)出來(lái)的比如規(guī)格參數(shù)表里電壓值標(biāo)注方式不符合平臺(tái)規(guī)范這種細(xì)顆粒問(wèn)題。開(kāi)放項(xiàng)既能兜底又能幫你發(fā)現(xiàn)之前沒(méi)考慮到的審核盲區(qū)。