色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

DeepSeek API圖像與文本分類調(diào)用實(shí)戰(zhàn):鑒權(quán)、上傳與排錯(cuò)

DeepSeek API圖像與文本分類調(diào)用實(shí)戰(zhàn):鑒權(quán)、上傳與排錯(cuò) 簡(jiǎn)介這份面向具備Python基礎(chǔ)的開(kāi)發(fā)者與AI集成團(tuán)隊(duì)的實(shí)踐指南聚焦通過(guò)DeepSeek API完成圖像分類和文本分類的接入流程。壓縮包內(nèi)僅有1個(gè)docx文檔大小約17KB篇幅精煉便于快速查閱與隨項(xiàng)目歸檔。文檔圍繞requests發(fā)送HTTP請(qǐng)求、Pillow處理圖像、API密鑰鑒權(quán)、POST請(qǐng)求頭與請(qǐng)求體構(gòu)造展開(kāi)并給出圖像上傳與文本分類兩套代碼示例同時(shí)說(shuō)明成功響應(yīng)中標(biāo)簽與置信度的解析方式以及無(wú)效密鑰、負(fù)載格式異常等常見(jiàn)錯(cuò)誤的排查方向。已有2676人學(xué)習(xí)適合希望快速驗(yàn)證云端機(jī)器學(xué)習(xí)服務(wù)、搭建分類應(yīng)用原型的中級(jí)開(kāi)發(fā)者參考。其價(jià)值在于將接口準(zhǔn)備、請(qǐng)求發(fā)送、結(jié)果處理與圖像尺寸預(yù)處理串成完整鏈路幫助讀者理解可復(fù)用的調(diào)用骨架并據(jù)官方文檔替換示例地址與參數(shù)減少接入初期的試錯(cuò)成本。1. 從一次 401 說(shuō)起這份調(diào)用指南真正解決的是鏈路問(wèn)題第一次把 DeepSeek 的圖像分類接口接進(jìn)項(xiàng)目報(bào)錯(cuò)不是模型分錯(cuò)而是 401——密鑰被拼進(jìn)了 URL 而不是請(qǐng)求頭。這份《DeepSeek API 調(diào)用指南》解決的正是這類問(wèn)題它不講模型結(jié)構(gòu)只講怎么用 requests 發(fā)出一個(gè) HTTP 請(qǐng)求把一張圖或一段文字 POST 給云端機(jī)器學(xué)習(xí)服務(wù)再拿回 label 和 confidence 兩個(gè)字段。內(nèi)容覆蓋密鑰獲取、Pillow 裝環(huán)境、圖像上傳、文本分類復(fù)用同一套骨架以及狀態(tài)碼排查。適合已經(jīng)有 Python 基礎(chǔ)、手里有個(gè)原型要接分類能力的開(kāi)發(fā)者如果你的場(chǎng)景是每天幾千張圖要打標(biāo)或者一批文本要自動(dòng)歸類跟著走一遍能跑通最小閉環(huán)。它也明確寫(xiě)了端點(diǎn)只作示例真實(shí)地址要回查官方文檔這點(diǎn)比很多抄來(lái)抄去的教程靠譜。2. 請(qǐng)求鏈路拆開(kāi)看Bearer 鑒權(quán)、multipart 上傳與 224×224 預(yù)處理把一次分類調(diào)用拆開(kāi)其實(shí)只有四段拼請(qǐng)求頭、準(zhǔn)備 body、發(fā)出去、解析回來(lái)。四段里出錯(cuò)概率最高的是第二段因?yàn)閳D像和文本的 body 形態(tài)完全不同一個(gè)是二進(jìn)制表單一個(gè)是 JSON。選錯(cuò)形態(tài)服務(wù)端要么返回 415要么解析出一堆亂碼。這一章先把鏈路上每個(gè)零件的形狀說(shuō)清楚后面寫(xiě)代碼才不會(huì)靠試。2.1 密鑰與請(qǐng)求頭Bearer 的三種寫(xiě)法與唯一推薦API 密鑰在原料里被描述成「注冊(cè)登錄后拿到的一串字符串」它在 HTTP 層的角色就是身份憑證。常見(jiàn)做法是放進(jìn)Authorization頭格式為Bearer key注意 Bearer 和 key 之間有一個(gè)空格少一個(gè)空格就是 401。有些人圖省事把 key 塞進(jìn) query 參數(shù)瀏覽器地址欄、Nginx access log、代理轉(zhuǎn)發(fā)記錄里都會(huì)留下明文等于把鑰匙貼在門上不建議。更穩(wěn)的習(xí)慣是從環(huán)境變量讀密鑰代碼里不出現(xiàn)字面量。下面這段用來(lái)做連通性自檢發(fā)一個(gè)輕量請(qǐng)求能拿到 200 就說(shuō)明密鑰、網(wǎng)絡(luò)、DNS 三段都通再去調(diào)分類接口就不會(huì)把環(huán)境問(wèn)題和業(yè)務(wù)問(wèn)題混在一起排查。import os import requests # 密鑰從環(huán)境變量讀取不寫(xiě)死在代碼和倉(cāng)庫(kù)里 API_KEY os.environ[DEEPSEEK_API_KEY] headers { # Bearer 后面必須有一個(gè)空格這是最常見(jiàn)的 401 來(lái)源 Authorization: fBearer {API_KEY}, # JSON 請(qǐng)求體時(shí)手寫(xiě)這一行上傳文件時(shí)千萬(wàn)別手寫(xiě)見(jiàn) 2.2 Content-Type: application/json, } # 端點(diǎn)僅作示例實(shí)際地址以官方文檔為準(zhǔn)換成任意輕量接口即可做連通性自檢 PROBE_URL https://api.deepseek.com/v1/models try: resp requests.get(PROBE_URL, headersheaders, timeout(3.05, 10)) print(resp.status_code) # 只打印前 200 字符避免日志被大響應(yīng)撐爆 print(resp.text[:200]) except requests.RequestException as e: print(網(wǎng)絡(luò)層就失敗了先查 DNS / 出口 / 超時(shí)設(shè)置, e)邏輯說(shuō)明先做一次 GET 自檢把「認(rèn)證失敗」和「分類失敗」兩類問(wèn)題隔離開(kāi)。參數(shù)說(shuō)明timeout(3.05, 10)是連接和讀取兩段超時(shí)連接段給 3 秒左右足夠覆蓋絕大多數(shù)機(jī)房到公網(wǎng)的首包時(shí)間讀取段按接口響應(yīng)速度給單寫(xiě)一個(gè)數(shù)字的話requests 會(huì)把它同時(shí)當(dāng)作兩段超時(shí)讀大響應(yīng)時(shí)容易誤殺。headers里的Content-Type在 GET 上其實(shí)可以不帶保留是為了讓這段代碼和后面的 POST 保持同一份頭字典。還有一種寫(xiě)法是用requests的auth參數(shù)那是 HTTP Basic 認(rèn)證用戶名密碼形式的和 Bearer Token 不是一回事套上去只會(huì)得到 401 或 403。這一點(diǎn)在原料里沒(méi)展開(kāi)但它是新手最?;煜牡胤?。2.2 圖像為什么必須走 files 而不是 json原料給的示例用files上傳圖像而不是把圖像塞進(jìn) JSON這個(gè)選擇不是隨意的。二進(jìn)制數(shù)據(jù)進(jìn) JSON 必須先 base64 編碼體積會(huì)漲大約三分之一服務(wù)端還要多做一次解碼兩端都虧。業(yè)界常見(jiàn)三種上傳方式取舍如下方式體積開(kāi)銷服務(wù)端處理成本適用場(chǎng)景multipart/form-datafiles幾乎無(wú)膨脹低流式解析單圖、小批量、原型驗(yàn)證base64 塞進(jìn) JSON約 33%需要解碼內(nèi)存峰值高網(wǎng)關(guān)只允許 JSON 的受限環(huán)境先傳對(duì)象存儲(chǔ)再傳 URL無(wú)最低可異步批量任務(wù)、大圖、需要留檔原圖選 multipart 之后有一個(gè)必須知道的細(xì)節(jié)requests會(huì)在檢測(cè)到files參數(shù)時(shí)自動(dòng)生成Content-Type: multipart/form-data; boundary----xxxx這個(gè) boundary 是分隔各字段的隨機(jī)字符串。如果你在headers里手寫(xiě)了一個(gè)不帶 boundary 的Content-Type: multipart/form-datarequests 就不會(huì)再補(bǔ)服務(wù)端拿不到分隔符直接把整個(gè) body 當(dāng)成一個(gè)字段解析結(jié)果通常是 400 或解析出空文件。所以上傳圖像時(shí)頭字典里只留Authorization。import requests def upload_once(image_bytes: bytes, api_key: str, url: str): # 三元組順序是字段名、文件名、MIME 類型缺一不可 files {image: (image.jpg, image_bytes, image/jpeg)} # 附加的表單字段都只能是字符串?dāng)?shù)字要自己 str() 轉(zhuǎn)換 data {top_k: 3} headers {Authorization: fBearer {api_key}} # 不要加 Content-Type return requests.post( url, headersheaders, filesfiles, datadata, timeout(3.05, 60), # 圖像推理比文本慢讀取超時(shí)給寬一點(diǎn) )邏輯說(shuō)明files的 value 用三元組而不是裸 bytes是為了讓服務(wù)端拿到正確的文件名和 MIME如果只傳{image: image_bytes}requests 會(huì)默認(rèn)按application/octet-stream發(fā)部分服務(wù)端會(huì)因此拒絕。參數(shù)說(shuō)明top_k這類字段在 multipart 里一律是字符串傳3會(huì)被 requests 編碼成3但如果你自己用data{top_k: 3}再手動(dòng)拼 body就可能踩到類型錯(cuò)誤讀取超時(shí)給到 60 秒是因?yàn)閳D像接口往往要跑一次前向冷啟動(dòng)時(shí)更慢。2.3 Pillow 預(yù)處理尺寸、色彩模式與字節(jié)流復(fù)用原料里提到「模型可能要求 224×224」這是個(gè)假設(shè)值真實(shí)尺寸必須回查文檔。但無(wú)論目標(biāo)尺寸是多少預(yù)處理要做的事是固定的四件擺正方向、統(tǒng)一色彩模式、等比縮放加裁剪、控制編碼體積。方向這件事容易被忽略。手機(jī)拍的 JPEG 里帶 EXIF Orientation 標(biāo)記Image.open讀出來(lái)是原始像素方向直接縮放再上傳模型看到的是躺倒的貓。ImageOps.exif_transpose會(huì)按標(biāo)記旋轉(zhuǎn)并清掉這個(gè)標(biāo)記是一行就能解決的血淚經(jīng)驗(yàn)。色彩模式方面PNG 可能帶 alpha 通道灰度圖只有一個(gè)通道CMYK 的 JPEG 來(lái)自印刷物料這幾種直接送進(jìn)只接受三通道 RGB 的模型都會(huì)報(bào)錯(cuò)或得到詭異結(jié)果convert(RGB)統(tǒng)一掉。from PIL import Image, ImageOps import io def normalize_image(path: str, size(224, 224), quality: int 90) - bytes: with Image.open(path) as im: im ImageOps.exif_transpose(im) # 按 EXIF 擺正避免躺倒的貓 im im.convert(RGB) # 去 alpha、統(tǒng)一三通道 # fit 是等比縮放后居中裁剪resize 是硬拉伸后者會(huì)讓長(zhǎng)圖變形 im ImageOps.fit(im, size, methodImage.BICUBIC) buf io.BytesIO() im.save(buf, formatJPEG, qualityquality, optimizeTrue) return buf.getvalue() # 直接拿 bytes不落盤邏輯說(shuō)明整個(gè)函數(shù)在內(nèi)存里完成返回 bytes 直接喂給 2.2 的上傳函數(shù)省掉一次臨時(shí)文件讀寫(xiě)批量跑的時(shí)候差別很明顯。參數(shù)說(shuō)明size按文檔改不要照抄 224quality90是體積和畫(huà)質(zhì)的折中點(diǎn)壓到 75 以下在細(xì)粒度分類任務(wù)上會(huì)掉點(diǎn)optimizeTrue讓 Pillow 多花一點(diǎn) CPU 換更小的文件對(duì)上傳耗時(shí)是正收益methodImage.BICUBIC比默認(rèn)的最近鄰更適合縮小邊緣不會(huì)出現(xiàn)鋸齒。還有一個(gè)常被忽略的點(diǎn)Image.open是惰性的文件句柄會(huì)一直掛著批量處理幾千張時(shí)不關(guān)會(huì)撞到文件描述符上限。上面用with包住就是為了這個(gè)getvalue()必須在with塊內(nèi)調(diào)用出了塊對(duì)象就關(guān)了。3. 圖像分類調(diào)用的完整實(shí)現(xiàn)從讀文件到解析 label 與 confidence第二章把零件備齊了這一章組裝成能跑的東西。判斷一段調(diào)用代碼合不合格不看它能不能出結(jié)果看它在出錯(cuò)時(shí)能不能告訴你錯(cuò)在哪。所以下面的實(shí)現(xiàn)里超時(shí)、狀態(tài)碼分支、響應(yīng)結(jié)構(gòu)校驗(yàn)三樣都要有缺一樣在批量場(chǎng)景里都會(huì)變成黑匣子。3.1 最小可運(yùn)行腳本與逐行參數(shù)說(shuō)明原料給的主干是requests.post(url, headersheaders, filesfiles)加一個(gè)status_code 200的分支。這個(gè)骨架是對(duì)的但少了三樣?xùn)|西超時(shí)、非 200 分支的細(xì)分、JSON 解析的保護(hù)。網(wǎng)關(guān)返回 HTML 錯(cuò)誤頁(yè)時(shí)response.json()會(huì)拋JSONDecodeError異常信息里看不到狀態(tài)碼排查時(shí)非常難受。import os import requests from requests import Response API_KEY os.environ[DEEPSEEK_API_KEY] # 端點(diǎn)僅作示例請(qǐng)以官方文檔為準(zhǔn) CLASSIFY_URL https://api.deepseek.com/v1/classify def classify_image(image_bytes: bytes, top_k: int 3) - dict: files {image: (image.jpg, image_bytes, image/jpeg)} data {top_k: str(top_k)} headers {Authorization: fBearer {API_KEY}} try: resp: Response requests.post( CLASSIFY_URL, headersheaders, filesfiles, datadata, timeout(3.05, 60), ) except requests.Timeout: return {ok: False, code: TIMEOUT, msg: 請(qǐng)求超時(shí)考慮降分辨率或加重試} except requests.RequestException as e: return {ok: False, code: NETWORK, msg: str(e)} if resp.status_code ! 200: # 保留狀態(tài)碼和響應(yīng)體前 500 字符足夠定位大多數(shù)問(wèn)題 return { ok: False, code: resp.status_code, msg: resp.text[:500], } try: body resp.json() except ValueError: return {ok: False, code: BAD_JSON, msg: resp.text[:500]} # 原料里的響應(yīng)形如 {status:success,data:{label:...,confidence:...}} if body.get(status) ! success: return {ok: False, code: API_ERROR, msg: body.get(message, )} data_obj body.get(data) or {} return { ok: True, label: data_obj.get(label), confidence: float(data_obj.get(confidence) or 0.0), raw: body, }邏輯說(shuō)明返回統(tǒng)一成{ok: bool}的字典調(diào)用方只需要判斷ok不用在每個(gè)業(yè)務(wù)點(diǎn)重復(fù)寫(xiě) try/except失敗分支帶上code日志里聚合一下就能看出是密鑰問(wèn)題還是超時(shí)問(wèn)題占多數(shù)。參數(shù)說(shuō)明top_k轉(zhuǎn)成字符串是因?yàn)?multipart 表單字段只接受字符串超時(shí)元組里讀取段給 60 秒圖像推理冷啟動(dòng)時(shí)可能十幾秒給太短會(huì)誤判成服務(wù)不可用float(... or 0.0)是防御式寫(xiě)法萬(wàn)一服務(wù)端返回字符串0.98也能轉(zhuǎn)換返回 null 時(shí)不會(huì)拋TypeError。提示原料里的響應(yīng)字段status、data.label、data.confidence是示例結(jié)構(gòu)接入前先用一次真實(shí)請(qǐng)求確認(rèn)字段路徑再把這幾個(gè) key 抽成模塊級(jí)常量別散落在業(yè)務(wù)代碼里。3.2 響應(yīng)結(jié)構(gòu)解析與置信度閾值的業(yè)務(wù)用法confidence這個(gè)字段很容易被誤用。它是模型對(duì)本次預(yù)測(cè)的打分不是「這張圖有 98% 概率是貓」這種校準(zhǔn)過(guò)的概率跨類別、跨批次直接比大小并不嚴(yán)謹(jǐn)。但它作為分流信號(hào)是夠用的高分區(qū)自動(dòng)落庫(kù)低分區(qū)轉(zhuǎn)人工復(fù)核中間灰區(qū)打標(biāo)記后置處理。置信度區(qū)間處理策略說(shuō)明≥ 0.90自動(dòng)入庫(kù)抽檢 1% 做質(zhì)量監(jiān)控0.60 ~ 0.90入待復(fù)核隊(duì)列按天批量人工過(guò)一遍 0.60轉(zhuǎn)人工或丟棄重采往往是模糊圖、多主體圖或域外樣本def route(result: dict, high: float 0.90, low: float 0.60) - str: if not result.get(ok): return manual # 調(diào)用失敗一律進(jìn)人工不要靜默丟數(shù)據(jù) conf result[confidence] if conf high: return auto if conf low: return review return manual邏輯說(shuō)明把閾值寫(xiě)成函數(shù)參數(shù)而不是硬編碼是因?yàn)椴煌惸康姆植疾顒e很大做一次小樣本標(biāo)注就能把high和low調(diào)到位。參數(shù)說(shuō)明high調(diào)高會(huì)減少誤判但增加人工量通常先從 0.90 起步low調(diào)低會(huì)讓灰區(qū)變窄適合人力緊張的團(tuán)隊(duì)。這三個(gè)檔位建議先在歷史數(shù)據(jù)上跑一遍分布看灰區(qū)占比再定拍腦袋定閾值是后面返工的主要原因。3.3 批量與并發(fā)Session 復(fù)用、超時(shí)與重試單張調(diào)用跑通之后下一步一定是批量。批量場(chǎng)景里兩個(gè)改動(dòng)收益最大復(fù)用連接、加受控重試。requests.post每次都是一次全新的 TCP 加 TLS 握手批量幾百?gòu)垥r(shí)握手開(kāi)銷能占到總耗時(shí)的一半。用Session復(fù)用連接池配合HTTPAdapter設(shè)置池大小是標(biāo)準(zhǔn)做法。重試這塊有個(gè)真實(shí)的坑urllib3的Retry默認(rèn)allowed_methods不包含 POST所以你不顯式配置的話POST 請(qǐng)求根本不會(huì)重試代碼看起來(lái)加了重試其實(shí)沒(méi)生效。反過(guò)來(lái)如果你把 POST 加進(jìn)重試列表讀超時(shí)后重試又可能造成重復(fù)計(jì)費(fèi)或重復(fù)入庫(kù)。折中做法是只對(duì)連接類錯(cuò)誤和 429、5xx 重試讀超時(shí)不重試。import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry def build_session(pool_size: int 16) - requests.Session: session requests.Session() retry Retry( total3, connect3, # 只重試連接階段 read0, # 讀超時(shí)不重試避免重復(fù)計(jì)費(fèi) status3, # 429 / 5xx 重試 status_forcelist[429, 500, 502, 503, 504], allowed_methodsfrozenset([POST]), # 默認(rèn)不含 POST必須顯式加 backoff_factor0.5, # 退避 0.5s、1s、2s raise_on_statusFalse, ) adapter HTTPAdapter(max_retriesretry, pool_connectionspool_size, pool_maxsizepool_size) session.mount(https://, adapter) return session邏輯說(shuō)明connect和read分開(kāi)配置是關(guān)鍵連接失敗重試是安全的讀超時(shí)重試則可能讓同一張圖被計(jì)費(fèi)兩次。參數(shù)說(shuō)明pool_maxsize要和你開(kāi)的并發(fā)線程數(shù)匹配線程數(shù)大于池大小時(shí)多出來(lái)的線程會(huì)等待連接表現(xiàn)為「并發(fā)上不去」backoff_factor0.5產(chǎn)生指數(shù)退避對(duì) 429 限流場(chǎng)景很有效raise_on_statusFalse讓重試耗盡后把原始響應(yīng)返回給你而不是拋異常方便統(tǒng)一處理。并發(fā)執(zhí)行用ThreadPoolExecutor就夠這類任務(wù)是 IO 密集的協(xié)程或線程都行線程寫(xiě)起來(lái)簡(jiǎn)單。并發(fā)數(shù)別開(kāi)太大先看賬號(hào)的限流配額從 4 到 8 起步撞到 429 就往下調(diào)。4. 文本分類與接口復(fù)用同一套骨架換 payload原料里給的文本分類示例和圖像分類的差別只有兩處URL 不同、body 從 multipart 換成 JSON。這說(shuō)明兩個(gè)接口共享同一套 HTTP 骨架把它抽出來(lái)比復(fù)制兩份代碼劃算得多。抽的時(shí)候注意 JSON 和 multipart 在請(qǐng)求頭上的差異這是唯一不能共用的地方。4.1 文本接口的 JSON 載荷與編碼細(xì)節(jié)requests.post(url, jsondata)和requests.post(url, datajson.dumps(data))看起來(lái)一樣其實(shí)差兩點(diǎn)前者自動(dòng)設(shè)置Content-Type: application/json后者不會(huì)你需要自己在頭里寫(xiě)前者遇到不可序列化的對(duì)象會(huì)直接拋TypeError后者要到dumps階段才報(bào)。統(tǒng)一用json參數(shù)更省心。import requests def classify_text(text: str, url: str, api_key: str, top_k: int 3) - dict: # 超長(zhǎng)文本先截?cái)嗪芏嘟涌趯?duì)長(zhǎng)度有硬限制超了直接 400 if len(text) 4000: text text[:4000] payload {text: text, top_k: top_k} headers { Authorization: fBearer {api_key}, Content-Type: application/json, # 用 json 時(shí) requests 也會(huì)自動(dòng)加 } resp requests.post(url, headersheaders, jsonpayload, timeout(3.05, 15)) resp.raise_for_status() return resp.json()邏輯說(shuō)明jsonpayload讓 requests 用json.dumps序列化并自動(dòng)設(shè)頭中文會(huì)被轉(zhuǎn)成\uXXXX轉(zhuǎn)義這是合法的 JSON服務(wù)端能正確還原不需要加ensure_asciiFalse那個(gè)參數(shù)只在你自己dumps時(shí)有用。參數(shù)說(shuō)明文本截?cái)嚅L(zhǎng)度按接口文檔調(diào)整不要照抄 4000raise_for_status()在原型階段很方便會(huì)讓異常帶上狀態(tài)碼但生產(chǎn)代碼里建議像第 3 章那樣手動(dòng)分支因?yàn)槟阆肽玫巾憫?yīng)體做診斷。還有一點(diǎn)如果文本來(lái)自網(wǎng)頁(yè)抓取先做一次清洗去掉零寬字符、全角空格、HTML 實(shí)體。這些字符在 JSON 里合法但會(huì)讓分類結(jié)果偏移屬于典型的「模型沒(méi)問(wèn)題、數(shù)據(jù)有臟東西」。4.2 把圖像和文本兩類調(diào)用抽象成統(tǒng)一客戶端抽象的目標(biāo)不是少寫(xiě)幾行而是讓重試、日志、錯(cuò)誤碼映射只寫(xiě)一遍。下面的類把公共部分收在_post里兩個(gè)公開(kāi)方法只負(fù)責(zé)準(zhǔn)備 body。import logging import requests log logging.getLogger(__name__) class ClassifyClient: def __init__(self, api_key: str, base_url: str, session: requests.Session): self.api_key api_key self.base_url base_url.rstrip(/) # session 從外部注入方便復(fù)用連接池和重試策略 self.session session def _headers(self, with_json: bool False) - dict: headers {Authorization: fBearer {self.api_key}} if with_json: headers[Content-Type] application/json return headers def _post(self, path: str, **kwargs) - dict: url f{self.base_url}/{path.lstrip(/)} resp self.session.post(url, **kwargs) # 統(tǒng)一把非 200 轉(zhuǎn)成帶狀態(tài)碼的字典調(diào)用方不用各自判斷 if resp.status_code ! 200: log.warning(classify failed status%s body%s, resp.status_code, resp.text[:300]) return {ok: False, code: resp.status_code, msg: resp.text[:300]} try: return {ok: True, **resp.json()} except ValueError: return {ok: False, code: BAD_JSON, msg: resp.text[:300]} def image(self, image_bytes: bytes, top_k: int 3) - dict: return self._post( /v1/classify, # 示例路徑以文檔為準(zhǔn) headersself._headers(with_jsonFalse), files{image: (image.jpg, image_bytes, image/jpeg)}, data{top_k: str(top_k)}, timeout(3.05, 60), ) def text(self, text: str, top_k: int 3) - dict: return self._post( /v1/text_classify, # 示例路徑以文檔為準(zhǔn) headersself._headers(with_jsonTrue), json{text: text[:4000], top_k: top_k}, timeout(3.05, 15), )邏輯說(shuō)明session從構(gòu)造函數(shù)注入而不是在類里 new 一個(gè)這樣測(cè)試時(shí)可以換成 mock生產(chǎn)時(shí)可以復(fù)用第 3 章配好的連接池和重試策略。參數(shù)說(shuō)明_headers的with_json開(kāi)關(guān)是唯一區(qū)分兩類請(qǐng)求的地方multipart 請(qǐng)求不能帶Content-Type這是 2.2 講過(guò)的坑抽象的時(shí)候特別容易統(tǒng)一成「都帶上」然后圖像接口集體 415。base_url用rstrip(/)處理避免路徑拼出雙斜杠有些網(wǎng)關(guān)對(duì)//v1會(huì) 404。4.3 成本與延遲的取舍本地預(yù)處理還是服務(wù)端預(yù)處理圖像走的鏈路里預(yù)處理放哪邊是個(gè)真實(shí)的決策。放本地省帶寬、省服務(wù)端算力但吃客戶端 CPU放服務(wù)端省客戶端邏輯但上傳的是原圖體積可能大十倍。策略上傳體積客戶端 CPU結(jié)果一致性適用本地縮放到目標(biāo)尺寸小中高可控批量任務(wù)、移動(dòng)端上行本地只壓質(zhì)量不縮放中低中需要服務(wù)端統(tǒng)一裁切的場(chǎng)景原圖直傳大無(wú)取決于服務(wù)端實(shí)現(xiàn)需要保留細(xì)節(jié)的細(xì)粒度分類我一般會(huì)先在本地壓到長(zhǎng)邊 1024、質(zhì)量 85 上傳再拿一批樣本對(duì)比「原圖直傳」和「本地壓縮」的分類一致性。如果一致性差異在可接受范圍內(nèi)就固定用壓縮版本單張延遲能降下來(lái)一大截尤其是弱網(wǎng)環(huán)境。這個(gè)對(duì)比實(shí)驗(yàn)花不了多少時(shí)間但能省掉后面反復(fù)懷疑「是不是模型不行」的折騰。5. 避坑與排查401、415、413、超時(shí)重放這四類翻車現(xiàn)場(chǎng)前面幾章都是順著成功路徑寫(xiě)的這一章反過(guò)來(lái)按我踩過(guò)的順序排。每條都按「現(xiàn)象、原因、解決」寫(xiě)遇到類似的直接對(duì)號(hào)入座。5.1 401 Unauthorized密鑰對(duì)了但就是過(guò)不去現(xiàn)象密鑰確認(rèn)沒(méi)復(fù)制錯(cuò)用 curl 試也失敗響應(yīng)體里寫(xiě)著 invalid api key 或 missing authorization。原因通常有三個(gè)。一是Bearer和密鑰之間的空格被編輯器吃掉或者中間混進(jìn)了全角空格二是密鑰從環(huán)境變量讀出來(lái)時(shí)帶了尾部的換行echo復(fù)制的時(shí)候最容易帶上三是用了另一個(gè)產(chǎn)品的密鑰格式看著像但不是同一個(gè)認(rèn)證域。解決先打印repr(API_KEY)看首尾字符把不可見(jiàn)字符暴露出來(lái)如果尾部是\n或者\(yùn)r在讀取時(shí).strip()。再用 curl 獨(dú)立驗(yàn)證一次排除代碼層的干擾# 用環(huán)境變量傳密鑰避免密鑰進(jìn)入 shell history curl -s -o /dev/null -w %{http_code}\n \ -H Authorization: Bearer ${DEEPSEEK_API_KEY} \ https://api.deepseek.com/v1/models返回 200 說(shuō)明密鑰和網(wǎng)絡(luò)都沒(méi)問(wèn)題回到代碼里查頭字典返回 401 就換密鑰或確認(rèn)賬號(hào)權(quán)限。這行命令里的-o /dev/null丟掉響應(yīng)體-w %{http_code}只打狀態(tài)碼輸出干凈。5.2 415 / 400multipart 的 boundary 被自己弄丟了現(xiàn)象圖像上傳返回 415 Unsupported Media Type或者 400 說(shuō)缺少 file 字段但字段名明明寫(xiě)了image。原因頭字典里手寫(xiě)了Content-Type: multipart/form-data。requests 看到你已經(jīng)設(shè)了這個(gè)頭就不再補(bǔ) boundary服務(wù)端拿不到分隔符把整個(gè) body 解析成一個(gè)空字段。這個(gè)坑在把文本和圖像調(diào)用合并成同一個(gè)客戶端時(shí)特別容易犯因?yàn)槟銜?huì)下意識(shí)地給兩類請(qǐng)求都加上Content-Type。解決multipart 請(qǐng)求的頭里只留Authorization讓 requests 自己生成帶 boundary 的完整頭。排查時(shí)打印resp.request.headers看Content-Type里有沒(méi)有boundary這個(gè)參數(shù)沒(méi)有就是這個(gè)問(wèn)題。5.3 413 Payload Too Large圖像沒(méi)壓或者壓了但格式不對(duì)現(xiàn)象小圖能過(guò)大圖報(bào) 413或者本地明明縮放過(guò)上傳后還是 413。原因一是縮放用的resize保留了原始編碼格式PNG 截圖縮到 224 之后體積仍然不小二是只改了尺寸沒(méi)改質(zhì)量JPEG 以 quality100 保存一張 224×224 也能到幾百 KB三是服務(wù)端限制的是字節(jié)數(shù)不是像素?cái)?shù)你盯著尺寸看沒(méi)用。解決統(tǒng)一走 2.3 的normalize_image輸出固定為 JPEG、quality 可控、帶optimizeTrue并在發(fā)送前加一道體積閘門def guard(image_bytes: bytes, max_bytes: int 1_500_000) - bytes: # 超過(guò)閾值就降質(zhì)量重壓最多降三檔避免無(wú)限循環(huán) for q in (85, 70, 55): if len(image_bytes) max_bytes: break from PIL import Image import io buf io.BytesIO() Image.open(io.BytesIO(image_bytes)).save( buf, formatJPEG, qualityq, optimizeTrue) image_bytes buf.getvalue() return image_bytes參數(shù)說(shuō)明max_bytes按接口文檔給1.5 MB 只是個(gè)保守起點(diǎn)三檔質(zhì)量是經(jīng)驗(yàn)值再往下壓細(xì)粒度分類就會(huì)掉點(diǎn)。5.4 超時(shí)后重試導(dǎo)致重復(fù)計(jì)費(fèi)現(xiàn)象賬單上的調(diào)用次數(shù)比實(shí)際圖片數(shù)多或者結(jié)果表里出現(xiàn)重復(fù)記錄且這些記錄的耗時(shí)都集中在某個(gè)時(shí)間窗口。原因讀超時(shí)被算進(jìn)了重試條件。服務(wù)端其實(shí)已經(jīng)處理完了只是響應(yīng)在路上慢了一點(diǎn)客戶端等不及重發(fā)于是同一張圖被處理兩次。原料里的示例沒(méi)有涉及重試但一旦你按 3.3 加了HTTPAdapter這個(gè)問(wèn)題就會(huì)出現(xiàn)。解決Retry里把read設(shè)為 0只對(duì)連接錯(cuò)誤和 429、5xx 重試如果業(yè)務(wù)要求嚴(yán)格冪等就在請(qǐng)求里帶一個(gè)自己生成的request_id落庫(kù)時(shí)用它做唯一鍵重復(fù)的寫(xiě)入直接忽略。這個(gè)字段在服務(wù)端不支持透?jìng)鲿r(shí)也沒(méi)關(guān)系客戶端側(cè)做去重同樣有效。5.5 排查順序從外到內(nèi)別一上來(lái)就懷疑模型遇到分類結(jié)果不對(duì)先別改代碼。按這個(gè)順序走一遍八成問(wèn)題能在前三步定位先用 curl 驗(yàn)證密鑰和端點(diǎn)是否可達(dá)再用固定的一張樣本圖跑一次看響應(yīng)體的原始 JSON 長(zhǎng)什么樣然后比對(duì)預(yù)處理后的圖和原圖確認(rèn)沒(méi)被裁掉主體最后才看 label 和 confidence 的分布。把順序固定下來(lái)之后排查時(shí)間能從半小時(shí)壓到幾分鐘這個(gè)習(xí)慣比任何技巧都值錢。6. 進(jìn)階把分類調(diào)用做成可觀測(cè)的小服務(wù)跑通腳本和能上線之間差的是可觀測(cè)性。分類調(diào)用是個(gè)外部依賴失敗是常態(tài)沒(méi)有埋點(diǎn)的話你只能看到「今天結(jié)果少了」這種結(jié)論看不到是哪一類錯(cuò)誤在漲。我一般會(huì)在客戶端外面再包一層記錄四個(gè)字段請(qǐng)求 ID、端點(diǎn)、狀態(tài)碼、耗時(shí)。加上 label 和 confidence就能回答絕大多數(shù)運(yùn)營(yíng)問(wèn)題比如「昨天的低置信度占比為什么翻倍」。表結(jié)構(gòu)大概是這樣字段類型用途request_idstring客戶端生成的 UUID重試時(shí)復(fù)用用于去重endpointstringimage 或 text區(qū)分兩條鏈路status_codeintHTTP 狀態(tài)碼0 表示網(wǎng)絡(luò)層失敗latency_msint端到端耗時(shí)含重試labelstring分類結(jié)果失敗時(shí)為空confidencefloat置信度用于閾值分布監(jiān)控埋點(diǎn)代碼不用復(fù)雜一個(gè)裝飾器就夠import time import uuid import logging log logging.getLogger(classify) def traced(endpoint: str): def deco(fn): def wrapper(*args, **kwargs): rid kwargs.pop(request_id, None) or str(uuid.uuid4()) start time.perf_counter() status 0 try: result fn(*args, **kwargs) status result.get(code, 200) if result.get(ok) else result.get(code, -1) return result finally: cost int((time.perf_counter() - start) * 1000) # 一行 JSON 日志方便直接被采集器解析 log.info({rid:%s,ep:%s,status:%s,ms:%d}, rid, endpoint, status, cost) return wrapper return deco邏輯說(shuō)明request_id從外部傳入時(shí)復(fù)用重試鏈路里就能對(duì)齊同一次業(yè)務(wù)請(qǐng)求finally保證異常路徑也打點(diǎn)否則失敗樣本全丟監(jiān)控就成了只報(bào)喜不報(bào)憂。參數(shù)說(shuō)明耗時(shí)用perf_counter而不是time.time避免系統(tǒng)時(shí)間調(diào)整帶來(lái)的負(fù)數(shù)狀態(tài)碼在業(yè)務(wù)失敗時(shí)取自定義 code網(wǎng)絡(luò)層失敗統(tǒng)一記 0方便聚合。這套東西的另一個(gè)用法是回歸驗(yàn)證。接口或模型更新后拿一批固定樣本跑一遍比對(duì) label 變化率和置信度均值偏移比肉眼看幾個(gè)案例靠譜得多。我吃過(guò)一次虧換了預(yù)處理里的resize為ImageOps.fit忘了看長(zhǎng)圖樣本結(jié)果一批豎版商品圖被裁掉了底部文字分類整體偏了一檔兩天后才發(fā)現(xiàn)。從那以后我每次改動(dòng)預(yù)處理參數(shù)都強(qiáng)制走一遍固定樣本回歸比對(duì) label 和 confidence 的分布再發(fā)布。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
黄色区免费观看中文字幕| 97久久国产亚洲精品超碰热| 久久欧美激情| 韩日无码在线观看| 麻豆区久久久久亚| 亚洲欧洲网站免费观看| 欧美草草高清日韩视频| AV免费在线播放一区| 日本一片一区| 一区不卡在线观看av| 中文字幕在线观看网页| 国产精品盗摄 偷窥盗摄| 五月天婷婷小说| 国产中文字幕在线观看| 免费观看的黄色的网站| 春色综合免费| 综合网色| 男人天堂2019| 9/A片 | 婷婷综合伊人一区| 香蕉久久精品| 久久免费精品视频免一| 无码九九| 亚洲码和欧洲精品激情系列| 亚州熟女乱伦| 99天天超碰| 尹人免费观看视频在线| 亚州综合色图| 日本精品不卡一二三区| 亚洲成人帖图| 中文字暮97| 91处女在线观看| 久九九九九九九热| 熟妇xxxxx性春色| 日本不卡二三区| 国产精品嫩草久久久久| 日日日大屁股骚女人精品| 日韩中文字幕精品一区在线| 久久r精品| 开心五月深爱五月| 国产内射爽爽大片| 99re99视频在线免费观看| 中国大陆国产高清AⅤ毛片| 99热日| 国产精品香蕉热久久新品| 亚洲天堂电影网99999| 欧美激情综合色综合啪啪五月| 超碰欧美COM| 96AV精品| 久久久免费的精品| av网站免费看| 中日韩久久久免费看| 欧美天天插| 国产午夜精品理论片一二三区区 | 九九九九九九九九九九九蜜桃 | 亚洲中文日韩精品| 亚洲在线91| 天天舔九色婷婷| 91色久| 日韩av无码网站| 青青草色插素人| 日韩av在线播放不卡| 91老司机视频| 加勒比少妇AV婷婷六月天超碰超碰| 欧美v亚洲v日韩v最新在线二区 | 国产日韩欧美三级片| 熟女精品日韩一区二区三区| 啊啊啊要高潮了| 丝袜大香蕉| 色吧5亚洲| 国产1727欧美| 泰国AV在线观看| 无码天天操| 综合网亚洲在线| 综合干干干av久久久综合网| 国产精品一区二区黄片| 婷婷av在线中文字幕| 超碰在线1234区| 超碰超碰95| 无码聚合| 亚欧成人综合影院| 91搡老女人老妇女老熟女歌词翻译| 综合网久久| 思思热在线视频精品| 69视频入口| 噜噜噜亚洲精品| 五月婷婷大香蕉| 人人操人人干网页| 综合 亚洲 欧美| 91综合国产精品| 天天综合91在线| 色色色天美视频| 欧美在线播放| 亚洲丝袜综合| 午夜操一视频一区| 欧美日韩97在线| 久久精品老司| 国产女人高潮视频| 大香蕉人妻| 久久综合亚洲色1080p| 91亚洲人| 亚州欧美在线| 亚洲图片欧美另类综合免费视频大大香| 午夜精品一区二区三区三上悠亚| 中文字幕狠狠玩| 家庭乱伦国产精品| 欧美综合自拍| 亚洲免费97免费| 啊啊啊不要好疼视频| 日本色色色视频| 国产辣妈在线视频福利| 97在线观| 伊人欧美大香蕉视频| 久久少妇视频| 中文字幕少妇色| 天天综合精品| 日本福利二区视频| 婷婷伊人网| 99久久精品无码一区二区| 色欲天天综合久久久无码网中文| 亚洲熟女综合网| chaopen97久久| 色香综合天天影视综合 | 一级人妻性爱视频| 亚洲在线网站| 熟妇综合一区二区三区| 曰韩中文人妻视频| 97在线看| 日韩性爱长视频免费| 果冻传媒A片麻豆熟妇人妻| 啊啊啊啊好大好硬啊啊啊啊啊| 伊人久久国产免费观看视频| 蜜臀久久久国产| 日夜久久久九九九久| 国产四虎在线| 亚州乱码中文字幕综合久久久| 96AV久久久| 中文一区二区婷婷视频| 成人色女网| 久久久久久亚洲精品中文字幕人妻| 91人妻PORNY九色大屁股| 欧美麻豆成人同性GⅤ在线| 日本操逼视频导航| 国产日韩欧美三级片| www黄片免费看com| 色牛牛AV| 欧美日综合| 国产AV久久久蜜爱影集| 91狠狠综合久久| 亚洲av无码成人精品国产| 97jingpin| 国产视频第2页| 碰人碰碰人人开房人肉| 亚洲欧美综合图片| 人人操人人93| 2019久久久久久久久福利| 天堂俺去俺来也www久久婷婷| 欧美日韩另类在线| 看日韩操逼| 久久婷婷伊人| 男人天堂站| 蜜桃一区二区三区| 午夜噜噜噜| 久久大| 久久久久久亚洲Av无码精| 中文字幕日韩电影人妻| 3p国产色噜噜一区| 欧美亚综合色图| 久久久禁| 中文字幕一区二区无码成人| 欧美精品久久96人妻无码| 国产欧美日本亚洲精品| 色婷婷九月天天综合| 日本日皮视频逼| 久热这里| 伊蕉97蜜桃97狠狠综合干| 天堂综合| 野狼福利社区| 国产精品久久久无码AV网站| 91麻豆天美国产欧美| 日产中文字幕2020| 色香91| 夜夜爽夜夜| 亚洲天堂人妻熟妇视频| 亚洲欧美大| 成人五月天色网| 精品少妇一区二区| Av手机版天堂网| 亚洲熟女av日韩熟女| 伊人网av| 一区二区三区色综合| 东京太热男人的天堂久久久| 色色香蕉| 91粉芽高清在线一区二区| 成人精品视频一区二区| 大香蕉视频啪啪啪啪| 欧美亚洲自拍另类人妻| 99操逼| 青青草啪啪网| 亚州色图欧美色图| 国产一区在线观看无码AV| 色五月综合网| 欧美97视频| 九九九九精品| 亚洲 日韩 欧美 国产综合体| 久久久久久中文版| 久久AV无码AV| 大香蕉手机视频| 久久一二三四不卡| 欧美精品宗合| 精品女人999| 热久久无毒不卡| 日韩欧美性爱电影在线观看| 五月婷在线| 久久久精品久久| 蜜臀无码视频在线观看| 综合色图,成人综合网| 人妻激情在线视频| 欧美A片中文字幕| 国产免费永久精品无码| 亚洲性少妇| 日本操逼无码| 成人夜夜爽| 欧美性第1页| 91在线精品| 午夜精品久久久久| 色欧洲| 亚洲无码色| 日韩无码服务区| 精品中文字幕一区二区| 亚洲污一污二| AV天堂国产| 亚洲综合另类欧美久久久| 大奶的诱惑| 亚洲熟女中文字幕在线| 成人一级二级| 亚洲精品官网在线观看| 美女让帅哥通她小鸡鸡| 中日韩久久久| 国产视频第2页| 三级特黄60分钟播放| 欧美熟妇操操视频| 日本高清免费一本视频在线观看| 亚洲精品无码少妇久久| 久草国产在线视频| 99re3这里只有精品| 色哟哟国产精品免费网址| 男人天堂网手机版婷婷| 久久99午夜精品一区人妻| 91粉嫩萝控精品福利网站_精品影音先锋国 | 加勒比无码一区二区三区| 婷婷五月影院| 色综和网| 天天舔日美女视频| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 操逼1区| 国产精品亚洲天堂网址| 99操视频| 亚洲男人天堂网久久| 超碰综合色| 日韩性爱高清免费视频| 成人情色一区二区| 伊人丝袜美腿高跟在线观看高清| 欧美第一页| 农村少妇久久久久久久| 久久综合九色综合欧洲98| 国产av又色又爽又黄| 亚洲AV成人无码一区二区三区在线观看| 亚洲欧美中文日韩视频中国语| 大香蕉九九| 日韩精品一区二区三区色欲| 欧美专利1区2区3区4区5区免费| 亚洲成人色情五月天丁香花| 加勒比综合88| 伊人女女资源在线观看| 九九综合| 智利AV在线网| 久久性爱视频99| 一本一道vs波多野结衣| 狂操嫩妻视频一区二区三区| 天天超级碰碰碰| 99热这里只有精品18| 熟女乱伦A| 五月天伊人| 嗯嗯啊啊的视频| 屁股久久久久久久| 九九av| 91l欧美在线| 国产日本顶级一区二区三区| 天天摸夜夜添无码小视频| 亚洲美女自拍偷拍视频| 久久久不卡区一区二区三区久久久| 九九九久| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 操香逼| 猛猛干| 人妻日日干| 久久m| 999久久久| 天天流夜夜操| 无码九九九九| 天天射天天操天天干天天吃2018| 97人人干| 精品丰满熟妇人妻一区| 人人操人人操草草| 呦女网站| 性爱av在线免费观看| 啊啊啊啊二区好大| 小说区 图片区色 综合区| 亚洲一级性爱视频免费看| 欧美色图亚州激情| 思思热一热婷婷热一热| 91熟女在线| 日韩AV熟女乱伦| 亚洲综合一| 91色人妻| 今日头条成人一区二区三区四虎精品| 色欲Av人妻精品一区二| 岛国AV一区二区电影| 清纯唯美综合| 人妻久久久久久久久久久久久久久| 丝袜美腿丝袜| 九色97| 97AV在线观看| 免费看污网站| 人妻精品视频一区二区三区| 亚洲AV乱码专区国产噜噜亚洲| 中文字幕制服诱惑| 69超碰综合| 亚洲成人碰碰| 九九草| 五月丁香婷婷综合| 懂色Av一区二区三区| 99亚洲天堂| 久久久久九九九九九| 久久久免费的精品| 俺去啦自拍| 96久久精品一二三区色欲| 日韩成人人妻网站| www.久久爱| 夜夜爽夜夜操| 黄呦呦在线| 性暴力欧美猛交在线直播| 久久999久| 欧美精品xxxwww| 亚州图片第一页| 久久精品亚洲成a人天堂| 人妻少妇无码| 青青草原人妻| 99re热有精品视频国产| 人妻少妇无码| 久九干| 中文日本免费高清| 蜜臀久久99精品久久久久电影| 岛国精品视频在线观看| 黄色成人网久久久久久| 久久天堂网| 天天日天天插| 亚洲国产精品成人综合| 国产欧美后入| 2020视频1区2区3区| 日B操| 欧美色图人妻| 色综合91| 国产福利小视频高清在线观看| 99少妇内射| 婷婷三区| 2018色综合天天操| 亚洲性爱电影| 亚洲不雅视频1区二区| 密臀在线免费观看| 在线观看国产黄色| 国产精品com| 亚洲久草AV色图| 黄色二级片网站| 日va操| 天美传媒精品一区二区| AV色五月| 骚逼一区二区| 美女在线H91| 国产精品国产拍高清AV| 无码一区二区精品视频久久久春药| 91女优在线观看| 好淫网一二三视区| 色人久久| 婷婷视频在线免费观看| 99人妻碰碰碰久久久久禁片| 久久爱97| 老司机午夜福利视频一区二区| 亚洲午夜免费狠狠干| 久久成人国产| 免费精品国偷自产在线在线 | 无码国产精品午夜不卡(| 日韩三级伊人| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 96免费视频在线| 天天爽天天操| 天天插天天操| 精品国产人成在线| 岛国A V在线免费看| 日韩一级二级三级| 96精品一区| 日本 免费 一区二区三区 久久香蕉 | 亚洲 在线| 欧日韩在线观看| 成人贴图日韩欧美| 天天欧美色| 六月婷婷综合| 全球成人中文在线| 黄色区免费观看中文字幕| 欧美v日韩v亚洲v最新在线| 天天情欲宗合网| 国产丰满少妇久久久精品影院| 女色视频社区| AV中文在线可看| 五月天激情综合网| 国产女人成人精品视频| 久久久精| 亚洲影视高清第一页| 青青欧洲黑| 精品久久久九九九孕妇| 91色女| 人妻啊啊人妻啊| 激情婷婷五月天| 久热这里| 久久久久久午夜男人的天堂| 婷婷五月天成人| 日韩精品在线观看网站| 黑人精品成人一区二区三区 | 99啪啪| 亚洲熟女性高潮久久久| 亚洲成熟国产精品美女| 韩日无码在线观看| 99久久综合网| 日韩一区二区精品视频| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 亚洲av综合色区图片亚洲| 亚洲精品国产熟女| 巨爆乳一区二区爆乳区| 高潮的A片激情扒开一区| 日本性爱欧美性爱| 日本性爱网址| 丁香婷婷色五月| 69超碰综合| 日夜啪电影| 国产白嫩精品久久| 超碰久久网| 国产精品3| 婷婷人妻激情| 9久精品| 亚洲中字幕日本一区二区三区| 久久天天艹| 艹精品| 国产18精品亚洲精品| 激情综合二| 色婷婷综合网| 韩国轻伦国内自拍一区| 欧美韩国你懂得在线| 91九九九吃| 国产精选视频| 免费观看性欧美一级| 搡老人老9丨女老熟人| 婷婷综合激情| 青女在线| 91精品国产一区三一| 超碰97人人cao| 欧美精品一区二区少妇免费A片| 色情乱伦AV| 日韩久久三区| 97超碰这里只有精品| 91色亚洲| 亚一综合久久久久久久久久| 九九成人| 91熟女综合| 亚洲清纯综合| 国产9 9在线 | 亚洲| 婷婷五月天激情网| 97久久久精品| 九九亚洲| 国产精品呦一区二区三区| 色情婷婷| 好看的久久不射无码影视影院| 97精品一区二区视频在线观看| 日本道不卡| 国产午夜无码片在线观看影视| 91爽啪| 亚洲十八禁止| 97色插| 91在线国产后入风骚翘臀美女素人| 天天拍夜夜| 国产福利精品最新在线| 精品人妻一区二区免费蜜桃| 九九九九九九九九九国产精品| 欧美一区二区福利在线| 天天日少妇逼AV| 亚洲综合69| 亚洲色婷婷久久久综合日本| 最新国产精品久久精品| 神马久久69| 天天影视亚洲| 久久亚洲婷婷| 色偷综合| 日韩精品国产一区二区| 亚洲熟妇丝袜在线观看| 男人综合网| 婷婷久热| 天天性射网| AA特级绝黄| 中文字幕天天天天天| 日韩有码中文字幕女同性恋| 午夜高清成人在线视频| 国产精品久久久久久久久久久久久久久| 国产v亚洲v日韩v欧美v片另类| 亚洲激情在线| 亚洲人精品午夜不卡| 翔田千里无码中出中文字幕| 97视频网站在线观看| 高清无码学生妹高潮| 97人人操人人摸| 女生自91网站| 亚洲一区二区久久久久| 高潮嗯啊性感美女久久久| 懂色Av| 国产最新AV| 97免费视频在线| 亚洲欧洲综合视频在线| 国产蜜臀精品一区二区尤物| 被男人添B超爽视频| 国产熟妇一区二区| 国产精品 久久久精品一牛| 尤物av网站| 久久精品国产亚洲5555| 爱欲AV| 香伊人在线| 欧美精品双插| 中文字幕美女91| 刺激精品视频| 亚洲97久久精品亚洲| 亚洲欧美日韩中文久久自慰| 欧美日韩性爱无码| 亚洲玖玖爱| 黄片aaaaa一区| 日韩av色图| 97在线视频观看网站| 嗯嗯啊啊好疼| 国产精品久久伊人| 大逼色网站| 人、人、摸,人、人、草| 欧美日本不卡在线| 麻豆久久视频在线地址| 亚洲影院无码在线| 欧洲精品久久| 久久人人爽人人爽人人片Ⅴ| 欧美双插| 人妻密肉在线观看| 曰韩精品视频一区二区| 99福利社| 亚州精人品大香蕉| 国产无码久久高清| 国产风韵犹存熟妇三区| 婷婷五月天av| www.91人妻.com| 精人妻无码一区二区三区伊人直播| 无码抄逼网| 亚洲91色| 欧美精品三区| 日本三级中国三级99人妇网站| gogogo免费高清看中国国语| 91青青在线视频| 日本福利社| 亚洲日韩精品久久久久一区壹牛 | julia国产在线| 黄网在线播放| 国产精品又黄又猛又粗| 亚洲女人毛茸茸91| 天天爱天天操| 午夜120视频在线观看| 久久99热这里只频精品6学生| 亚洲无码偷拍| 精品女同一区| 怡红院怡春院| 大地资源在线观看中文第二页| 成·人免费午夜在线观看| av麻豆啪啪| 久久乐| 中文字幕在线观看永久| 丰满人妻一区二区三区免费| 亚洲男人的天堂AV| 99热免费| 99热最新| 天堂俺去俺来也www久久婷婷| 麻豆天美在线| 国产精品午夜福利视频| 曰韩欧美国产传媒麻豆第一区| 一本一道vs波多野结衣| 亚洲熟女乱色一区二区三区| 一区二区视频在看| 日韩无码久久熟女一级片| 色五月网址| 四虎影视永久在线免费| 久久久久久九九九九| 欧美日韩精品青青| 中文字幕伊人| 久久天天躁日日躁狠狠躁 | 草b在线| 啪啪综合网| 新婚人妻扶着粗大强行坐下| 国产欧美在线观看免费观看| 人人妻人人爽一区二区三区| 国产夫妻性生活视频| 北京美女一区二区| 夜夜操av亚洲一区二区| 久久乐| 久久精品性| 无码操逼网| 欧美操逼熟女| 黑人精品XXX一区一二区| 蜜臀中文字幕| 欧洲人妻视频| 97欧美色| 激情婷婷丁香网| 天美传媒精品久久视频| 日韩人妻精品| 四虎影视永久在线观看精品免费网站| 97精品国产手机| 人妻出轨一区二区三区| 小草精彩毛片| 久久精品亚洲东京热色播| 天天色香欲综合网| 青青操青娱乐| 超碰79人人乐| 九九热男人天堂| 欧美第一页性| 最新亚洲风情电影| 日本大香蕉| 久久大线蕉一区| 91久久18禁| 好舒服视频| 任你干在线视频| 久久久性少妇| 97碰碰色| 婷婷丁香激情| 我要去看2个日本美女.com曹逼| 亚洲婷婷丁香在线| 久久内射| 日韩熟女无码| 中文字幕精品一区欧美| 欧美一级特黄淫片在线观看| 亚洲AV噜噜狠狠网址蜜桃动漫| 国产精品美女在线一区| www久久国产精品| 99久久婷婷丁香| 欧美啪啪女女| AV 少妇 人妻 偷拍| 一区黄二区黄| 久久99手机免费视频| 美女丝袜激情小说| 少妇高潮九九九九九九九| 好爽视频在线观看| 99爱久久视频频| 久草热制服丝袜在线观看 | 99在线精品观看视频中文| 欧美色97| 中国熟女老妇仑乱一区二区三区| 国产日韩色综合| 国产懂色精品国产av| 久久婷色| 久久、1234| 欧美日韩国产精品久久色婷婷| 手机在线大香蕉| 色色毛片| 偷看洗澡一二三区美女| 97超碰美国| 刺激精品视频| 大鸡巴久久| 亚洲欧洲中文日韩女优乱码| 国产真实野战在线视频| 超碰97爽| 国产精品3| 97超碰精品| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | Blackedraw视频一区二区| 久久婷五月| 99操| 91久| 久久毛卡| 欧美亚洲性爱一区二区| 视频在线观看青青99国产| 一起草高清无码| 国产麻豆福利av在线播放| 亚洲综合网电影91| 1024午夜激情男人的天堂| 久久色网| 丁香九月激情| 亚洲污一污二| 久久久999| 九九性爱网| 亚洲综合性网址| 97超碰欧美| 天天色播亚洲综合网站| 久草新免费| 亚洲97在线| 老外又粗又长一晚做五次| 国产后入精品| 超碰偷拍| 日韩无码a片| 免费看污网站| 色爱天堂| 亚洲另类在线观看| 亚洲综合 欧美| 日本αv| 天天爽天天爽| 揉揉揉夜夜| ?亚洲伊人伊成久久人综合网| 91亚州欧美| 97亚洲欧美| 日韩999| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 美女大乳久久久久久久女人18| 久久久精精精| 青青草丝袜在线视频| 男生女生啊啊啊啊| 麻豆三极片| 伊人97色天使| 少妇精品久久| 日本免费中文一区二区三区四区 | 男同专区一区二区三区在线| 免费看欧美美女黄色大片 | 久久人体一区二区| 国产精品午夜福利亚洲综合网| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 综合久久久久久久综合网| 一区二区首页| 亚洲欧美清纯| 97久久久久久久精| 91中文字幕| 亚州精人品大香蕉| 久操免费在线| 蜜臀久久一区二区| 男人久久天堂| 2001天天操| 男人亚洲天堂| 97玖玖人妻| 日韩三级伊人| 国产性感在线观看| 日韩免费高清大片在线| 欧美熟女妇同| 无码天天操| 久久综合av| 亚洲强奸乱伦影视网| 99re在线视频这里只有精品| 在免费jIzzjIzz在线视频| 亚洲天堂久| 丁香五月激情啪啪| 资源新线在线天堂| 在线女人91| 黄片qw| 欧美综合网1| 91丨九色丨大屁股| 久久精品一区二区| 97欧美精品综合| 欧美 日韩 亚洲 春色| 精品无码一区二区人妻久久蜜桃| 精品久久99| 天天噜| 91久久久视| 天堂无码精品国产久| 蜜桃久久久久久久久久久久| 影音先锋国产精品| 999综合网| 懂色AV中文| 国产小黄片在线免费观看| 色777999综合| 熟妇在线视频一区二区| 国产精品久久久吖| 色亚州人久干视频在线观看免费版| 精品一区二区人妖| 97在线免费看视频| 黄色不卡视频| 巨爆乳肉感一区二区三区竹菊影视 | 欧美综合网| 欧美大片一区二区三区| 久综合网| 国内偷自视频区视频综合| 精品少妇99| 亚洲综合小视频小说在线观看| 午夜精品久久久| 久久精品国产亚洲AV成人直播| 97国产中文| 亚洲图片欧洲图片aⅴ| 国产精品网址| 日韩性色b| 99无码狠狠久久| 国模吧 一区二区三区| 97超碰色五月| 午夜福利 成人 91| 少妇啪啪自拍| 人人干人人搞人人摸| 九九热精品在线| 欧美淫乱视频| 无码WWW免费视频网站| 97亚洲国产影视| 亚洲有码第一页| 97碰| 国产精品青草综合久久| 亚洲成人妻日韩在线| 美女诱惑久久| 99色婷婷| 国产亚洲欧洲在线观看| 黄总AV色图| 欧美劲爆第一页| 九九热精品| 欧美色网| 蜜臀99999| 青青操轻轻| 91少妇人妻| 屌妞视频久久久久久久久久久久| 久夜视频| 91丝袜美女| 91香蕉国产尤物视频| 116美女午夜| 日本精品无码三级网站| yirendaxiangjiashipin| 久久久555| 久久国产99精品72福利 | 99久久综合| 九久9精品| 青青操97| 五月丁香拍拍激情综合三级| 超碰久久综合| 激情丁香五月婷婷| 九九九九免费| 校园春色亚洲无码| 秋霞曰韩R级| 亚洲日韩天堂| 国产AV天美| aⅴ日韩成人电影av在线免费看av大全| 猛交交| 亚洲国产成人精品久久久国产成人一区二区三.| 欧美色图成人网一区二区| 成人网站 免费观看| 亚洲色图欧美色图在线播放| 久悠悠av| 欧美日韩成人| 丁香五六月啪啪| 一卡二卡三卡| 亚洲欧洲精品成人| 激情五月丁香五月| 欧美真人抽搐一进一出gif | 九九成人精品| 色色操| 欧美日韩岛国大片在线观看| 人妻精品视频一区二区三区| 美国三级日本三级久久99| 国产美脚女优尤物在线观看| www.色婷婷色综合| 青青久日| 欧美草草| 熟女露脸激情自拍视频| 男人天堂站| 91狠| 97国产高清视频在线观看| 国产品精品自在在线午夜免费| 久操视频在线| 中文字幕神马久久| 伊人久久88国产女| 激情五月天综合网| 久久精品毛片免费不卡| 93人人操人人| 尹人免费观看视频在线| 无遮挡一级毛片视频免费的| 日韩三级在线观看网站| 国产精品视频91久久| 国内亚洲高清无码| 在线观看高清AV| 色在线综合| 日韩精品操少妇| 欧美超碰96| 欧美一品道| 蜜臀99久久国产| 国产亚洲欧美每日在线| 黑人操一区二区| 草草影院在线视频| 精品久久大胆人体| 精品欧美日韩在线观看| 午夜舔阴达高潮视频免费看| 国产传媒操逼视频| 久久国产精品91| 欧美高清在线| 天天亚洲| 手机看av网站在线看| 少妇一区二区三区在线观看| 伊人久大| 国产操操日韩三级黄| 男人的天堂在线2| 中文字幕福利视频一区二区三区在线观看| 日韩欧美性爱电影在线观看| 99热精品在线播放| 97超碰免费生活| 国产日韩中文字幕欧美| 黄色区免费观看中文字幕| 日韩一区二区熟女| 伊人操| 久久国产三区| 91日韩网站| 激情五月天色色网| 夜夜嗨老熟女AV一区二区三区| 中文字幕一区二区三区高清| 97精品国产97久久久久久户外免费| 丝袜视频一区二区在线播放国产中文| 国产精品播放| 精品区9| 试看60秒 爽| 中日无幕一二三四区| 好色美女九七第一页| 日韩成人大片在线观看| 久久有码视频| 欧美美女自慰一区二区三区| 大香蕉AV丝袜| 亚洲日韩人妻中文字幕一区| 欧美大香蕉97| 日韩一区二区高清在线观看的| 操曰本熟女| 精品久久人妻成人网| 国际精品久久久| 天天操天天射青青草| 久久久99免费| 国产黄色剧情影片麻豆免费播放| 九9精品| 中文字幕国产| 亚洲色欲一区二区三区| 先锋影音av先锋一区| 免费久久9999| 日韩一级片| 亚州性色| 91人妻视频在线| 无码WWW免费视频网站| 校园春色欧美| 精品少妇后入一区二区三区四区人妻巨乳 | 久9re热视频这里只有精品| 91精品丝袜久久久久久无码人妻| 不卡av在线中文字幕| 91操熟女视频| 伊人青青草久久| 97超碰碰碰| 免费1级a做爰片观看| 99自拍视频在线观看| 亚洲大色鬼| 99日精品欧美国产| 久久性爱视频免费看| 黄页网站成人免费| 噜噜噜亚洲精品| 91美乳| 日韩99999色| 嗯阿好爽好紧| 伊人天堂在线| 淫妻综合网| 操操啪| 色99在线| 综合影院亚洲| 日日狠狠久久偷偷色综合免费| 国产精品无码av| 四虎国产精品永久地址入口| 天天欧美| 人人操欧美风骚| 欧洲黄色网| 性爱Av免费| 国产精品成人蜜臀AV在线| 国产 热久久久久国产精品| 2019天天干天天操| 男人高清无码一区二区| 美中日韩无码| 日日日日日| 91在线综合网| 免费亚洲国产精品久久一区| 欧美天堂亚洲电影院一区在线播放| 绯色AV粉色AV蜜臀AV| 玖玖草久草99蜜月一区二区三区| 91热爆在线| 麻豆天美国美国产| 性欧美天天| 久草久日| 国产精品点击进入在线影院高清| 国产人妖的免费的视频| 免费av大片| 91美女中出| 久久久久大香青草精品综合| 97精品97| 亚洲成成熟女人综合一区二区| 大象AV在线| 被窝影院午夜看片无码| 日韩欧美经典在线观看| 91九久| 99久久久| 国产熟女免费观看久久| 国产成人精品日本视频| 日韩精品高清资源在线 | 久久国产精品m码| 一个国产在线综合网站| 亚洲宅男天堂| 97chaopenrihan| 四虎国产精品永久地址入口| 偷拍 精品另类 凸凹了四区| 9 1超碰九色| 久久免费精品96| 99热在线观看| 国产自偷| 亚洲做性| 久久精品一区二区三区蜜桃臀| 色噜噜人妻丝袜AV资源| 91国产精品熟女| 91精品电影18| 东北女人的毛片| 99啪啪视频| 天天享受天天看| 五十路熟女工口| 91丨国产丨白浆| 狠狠操综合| 蜜臀久久99精品久久久| 9 7超碰在线免费观看| 99超级碰免费视频| 日韩免费高清大片在线| 清纯唯美综合亚洲| 熟女丰满人妻一区| 少妇高潮对白在线观看| 久久性爱视频免费看| 韩日精品福利视频一区不卡在线免| 国产黄色视频久久| 欧美色视| 91五月天| 丰满人妻被猛烈进入中| 亚洲不卡一| 男人的天堂1024| 91香蕉国产尤物视频| 强奸少妇AV导航网| julia ann久久| 日亚韩精品视频二区三| 亚洲se91| 亚洲超碰综合网| 激情色色| 日韩免费簧片| 久草视频制服诱惑| 黄色免费网| 操淫穴亚洲五月丁香 | 国产女s强制榨精视频| 一本大道不卡一二三区| 欧美综合 站| 色麻豆AV| 免费无码国产精品v片在线观看| 激情无码日韩| 欧美亚洲天天| 熟女天天干| 日韩国产成人自拍视频| 九九热只有精品| 骚逼一区二区| 手机在线人成免费视频| 日本一区二区不卡| 天天色踪合| 欧美图片色综合| 成人AV在线电影| 天天弄天天操| 国产女大学生AV| 超碰色大香蕉| 天天天天天超碰| 午夜福利久久久噜久噜久久综合 | 亚洲中文字幕一区二区| 欧美少妇第一页| 嗯嗯啊中文字幕| 美女操逼福利视频| www.yeyecao| 91综合天天| 国产欧美日产一区二区三区 - 国产欧美日 | 国产一区二区三区久久久精品| 色97欧美| 欧美成人贴图| 操逼无毒无码免费视频| 天美精品一区二区三区四区在线观看| 国内三级自拍小视频在线观看| 丝袜剧情| 91人妻做a观看视频| 一本久道在线综合视频| 日本免费人成视频播放120秒| 亚洲精品国产日韩无码AV永久免| 精品人妻一区二区三区四区不卡在| 97日亚洲欧美| 深夜国产福利| 9Ⅰ老熟女| 大香蕉一级黄色片久久| 国产精品对白自产拍| 中文字幕福利视频一区二区三区在线观看| 国产热av| 国产路线专区| 日本阿v天堂在线观看| 久热影视| 99久久久无码精品国产人| 亚洲AV无码国产精品久久久久 | 亚洲日韩美女中文字幕乱| 99婷婷一区二区| 一本久道在线综合视频| 丰满人妻一区二区三区四区| 亚洲天堂7777| 嗯嗯啊中文字幕| 开心六月色| 五月天人妻综合| 在线αⅴ| 欧美性巨大╳╳╳╳╳高跟鞋| 一区二区三区机械有限公司| 日本天天吊| 99精品无码| 91搞逼视频| 每日更新AV| 亚洲欧洲视频小说在线观看| 97色97好| 九九AV| 五月婷婷六月丁香| 蜜桃精品视频一区| 九九热九九| 全球成人中文在线| 91真人天天在线| 97综合国产| 男人天堂2019亚洲| 亚洲激情 欧美色图| 久艹日日日| 国内偷自视频区视频综合| 九九玖玖精品| 丝袜美腿丝袜| 麻豆国产视频精品观看| 伦伦成年午夜免费视频| 91色鬼| 视频国产欧美在线播放| 婷婷九月| 男人天堂网站| 东北老女人的激情视频| 疯操AV| 秋霞影音一区二区三区| 美女91网址| www.99视频| 蜜桃传媒视频第一区入口在线看| 色情乱伦AV| 人人妻人人澡人人爽久久av| 91久久久久久| 亚洲成aⅴ人片不卡无码| 九九九九日本| 亚瑟国产精品久久无码| 欧美第一页| 亚洲精美粉嫩嫩泬在线观看 | 96免费视频在线| 青青青国产手线观看视频2| 嗯嗯啊啊视频在线看| 婷婷五月天激情四射| 91精品丝袜久久久久久无码人妻| 亚洲一曲日韩精品| 91精品久久久久| 宗合情欲网| 天天爽人人综合免费7799| 久久永久无码人妻视频| 青青青草伊人精品| 国产剧情一区在线观看| 九月丁香综合网| 精品人妻中文字幕高清|