国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

OpenAPI自動(dòng)生成DeepSeek工具定義:告別手寫50個(gè)函數(shù)

OpenAPI自動(dòng)生成DeepSeek工具定義:告別手寫50個(gè)函數(shù) 1. 從手寫 50 個(gè)工具函數(shù)說(shuō)起這個(gè)項(xiàng)目到底在解決什么問(wèn)題如果你最近在折騰大模型應(yīng)用尤其是想讓模型調(diào)用外部 REST API 來(lái)完成實(shí)際任務(wù)那你大概率經(jīng)歷過(guò)這樣一個(gè)階段打開(kāi)編輯器新建一個(gè)tools.py然后開(kāi)始一個(gè)接口一個(gè)接口地手寫工具定義。每個(gè)工具都要寫名稱、描述、參數(shù) schema、必填項(xiàng)、類型約束寫完還要跟模型反復(fù)調(diào)試描述文案確保它能在正確的場(chǎng)景下選中正確的工具。50 個(gè)接口是什么概念假設(shè)每個(gè)工具平均 30 行定義代碼那就是 1500 行純手工維護(hù)的樣板代碼。更麻煩的是后端接口一改字段你得手動(dòng)同步參數(shù)類型從 string 改成 integer你得挨個(gè)檢查某個(gè)接口新增了可選參數(shù)你還得回去補(bǔ) schema。這種活干一次兩次還行接口數(shù)量上到幾十個(gè)之后維護(hù)成本會(huì)迅速失控。這個(gè)項(xiàng)目的核心思路很直接既然 REST API 本身已經(jīng)有 OpenAPISwagger規(guī)范描述為什么還要人工再翻譯一遍成工具定義讓程序讀取 OpenAPI 文檔自動(dòng)生成符合 DeepSeek 工具調(diào)用格式的 Tools 定義把人力從重復(fù)勞動(dòng)里解放出來(lái)。一句話概括輸入一份 OpenAPI 規(guī)范文件輸出一組可以直接喂給 DeepSeek 的工具定義中間不需要你手寫任何 schema。它適合誰(shuí)三類人最受益。第一類是做 AI Agent 應(yīng)用的開(kāi)發(fā)者手里有一堆內(nèi)部或第三方 REST 接口需要接入模型第二類是做企業(yè)級(jí)集成的工程師公司內(nèi)部服務(wù)都帶 Swagger 文檔想快速搭一個(gè)能調(diào)這些服務(wù)的智能助手第三類是想學(xué)習(xí)工具調(diào)用機(jī)制的技術(shù)愛(ài)好者通過(guò)自動(dòng)生成的過(guò)程反過(guò)來(lái)理解工具定義的結(jié)構(gòu)和約束。我自己的場(chǎng)景是手頭有一個(gè)包含 50 多個(gè)接口的后端服務(wù)全部有完整的 OpenAPI 3.0 文檔之前手工寫了 20 多個(gè)工具就已經(jīng)快崩潰了字段對(duì)不上、描述寫不準(zhǔn)、模型選錯(cuò)工具的問(wèn)題層出不窮。后來(lái)把這套自動(dòng)生成流程跑通維護(hù)成本直接降了一個(gè)數(shù)量級(jí)。下面把這套東西的完整思路和實(shí)現(xiàn)細(xì)節(jié)拆開(kāi)講。2. 整體設(shè)計(jì)思路為什么是 OpenAPI 到 Tools 的自動(dòng)映射2.1 手寫工具定義的三個(gè)致命痛點(diǎn)在講方案之前先把問(wèn)題說(shuō)透這樣你才能理解后面每個(gè)設(shè)計(jì)決策的合理性。痛點(diǎn)一schema 與接口實(shí)際定義脫節(jié)。手寫工具定義時(shí)參數(shù)類型、枚舉值、必填項(xiàng)這些信息全靠人肉從接口文檔里抄。接口文檔更新了工具定義不會(huì)自動(dòng)跟著變。我遇到過(guò)最離譜的一次是后端把某個(gè)參數(shù)從必填改成了可選但工具定義里還標(biāo)著 required導(dǎo)致模型每次調(diào)用都硬塞一個(gè)空值進(jìn)去接口直接報(bào)參數(shù)校驗(yàn)失敗。痛點(diǎn)二描述文案質(zhì)量參差不齊。工具能不能被模型正確選中很大程度上取決于 description 寫得好不好。50 個(gè)工具每個(gè)都要寫一段既準(zhǔn)確又能讓模型理解使用場(chǎng)景的描述這本身就是個(gè)文案活。不同人寫的風(fēng)格不統(tǒng)一模型在相似工具之間就容易選錯(cuò)。痛點(diǎn)三維護(hù)成本隨接口數(shù)量線性增長(zhǎng)。10 個(gè)接口還能忍50 個(gè)接口就是災(zāi)難。每次接口變更都要人工比對(duì)、修改、測(cè)試稍不留神就漏掉一個(gè)。2.2 為什么選 OpenAPI 作為中間層OpenAPI 規(guī)范本身就是對(duì) REST API 的結(jié)構(gòu)化描述它天然包含了工具定義需要的幾乎所有信息工具定義需要的字段OpenAPI 中的對(duì)應(yīng)位置工具名稱operationId 或 path method 組合工具描述summary / description參數(shù)列表parameterspath、query、header請(qǐng)求體結(jié)構(gòu)requestBody 的 schema參數(shù)類型schema.type必填項(xiàng)required 數(shù)組枚舉約束schema.enum參數(shù)說(shuō)明每個(gè)參數(shù)的 description也就是說(shuō)OpenAPI 文檔里已經(jīng)有一份完整的、機(jī)器可讀的接口描述工具定義本質(zhì)上就是這份描述的另一種表達(dá)形式。中間做一次格式轉(zhuǎn)換比人工重新寫一遍可靠得多也快得多。2.3 為什么目標(biāo)格式是 DeepSeek 的 ToolsDeepSeek 的工具調(diào)用格式遵循主流大模型的 function calling 規(guī)范工具定義是一個(gè) JSON 數(shù)組每個(gè)元素包含type: function和function對(duì)象function 里有name、description、parametersJSON Schema 格式。這個(gè)結(jié)構(gòu)和 OpenAPI 的 schema 高度相似轉(zhuǎn)換起來(lái)映射關(guān)系清晰不需要做太多語(yǔ)義層面的猜測(cè)。選 DeepSeek 還有一個(gè)實(shí)際考慮它的工具調(diào)用能力在國(guó)產(chǎn)模型里比較扎實(shí)對(duì) JSON Schema 的理解到位參數(shù)提取準(zhǔn)確率不錯(cuò)而且接口兼容性好本地部署和云端調(diào)用都能用。你把這套生成邏輯跑通后換成其他遵循相同 function calling 規(guī)范的模型改一下輸出格式就行核心轉(zhuǎn)換邏輯是通用的。2.4 整體架構(gòu)三步走整個(gè)流程拆成三步每步職責(zé)單一方便調(diào)試和替換解析層讀取 OpenAPI 文件JSON 或 YAML解析成 Python 字典結(jié)構(gòu)提取所有 paths 和對(duì)應(yīng)的操作。轉(zhuǎn)換層把每個(gè)操作映射成一個(gè)工具定義處理名稱生成、描述拼接、參數(shù)合并、schema 轉(zhuǎn)換、引用解析。輸出層把工具定義列表序列化成 DeepSeek 需要的格式寫入文件或直接傳給模型接口。這個(gè)分層的好處是如果哪天 OpenAPI 版本升級(jí)了或者目標(biāo)模型換了工具格式你只需要改對(duì)應(yīng)那一層不用推倒重來(lái)。3. 核心轉(zhuǎn)換邏輯拆解從接口到工具的每一步3.1 工具名稱的生成策略工具名稱是模型選擇工具的第一道線索必須滿足兩個(gè)條件唯一、可讀。OpenAPI 里的operationId通常是最好的來(lái)源比如getUserById、createOrder語(yǔ)義清晰。但現(xiàn)實(shí)情況是很多接口文檔的 operationId 要么缺失要么是自動(dòng)生成的亂碼比如getUsingGET_1這時(shí)候就得有兜底方案。我的策略是三級(jí)優(yōu)先優(yōu)先用operationId如果它存在且符合命名規(guī)范字母數(shù)字下劃線不以數(shù)字開(kāi)頭。其次用method path拼接比如GET /users/{id}轉(zhuǎn)成get_users_by_id把路徑參數(shù)也體現(xiàn)進(jìn)去。最后做去重處理如果生成的名稱重復(fù)追加數(shù)字后綴。這里有個(gè)細(xì)節(jié)要注意DeepSeek 對(duì)工具名稱的字符集有要求通常只接受字母、數(shù)字、下劃線和短橫線長(zhǎng)度也有限制。所以生成后要做一次清洗把斜杠、花括號(hào)、點(diǎn)號(hào)這些替換掉超長(zhǎng)的截?cái)?。import re def sanitize_tool_name(name, max_length64): # 把非字母數(shù)字下劃線短橫線的字符替換成下劃線 name re.sub(r[^a-zA-Z0-9_-], _, name) # 合并連續(xù)下劃線 name re.sub(r_, _, name) # 去掉首尾下劃線 name name.strip(_) # 截?cái)?if len(name) max_length: name name[:max_length] return name3.2 描述文案的自動(dòng)拼接描述決定了模型在什么場(chǎng)景下會(huì)選這個(gè)工具重要性不亞于名稱。OpenAPI 里的summary和description是主要素材但往往不夠完整。我的做法是把多個(gè)來(lái)源的信息拼起來(lái)summary一句話概括放最前面。description詳細(xì)說(shuō)明補(bǔ)充在后面。HTTP 方法和路徑讓模型知道這是個(gè)什么類型的操作。參數(shù)摘要把關(guān)鍵參數(shù)列一下幫助模型判斷調(diào)用時(shí)機(jī)。拼接時(shí)要注意控制長(zhǎng)度太長(zhǎng)的描述會(huì)占用上下文而且模型對(duì)超長(zhǎng)描述的注意力會(huì)分散。我的經(jīng)驗(yàn)是控制在 200 到 500 字符之間比較合適重點(diǎn)信息前置。def build_description(operation, method, path): parts [] if operation.get(summary): parts.append(operation[summary].strip()) if operation.get(description): parts.append(operation[description].strip()) parts.append(fHTTP {method.upper()} {path}) return .join(parts)[:500]3.3 參數(shù)合并path、query、header 一個(gè)都不能漏OpenAPI 里參數(shù)分散在三個(gè)地方path 參數(shù)、query 參數(shù)、header 參數(shù)都在parameters數(shù)組里通過(guò)in字段區(qū)分。請(qǐng)求體requestBody則是單獨(dú)的一塊。轉(zhuǎn)換時(shí)要把這些全部合并到一個(gè) JSON Schema 的properties里。合并時(shí)有個(gè)坑不同位置的參數(shù)可能重名。比如 path 里有個(gè)idquery 里也有個(gè)id直接合并會(huì)覆蓋。我的處理是給重名參數(shù)加前綴比如path_id、query_id同時(shí)在描述里說(shuō)明來(lái)源。雖然這種情況不常見(jiàn)但一旦出現(xiàn)不處理就會(huì)導(dǎo)致模型傳錯(cuò)參數(shù)。另一個(gè)細(xì)節(jié)是 header 參數(shù)。大部分 header 是認(rèn)證、內(nèi)容類型這類基礎(chǔ)設(shè)施性質(zhì)的不應(yīng)該暴露給模型。我的做法是維護(hù)一個(gè)黑名單把Authorization、Content-Type、Accept、User-Agent這些過(guò)濾掉只保留業(yè)務(wù)相關(guān)的自定義 header。3.4 schema 轉(zhuǎn)換OpenAPI 到 JSON Schema 的映射OpenAPI 的 schema 和 JSON Schema 大部分是兼容的但有幾個(gè)地方需要處理$ref引用OpenAPI 里大量使用$ref指向components/schemas下的定義必須遞歸解析展開(kāi)否則模型看不懂引用。nullableOpenAPI 3.0 用nullable: true表示可空J(rèn)SON Schema 里沒(méi)有這個(gè)關(guān)鍵字要轉(zhuǎn)成type: [string, null]這種形式。allOf/oneOf/anyOf組合 schema 要遞歸處理DeepSeek 對(duì)anyOf的支持較好allOf可以嘗試合并。example和default保留下來(lái)對(duì)模型理解參數(shù)有幫助。$ref解析是這里最容易出問(wèn)題的地方因?yàn)橐每赡芮短滓蒙踔裂h(huán)引用。必須加一個(gè)已訪問(wèn)集合來(lái)防止無(wú)限遞歸。def resolve_ref(schema, components, visitedNone): if visited is None: visited set() if not isinstance(schema, dict): return schema if $ref in schema: ref_path schema[$ref] if ref_path in visited: return {type: object} # 循環(huán)引用兜底 visited.add(ref_path) # 解析 #/components/schemas/Xxx 這種路徑 ref_name ref_path.split(/)[-1] target components.get(schemas, {}).get(ref_name, {}) return resolve_ref(target, components, visited) # 遞歸處理 properties、items 等 result {} for key, value in schema.items(): if key properties and isinstance(value, dict): result[key] {k: resolve_ref(v, components, visited) for k, v in value.items()} elif key items: result[key] resolve_ref(value, components, visited) else: result[key] value return result3.5 必填項(xiàng)的準(zhǔn)確提取必填項(xiàng)判斷錯(cuò)模型就會(huì)漏傳參數(shù)或者多傳空值。OpenAPI 里必填信息有兩個(gè)來(lái)源參數(shù)自身的required: true以及 requestBody schema 里的required數(shù)組。這兩處都要處理合并到最終的required列表里。有個(gè)容易忽略的點(diǎn)path 參數(shù)在 OpenAPI 規(guī)范里是強(qiáng)制 required 的但有些文檔寫得不規(guī)范漏標(biāo)了。我的做法是只要是in: path的參數(shù)一律視為必填不管文檔里寫沒(méi)寫。這是符合 REST 語(yǔ)義的路徑參數(shù)不傳請(qǐng)求根本發(fā)不出去。4. 完整實(shí)操?gòu)牧闩芡ㄗ詣?dòng)生成流程4.1 環(huán)境準(zhǔn)備與依賴安裝這套東西用 Python 寫最順手因?yàn)?OpenAPI 解析和 JSON 處理在 Python 生態(tài)里工具最全?;A(chǔ)依賴就兩個(gè)pip install pyyaml requestspyyaml用來(lái)解析 YAML 格式的 OpenAPI 文件很多項(xiàng)目用 YAML 寫文檔requests用來(lái)在需要時(shí)從遠(yuǎn)程 URL 拉取 OpenAPI 文檔。如果你只用 JSON 格式的文檔pyyaml都可以省掉標(biāo)準(zhǔn)庫(kù)的json就夠了。Python 版本建議 3.8 以上我用的是 3.10類型提示和字典操作都比較舒服。不需要額外的框架純標(biāo)準(zhǔn)庫(kù)加這兩個(gè)依賴就能跑。4.2 讀取和解析 OpenAPI 文檔先寫一個(gè)加載函數(shù)同時(shí)支持本地文件和遠(yuǎn)程 URL自動(dòng)識(shí)別 JSON 和 YAMLimport json import yaml import requests def load_openapi(source): if source.startswith(http://) or source.startswith(https://): resp requests.get(source, timeout30) resp.raise_for_status() content resp.text else: with open(source, r, encodingutf-8) as f: content f.read() # 先嘗試 JSON失敗再試 YAML try: return json.loads(content) except json.JSONDecodeError: return yaml.safe_load(content)這里有個(gè)實(shí)操經(jīng)驗(yàn)有些 OpenAPI 文檔是 JSON 但擴(kuò)展名是.yaml或者反過(guò)來(lái)。不要靠擴(kuò)展名判斷直接按內(nèi)容試解析最穩(wěn)。先試 JSON 是因?yàn)?JSON 解析更快失敗再走 YAML。4.3 遍歷所有接口操作OpenAPI 的paths是個(gè)字典key 是路徑value 是各 HTTP 方法的操作定義。遍歷時(shí)要過(guò)濾掉非標(biāo)準(zhǔn)方法的 key比如parameters、summary這些路徑級(jí)別的字段HTTP_METHODS {get, post, put, delete, patch, head, options} def iter_operations(spec): paths spec.get(paths, {}) for path, path_item in paths.items(): for method, operation in path_item.items(): if method.lower() not in HTTP_METHODS: continue if not isinstance(operation, dict): continue yield method.lower(), path, operation4.4 單個(gè)接口轉(zhuǎn)工具定義的完整實(shí)現(xiàn)把前面幾節(jié)的邏輯串起來(lái)寫一個(gè)完整的轉(zhuǎn)換函數(shù)def convert_operation(method, path, operation, components, used_names): # 1. 生成工具名稱 raw_name operation.get(operationId) if not raw_name: raw_name f{method}_{path} name sanitize_tool_name(raw_name) # 去重 base_name name counter 1 while name in used_names: name f{base_name}_{counter} counter 1 used_names.add(name) # 2. 構(gòu)建描述 description build_description(operation, method, path) # 3. 合并參數(shù) properties {} required [] for param in operation.get(parameters, []): if $ref in param: param resolve_ref(param, components) param_name param.get(name) param_in param.get(in) if not param_name or param_in header: # 跳過(guò) header 參數(shù) continue schema resolve_ref(param.get(schema, {}), components) if param.get(description): schema[description] param[description] properties[param_name] schema if param.get(required) or param_in path: required.append(param_name) # 4. 處理 requestBody body operation.get(requestBody, {}) if $ref in body: body resolve_ref(body, components) content body.get(content, {}) json_content content.get(application/json, {}) if json_content: body_schema resolve_ref(json_content.get(schema, {}), components) if body_schema.get(type) object and properties in body_schema: for prop_name, prop_schema in body_schema[properties].items(): properties[prop_name] prop_schema for req in body_schema.get(required, []): if req not in required: required.append(req) else: # 非對(duì)象類型的 body整體作為一個(gè)參數(shù) properties[body] body_schema if body.get(required): required.append(body) # 5. 組裝工具定義 parameters_schema { type: object, properties: properties, } if required: parameters_schema[required] required return { type: function, function: { name: name, description: description, parameters: parameters_schema } }4.5 批量生成與輸出最后把整個(gè)流程串起來(lái)批量處理所有接口輸出成 DeepSeek 需要的格式def generate_tools(spec): components spec.get(components, {}) used_names set() tools [] for method, path, operation in iter_operations(spec): tool convert_operation(method, path, operation, components, used_names) tools.append(tool) return tools def main(source, output): spec load_openapi(source) tools generate_tools(spec) with open(output, w, encodingutf-8) as f: json.dump(tools, f, ensure_asciiFalse, indent2) print(f生成了 {len(tools)} 個(gè)工具定義已寫入 {output}) if __name__ __main__: main(openapi.json, tools.json)跑一遍50 個(gè)接口幾秒鐘就全部轉(zhuǎn)完了。生成的tools.json可以直接作為tools參數(shù)傳給 DeepSeek 的對(duì)話接口。4.6 接入 DeepSeek 調(diào)用生成工具定義只是第一步真正用起來(lái)還要把它傳給模型。DeepSeek 的接口兼容 OpenAI 的格式調(diào)用方式很直接import requests def chat_with_tools(user_message, tools): resp requests.post( https://api.deepseek.com/chat/completions, headers{ Authorization: Bearer YOUR_API_KEY, Content-Type: application/json }, json{ model: deepseek-chat, messages: [{role: user, content: user_message}], tools: tools, tool_choice: auto }, timeout60 ) return resp.json()模型返回的tool_calls里會(huì)包含它選擇的工具名稱和參數(shù)你解析出來(lái)映射回實(shí)際的 HTTP 請(qǐng)求調(diào)用真實(shí)接口再把結(jié)果喂回模型就完成了一輪工具調(diào)用閉環(huán)。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 工具數(shù)量太多導(dǎo)致模型選擇困難50 個(gè)工具一次性全塞給模型會(huì)出現(xiàn)兩個(gè)問(wèn)題一是上下文占用大二是模型在相似工具之間容易選錯(cuò)。我的經(jīng)驗(yàn)是工具數(shù)量超過(guò) 20 個(gè)之后選擇準(zhǔn)確率會(huì)明顯下降。解決辦法有兩個(gè)方向。一是按場(chǎng)景分組把工具分成幾組根據(jù)用戶意圖先判斷屬于哪組只把該組的工具傳給模型。二是精簡(jiǎn)描述把不必要的信息砍掉讓每個(gè)工具的描述更聚焦。實(shí)測(cè)下來(lái)分組方案效果更好但需要額外做一層意圖路由。5.2 $ref 解析失敗或循環(huán)引用這是最常見(jiàn)的報(bào)錯(cuò)來(lái)源。表現(xiàn)是生成的 schema 里還殘留著$ref字段或者程序直接棧溢出。排查步驟檢查components.schemas里是否真的存在被引用的定義有時(shí)候文檔寫得不完整引用了不存在的 schema。檢查是否有循環(huán)引用比如 A 引用 BB 又引用 A。這種情況必須用 visited 集合兜底。檢查$ref路徑格式有些文檔用的是完整 URL 而不是#/components/schemas/Xxx這種內(nèi)部引用。5.3 參數(shù)類型轉(zhuǎn)換錯(cuò)誤OpenAPI 里有些類型 JSON Schema 不直接支持比如type: file、type: binary。這些參數(shù)在工具調(diào)用場(chǎng)景下沒(méi)法直接傳我的做法是統(tǒng)一轉(zhuǎn)成type: string并在描述里注明是文件內(nèi)容或路徑。模型傳字符串過(guò)來(lái)你在實(shí)際調(diào)用接口時(shí)再做轉(zhuǎn)換。5.4 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象可能原因解決方向生成的 schema 里有 $ref引用未解析檢查 resolve_ref 遞歸邏輯模型選錯(cuò)工具描述太相似或太模糊優(yōu)化 description增加區(qū)分度參數(shù)漏傳required 提取不全檢查 path 參數(shù)和 body required參數(shù)類型不對(duì)schema 轉(zhuǎn)換遺漏檢查 nullable、allOf 處理工具名重復(fù)operationId 缺失或重復(fù)啟用去重邏輯加后綴上下文超限工具太多或描述太長(zhǎng)分組加載精簡(jiǎn)描述5.5 幾個(gè)踩過(guò)的坑坑一不要相信 operationId 的唯一性。我遇到過(guò)一份文檔里有兩個(gè)接口的 operationId 完全一樣直接導(dǎo)致工具名沖突。去重邏輯必須要有不能省??佣escription 里的換行和特殊字符要清理。有些文檔的 description 里帶 markdown 格式、換行符、甚至 HTML 標(biāo)簽直接塞給模型會(huì)干擾理解。我一般會(huì)做一次清洗去掉多余空白和格式符號(hào)。坑三枚舉值要保留。有些參數(shù)是枚舉類型OpenAPI 里用enum列出可選值。這個(gè)信息對(duì)模型非常重要能大幅降低傳錯(cuò)值的概率。轉(zhuǎn)換時(shí)一定要保留enum字段??铀姆猪?yè)參數(shù)要特別處理。列表類接口通常有page、pageSize、offset、limit這類分頁(yè)參數(shù)。這些參數(shù)模型不一定知道該傳多少可以在描述里給個(gè)默認(rèn)值建議比如默認(rèn)每頁(yè) 20 條。6. 進(jìn)階優(yōu)化讓自動(dòng)生成的工具更好用6.1 描述文案的二次加工自動(dòng)拼接的描述雖然準(zhǔn)確但讀起來(lái)往往比較生硬。如果對(duì)效果要求高可以在自動(dòng)生成的基礎(chǔ)上做一層模板化加工。比如把HTTP GET /users/{id}這種技術(shù)描述轉(zhuǎn)成根據(jù)用戶 ID 查詢用戶詳細(xì)信息這種業(yè)務(wù)語(yǔ)言。我的做法是維護(hù)一個(gè)動(dòng)詞映射表把 HTTP 方法和路徑模式映射成業(yè)務(wù)動(dòng)作ACTION_MAP { (get, list): 查詢列表, (get, detail): 查詢?cè)斍? (post, create): 創(chuàng)建, (put, update): 更新, (delete, delete): 刪除, }結(jié)合路徑里的關(guān)鍵詞做匹配生成更自然的描述。這一步不是必須的但做了之后模型的選擇準(zhǔn)確率會(huì)有可見(jiàn)提升。6.2 工具分組與動(dòng)態(tài)加載前面提到工具太多會(huì)影響選擇準(zhǔn)確率分組是有效的應(yīng)對(duì)。具體做法是給每個(gè)工具打上分類標(biāo)簽可以基于路徑前綴自動(dòng)分類比如/user/*歸到用戶組/order/*歸到訂單組。調(diào)用時(shí)先讓模型判斷意圖屬于哪組再加載對(duì)應(yīng)組的工具。這個(gè)方案的關(guān)鍵是分類要合理組內(nèi)工具數(shù)量控制在 10 到 15 個(gè)比較合適。組太多會(huì)增加路由復(fù)雜度組太少又起不到精簡(jiǎn)作用。6.3 參數(shù)默認(rèn)值與示例注入模型對(duì)參數(shù)的取值經(jīng)常拿不準(zhǔn)尤其是可選參數(shù)。在 schema 里注入default和example能顯著改善這個(gè)問(wèn)題。OpenAPI 文檔里如果已經(jīng)有這些信息直接保留如果沒(méi)有可以根據(jù)參數(shù)名和類型推斷一個(gè)合理的默認(rèn)值。比如pageSize默認(rèn) 20page默認(rèn) 1status如果有枚舉就選第一個(gè)。這些默認(rèn)值不一定要精確主要是給模型一個(gè)參考錨點(diǎn)。6.4 生成結(jié)果的校驗(yàn)自動(dòng)生成的東西不能盲信上線前一定要做校驗(yàn)。我一般會(huì)檢查這幾項(xiàng)工具名稱是否唯一、是否符合字符集要求。每個(gè)工具的parameters是否是合法的 JSON Schema。required里的字段是否都在properties里存在。描述是否為空、是否超長(zhǎng)。寫一個(gè)校驗(yàn)函數(shù)生成后跑一遍有問(wèn)題直接報(bào)出來(lái)比等到模型調(diào)用失敗再排查高效得多。def validate_tools(tools): errors [] names set() for tool in tools: fn tool[function] name fn[name] if name in names: errors.append(f工具名重復(fù): {name}) names.add(name) params fn[parameters] props params.get(properties, {}) for req in params.get(required, []): if req not in props: errors.append(f{name}: required 字段 {req} 不在 properties 中) if not fn.get(description): errors.append(f{name}: 描述為空) return errors這套自動(dòng)生成流程跑通之后我維護(hù)那 50 多個(gè)接口的工具定義從原來(lái)每次改動(dòng)要花大半天變成了改完 OpenAPI 文檔重新跑一遍腳本幾分鐘搞定。真正花時(shí)間的部分轉(zhuǎn)移到了描述優(yōu)化和分組策略上而這些是一次性投入、長(zhǎng)期受益的工作。如果你手頭也有帶 OpenAPI 文檔的接口需要接入模型強(qiáng)烈建議先把這套自動(dòng)化跑起來(lái)別在手工寫 schema 上浪費(fèi)生命。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷久久网| 中文字幕AV片| 久久香蕉国产传媒一区剧情天美| 精品久久久久综合无码| 国产精品午夜成人福利| 在线视频日韩欧美国产| 国产强奸AV在线| 日本一久是| 99久久婷婷| 亚洲精品国产无码高清| 东京热综合久久一区二区| 国产性刺激| 色官网在线| 日韩成人性日韩成人性爱视频在线免费观看 | 欧美一级黄色免费专区| 97 国产精品| 伊人精品视频| 91精品国久久久久久无码| 97超碰国产精品| 亚洲成人性爱在线观看| 国产69精品久久久久99尤物| 强奸乱伦Av网| 日韩人成网站在线播放| 国内精品久久人妻性色av| 高清视频一区| 91美女视频| 夜夜夜爽www精品视频| 亚州图片第一页| 久久亚州高清| 久久极品一区二区| 一二三四视频中文字幕在线看| 中文字幕-区二区三区四区视频中国 | 很很操在线| 久久这里精品国产99丫e6| 久久中文字幕不卡人妻| 亚洲天堂色图| 中文一区二区婷婷视频| 久操国产在线| 在线黄色污污网站| 麻豆一区二区三区在线看 | 在线观看av区| 偷拍三区| 69天堂| 欧美亚洲激情一二三| 小草av不卡亚洲二区 | 国产夜夜操| 久久爽爽精品| 欧美日韩在线小说| 曰本人妻人人澡人人夹| 欧美日韩99| 操穴国产| 久久亚洲日韩国产欧| 91精品导航| 亚洲日韩天堂| 亚洲文学偷乱拍啪啪啪啪| 亚洲偷91色| 欧美 亚洲 在线| 粉嫩av平台| 久久精品国产亚洲AV片多多| 91丝袜美女国产| av天天在线观看| 欧洲精品久久| 乳欲人妻办公室奶水| 99热这里只有精| www.AV有限公司一区| 国产精品午夜福利| 操逼啊啊啊91| 亚洲人综合| 丁香五六月啪啪| 五月婷婷六月激情| 久久粉色| 校园春色亚洲无码| 亚洲国产av中文字幕久久| 欧美特黄视频网站| 色偷综合| 午夜后入| 中文字幕女同在线| 青草精品视频一日本久久久久网站| 99re久久| 亚洲s在线观看| 超碰免费人妻人人| 日韩一级二级| 传媒在线观看一区二区三区| 天天久久| 欧美最婬乱婬爆婬性视频| 91国产丝袜白虎| 亚洲AV无码成人精品久久| 久久久久久午夜男人的天堂| 0755午夜福利视频| 大香蕉啪啪啪| 国产无码精品无码| 大香蕉日亚洲日本亚大| 日韩av在线精品观看| 九九久久一区二区伦理| 日本肏逼视频在线观看| 欧美中文字幕一区| 91制服丝袜中文字幕| 青娱乐亚洲自拍| 夜夜爽爽爽| 青青草国产一区二区三区| 91丝袜| 欧美性爱精品七区| 91九色精品熟女内射| 天天影视射综合网| 色欲无码人妻日韩欧美精品| 成 人 影视 一区 二区 三区 四区| 视频黄站| www色色com| 欧美国产有色电影| 日本三级A片网站com| 亚码激情| 久久r精品| 岛国片在线视频网站| 啪啪啪大香蕉| 国产精品噜噜噜日日日| 后入人妻一区| 亚洲**2021在线观看| 色婷婷五月天| 免费中文综合精品| 大香蕉2017| 亚洲图片欧美91N| 久这精品中文在线观看视频| 亚洲午夜精品久久久中文影院| 久久久久国产精品片区无码直播| 国产精品午夜福利| 无码一区二区三区四区五区六区七区八区九区十区视频 | 人妻超碰青青草98| 国产伦精品一区二区三区视频女| 亚洲国产精品无码AV在线| 久久久久网站-538在线视频-欧美永久乱码 | 男人天堂最新手机版在线青青草| 啪啪啪大香蕉| 韩三级a视频在线观看 | 精品无码久久久久久国产浪潮| 欧美激情久| 强奸乱亚洲| 插入逼91| 東南亚性呦成人伦理资源在线视频| 北京专精特新企业招聘信息| 国产精品一级特黄aaa大片在线观看| 久久久月天| 天天影视激情欧美| 99热99re超碰精品| 婷婷丁香成人| 99操99| 欧美一区二区三区日韩| 狼狼色丁香久久婷婷综合五月| 丝袜AV一区二区三区| 60秒免费小视频| 极品色社| 日韩精品一二三四| 狠狠色婷婷| av日韩在线观看电影| 操逼操网| 日韩精品视频在线观看一卡二卡| 精品毛片av一区二区| 免费精品无码一级毛片牛牛影视 | 免费观看啪视频| 色哟哟511老熟女| 国产91av在线播放| 999精品久久久久久久| 欧洲综合色| 久久风骚城市人| 天天综合网1| 欧美精品亚洲精品日韩传电影| 大吊色| 啊啊啊啊二区好大| 欧美在线干| 曰本道人妻久久久在线不卡色视频| 亚欧美综合网。| 亚洲同性aV综合| 狠狠超| 少妇干B| 久久久精品日本一道| 日本人妻最新在线中| 97久久久久| 色y情视频免费看| 国产 丝袜 欧美中文 另类| 97视频观看| 人人妻人人澡人人爽久久av| 精品人人插人人操| 青草一区二区| 99热免费| 欧亚日韩一区在线| 国内91熟女人妻丝袜天天精品视频在线| 国产精品片| 国产成人亚洲精品自产在线| 欧美v日韩v亚洲v最新在线| 97操综合| 爆乳免费黄网站| 五月天色五月| 97日本超碰综合| 亚洲激情片| 在线中文AV| 国产又粗又长的视频| 极品AV网站在线观看| 日本一区二区不卡| 亚洲 日本 国产 综合| 干B网| 啊啊啊啊好疼视频| 6080yy午夜理论三级一区二区三区无码| 亚洲av国产av综合av卡| 香蕉大久久久| 二三四区精品| baiduhicn.com。| 日本精品加勒比海一区| 国产精品在线网站| 伊人久久亚洲中文字幕不卡| 久久伦理视频久久大香蕉视频| 91美女中出| 东京热亚洲一区二区| 密桃99999| 另类小色呦| 日本99视频| 亚洲男人天堂Av| 视频在线观看一二三区| 久久国产对白激情浪潮| 色大师网站www永久网站视频| 久久国模av| 殴洲老熟女| 91操熟女视频| 大香蕉伊人75| 国产无马在线| 天天干夜夜一操| 国产18精品亚洲精品| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 天天色天天干天天爱| 人人操欧美风骚| 免费看黄视频亚洲网站| 国产一区二区欧美日本| 亚洲国产麻豆一区二区三区| 97资源制服丝袜| 国产大片精久久久久久| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 夜夜嗨一区二区三区直播内容| 激情文学亚洲| 国产大陆天天艹| 久久九九99| 亚洲精品黑丝| 很黄很色的视频在线观看| 熟女突然公开看18禁影片| 日韩欧亚太美不卡| 超碰97资源网亚洲| 精品国产丝袜一区二区三区乱码| 人妻日日夜夜精品| 中文字幕av一区二区三区人妻少妇 | 四方色播| JULIA一区二区三区在线播放| 人妻激情另类| 久9爱精品| 自拍偷拍2025在线观看| 大香蕉在线视频重口味毛片在线| 亚洲不卡三级手机播放| 操比国产| 一本大道久| 91精品久久综合熟女| 久久久久久久久久黄色网| 中文字幕国产在线天堂| 少妇 综合| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 一区二区三区美女超清| 97国伦国色| 久久精品国产亚洲av水密被窝| 午夜福利在线合集| 超碰伊人在线| 欧美强奸乱能| 久久久久九九九九九| 99久久精品欧美国产| 久久久久9久久久久| 蜜乳AV免费观看| 国产捆绑一区| 欧美情色男人的天堂| WWW操逼| 99re在线精品78| 狠狠色狠狠色狠狠五月| 99re在线视频国产| 欧美日韩超碰在线| 一个人免费视频观看在线WWW| 夜夜嗷嗷一区二区| 无码伊人久久大杳蕉中文无码| 国产欧洲精品亚洲午夜拍精品| www.色五月| 久久精品国产免费观看99| 天天综合精品| 欧美成人性爱视频在线播放| 精品久久大胆人体| 精品久久在线区一区| www.色吧5.com| 91超碰丝袜制服| 熟妇人妻一区二区三在线| 日本性爱网址| 国产一级特黄大片处女| 日日躁狠狠躁天天躁精品| 精品.99999| 五月丁香啪啪啪| 日韩欧美福利视频看看| 久久大黄片| 亚洲素人综合| 亚洲天堂久| 久久久久78| 女同在线视频一区| 久久五月婷| 美女午夜福利免费视频| 五月丁香六月综合缴清无码 | 九t超碰| 99www.bibizy香蕉资源国产一区二区三区高清| 中文字幕蜜乳av| 久久久国产护士丝袜美腿一| 黑丝少妇在线观看| 午夜福利免费福利视频| 欧美日韩不卡传媒| 无码九九| 人妻天天爽夜夜爽2| 区日韩亚洲乱码av电影| 性爱综合一区二区| 日韩有码专区| 欧美第五页| 九九九九九九视频| 情色五月天久久久| 97色爱| 亚洲 图片 综合91| 人妻久久久久久久久久久久久久久| 人人操人人93| 天堂性色| 青青色在线观看| 天天综合站| 欧美,亚洲,日韩,v,天堂,手机在线观看| 欧美综合色图片| 97这里都是精品| 麻豆国产原创AV色哟哟 | A男人的天堂| 精品人妻二区三区| 加勒比大香蕉视频在线| 99ri精品| 99热18| 日本综合久久| 亚洲激情久久| 91久久精品国产| 97爱爱影院| 美腿丝袜偷拍亚洲欧美| 亚洲视频二区 | 人妻少妇精品一区二区三区| 99热超碰在线| 嗯阿好爽好紧| 日韩AV无码网站| 国产综合操逼高清| 东京热av男人的天堂| 天堂男人网| 熟女91网| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 亚洲色图尤物视频| 亚洲怡春院| 成人一级二级| 91日日夜夜| 91美女视频| 亚洲一区二区三区久久 亚洲一区二区| 欧美超碰在线| 91色s| 色女综合| 亚洲欧美日韩精品久| 日韩性爱1级片视频| 国产乱婷婷精品二区三区| 成人八戒网站| 中文字幕无码不卡啪啪| www久久久| 亚洲最大无码中文字幕网站 | 殴美性色a级欧美| 久久国产视频专区一二三| 4虎在线视频| 五十路熟女人妻一区二区在线观看 | AV中文在线| 日韩av熟女一区二区三区成人| 精品9区| 亚洲春色一区二区三区| 秋霞曰韩R级| 日日夜夜青青草母狗| 国产精品另类| 午夜男女爽爽爽在线视频| 冬京热男人的天堂| 九九九免费视频| 国产 v乱码一区二| 大屁股熟女一区二区三区| 丝袜亚洲综合| 五月天丁香| 婷婷10月天青娱乐| 5月婷婷6月六月丁香| 久久伊人青青草| 男人天堂网址| 男人的天堂在线2| 啊啊啊好多水| 久久综合乱子伦国产免费| 久久一区二区蜜桃| 特污免视频| 草草电影院| 亚洲青青青视频在线| 国产强奸无码乱伦| 绯色AV粉色AV蜜臀AV| 在线人成亚洲视频免费观看| 大香蕉天天看妹子| 国产 亚洲 丝袜 制服| 综合欧美日韩在线| 五月丁香综合| 久久精品国产亚洲AV清纯| 中文字幕久久精视频久久大全| 欧美真人抽搐一进一出gif | 2019亚洲男人天堂| 九九热AV| 天天艹天天日| 欧美天天综合在线| 口爆欧美91| 日本99一区二区| 国产兽交视频在线播放| 日韩一卡二卡三卡| 亚洲无码精品AV久久久| 久久久久ab| 超碰人人妻| 五月婷婷丁香六月丁香| 九九九九热只有精品| 婷婷五月天综合网| 日本一级二级三级网站| 草草草视频在线免费看| 老熟女综合网| 欧美激色| 亚洲美女30b| 黑丝内射一区二区三区| 青娱乐久久艹| 无码精品久久| 久久久久少妇| 欧美东京热青青草| 黑人精品欧美一区二区蜜桃| 97天天弄| 麻豆传媒一区二区在线观看| 青青草视频这里只有精品| 激情五月天社区| 啪啪免费| 大香蕉免费乱伦视频| 操高情无码| 99e久久国产精品| 中英熟女操女| 欧美一级美片在线观看免费| A级在线视频| av亚欧| 思思热国产高清| 屁股久久久久久| 色综合一区二区三区| 亚洲se91| 精品日韩人妻视频| 中国一级特黄大片护士| 国产女人高潮嗷嗷嗷叫小说 | 人妻少妇一区二区| 欧美日韩情色一区二区| 午夜啊啊啊| 蜜屁Av| 清纯唯美激情| 亚洲欧洲成人在线电影| 蜜乳AV.COM| 日本中文字幕在线视频| AA丁香综合激情| 曰本熟女视频| 97美日韩视频| 午夜乱轮操逼视频免费看| 操逼逼中文字幕| 九九热超碰| 日本精品88888888| 成人区人妻精品一| 国产不良强奸视频免费看| 色色色天美视频| 在线黄页看毛片| 欧美 亚洲 另类 综合| 人妻另类| 伊人久久在线视频观看| 爱爱60秒免费视频| 色男人色天堂东京热| 久久精品操| 免费看黄片现成| 91丨九色丨国产打屁股| 超碰97最新人妻| 久久久夜夜夜| 殴美大黄片| 久久m| 国产精品人妻免费精品| 综合色图区| 天天爱综合网| 欧美十八禁网站| 久久久∴| 一本久道在线综合视频| 97露脸精品丝袜| 丁香色狠狠色综合久久小说| 强奸乱亚洲| 黑人精品欧美一区二区蜜桃| 上海一级黄片| 亚洲男人天堂视频| 国产吞精a级片激情电影| 制服中出中文人人精品| 涩涩这里只有精品视频| 麻豆一区在线| 国产www色在线观看| 蜜臀久久久国产| AV污污污污| 欧美高清在线| 加勒比在线视频| 天天看天天干| 最新精品久久蜜桃| 日本肉体xxxx裸交| 精品玖九九久| 国产超碰在线一区| 亚州免费啪啪视频| 欧美日韩中文字幕不卡| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲久久东京热一二三四五区视频| 中文字幕一区二区免费在线| 很狠操| 天天操女人| 强奸乱伦Av网| 乱伦强奸区日韩| 国产精品久久久久久久久久久久久久久久 | 97免费在线视频在线观看| 激情小说图片亚洲首页| 91欧洲入口| 色综合美国| 久久丁香久草综合网| 久久久久久久9最新免费视频观看| 欧美啪啪女女| 久久夜黄色无码A级大片| 啊啊啊好舒服视频| 亚洲色图久久成人| 精品天堂| 亚洲综合伊人无码久久| 亚洲色婷婷久久91| 九九色色| 97超碰9| 国产无码一二三区| 蜜汁欧美| 久久久性少妇| 99只有精品| 中文字幕在线观看第二页| 一区二区三区黄片免费观看| 青娱乐国产剧情av一区| 97视频免费播放| 亚洲精品乱码久久久久久蜜桃麻豆 | 78久久| 亚洲欧美洲综合| 啊啊啊啊,啊啊好多水| 久久九操在线观看| 精品一区二区三区四区外站| 国产午夜视频| 天天内射| 超碰社区97| 熟妇激情| 超碰97 线线 在现| 欧美成人性活片| 国产无码久久高清| 黄页网站免费高清在线观看| 99久国产精品午夜性色福利| 亚洲综合另类小说色区亚洲成av人片在www | 国产成人精品无码久久| 超碰成人公开| 97香蕉碰碰人妻国产欧美| 日本中文字幕在线电影| 开心激情站| 啊啊啊啊啊在线视频| 歐美性天天| 日韩欧美~中文字| 酒色综合网| 蜜乳视频网站| 婷婷AV一区二区三区| 亚洲精品尤物yw在线影院| 日本精品一区二区三| 思思热国产高清| 亚洲激情综合另类| 国产精品高潮久久久无码| 亚洲色阁| 亚洲无码电影久久久| 亚洲97在线| 97操| 国产精品嫩草影院午夜两性 | 国产精品一区二区 尿失禁| 少妇无码av专区线| 亚洲国产麻豆一区二区三区| 男人天堂2030| 无码国产精品96久久久久孕妇| 91精品无码久久久久久久| 两女互慰AV高潮喷水在线观看| 日韩精品碰碰| 99综合免费视频| 60秒不遮不挡| 国产成人在线观看网址| 97干97色| 操逼国产免费| 99色综合| 欧美色日本| 日本免费二区三区| 成人一二| 麻豆啪啪啪视频| 欧美亚洲玖玖玖| 欧美少妇色综合| 97中文综合| 伊人久久综合影院精品久久久| 免费在线黄片视频| 人妻加勒比东京热| 欧美性综合| 蜜臀99久久| 国产三区免费在线观看| 极品白嫩福利在线| 老熟女天天操| A V视频日本| 欧美日韩夜夜| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美色图在线视频少妇| 久久午夜色播影院免费高清| 日本高清_区二区三区| 精品久久久九九九孕妇| 密臀成人视频久久久| 另类亚洲一区二区三区| 亚洲综合另类| 色婷婷A V一二三四区麻豆综合| 久久性爱视频免费看| 日韩免费性爱视频在线观看| 色九九九综合| 草草草视频在线免费看| 91粉芽高清在线一区二区| 99国内熟女露脸视频| 精品人妻一区二区三区四区石在线| 亚洲精品国产精品乱码不99| 久久人妇| 在线一区| 天天懆天天日| 色婷婷在线视频精品导航| 亚洲色图A| 国产18精品亚洲精品| 国产熟女二区| 一类av片在线看| 亚洲国产一级中文综合久久天堂在线免费观看 | 欧美在线电影| 亚洲国产成人高清在线| 国产精品乱码久久久久久久| 日韩激情小说一区二区| 日本人妻天堂网站在线播放| 亚洲欧洲中文日韩女优乱码| 91啪9色| 精品九九| 蜜臀AV一区二区三区激情综合| 天天干18禁| 婷婷五月天影院| 欧美姓爱综合网| 992这里有精品| 91精品人妻一区二区三区蜜桃| aaa一级黄片| 色欧美在线| 色色激情五月天| 在线欧美亚洲| 天天摸天天插天天日| 久久老女人| 99久久com免费视频′| 久久精品人妻一区| 国产乱弄免费在线视频。 | 久久精品国产精品亚洲艾通辽熟妇| 欧美色交| 黄色网址久久精品欧美喷水| 美女久久久| 亚洲AV免费在线观看| 欧州一区二区三区四区| 久超超碰| 日韩性爱再线视频| 色色九区| 中文字幕乱码人妻一区二区三区,99精品 | 插穴性爱视频在线观看| 亚洲美腿丝袜香蕉影视欧美成人| 人人扣人人操| 91综合网| 东京热精品97综合网| 8050无码八戒| 国产精品96久久久久久| 综合 青草 伊久久 影院 综合| 亚洲欧洲日韩天堂av| 亚洲亚洲亚洲天堂天堂| 精品 码产区一区二-1080P高清在线www-B029AV| 美女诱惑久久| 1二区9| 在线看免费无码AV天堂的| 久草免费在线视频| 伊人玖玖网| 亚洲精品国产拍免费91在线| 在线观看AV不卡| 日日日日做夜夜夜夜无码| 色综合1991| 天天影视综合网欧美精品| 超碰国产精品无码| 人妻第一页| aaa淫乱视频| 99日韩| 久久性爱精品一区| 这里只有精品97| 国产乱弄免费在线视频。| 久草大| 日小BB小视频| 男人的天堂一区| 老熟女中文字幕高清| AA丁香综合激情| 人人操人人插人人摸人人干| 殴美性天天| 欧美影音在线| 亚欧美天堂在线| 国产福利精品最新在线| 在线岛国新天堂8| 九九热三级片| 99色在线| 性性欧美| 91九色丨国产丨爆乳| 国产激情在线观看| av最新免费中文字幕| 97aiaiai| 蜜桃臀av一区二区| 中出后入| 情侣操 逼视频99| 啪啪91| www.色婷婷| 日本操逼视频导航| 翔田千里爆乳巨臀无码| 69一区二区三区 | 亚洲自拍偷拍视频在线 | 色婷婷六月| 丝袜熟女一区二区三区| 精品久久无码午夜福利| 亚洲高清自拍| 日韩在线电影| 91国产丝袜白虎| 欧美综合自拍亚洲综合图| 免费网站观看www在线观| 精品国产少妇高潮视频| 五月婷婷色| 五月丁香| 精品人妻丰满熟妇一区二区三| 精品9999| 激情婷婷丁香网| 99re在线视频这里只有精品| 久久久久久久六六 | 精品国产丝袜一区二区三区乱码| 影音先锋日本一区二区| 精品美女久久久久| 国产综合在线视频网站| 日韩欧美福利视频看看| 熟女探花啪啪| 国产 亚洲 一二三四| 日本熟女不卡视频| 黄色大片免费在线| 26UUU欧美激情一区二区| 国产成人综合在线播放| 欧美另类精品xxxx| 国产精品自在线发布| 亚洲一区二区精品福利| 在线国产一区二区av| 高清无码国产亚洲| 99热这里只有精品8| 日本人体九九九九九九| 国产天天骚| 久草精品国产蜜臀 | 第一高清av中文字幕| 色婷婷电影| 91亚·色| 91处女视频在线观看| 青草影院内射高潮| 日日干日日摸| 久久精品国产亚洲5555| 亚洲精品乱码线路中文字幕| 99热99在线播放激情| 日本 欧美 国产一区| 日日干日日| 欧美熟妇人体| 天天躁夜夜躁狠狠躁AV| 亚洲毛片久久| av在线播放国产一区| 中文字幕狠狠玩| 伊人AAA| 欧美老妇女内射网址| 精品无码一区二区人妻久久蜜桃| 男人天堂毛片| 日韩视频精品在线观看| 久久激情亚洲精品无码?V| 啪啪啪大香蕉| 1区2区3区中文字幕日韩| 亚洲男人天堂视频| 国产一区二区二区按摩精品啪视频| 激情 欧美 亚洲 小说| 熟妇操花| wwe 天天干.com| 性欧美| 青青青国产手线观看视频2| 亚洲无码久久久久久久| 久久免费中文字幕在线观看| 欧美在线色| 91激情| 青青操轻轻| 日韩精品人妻中文字幕久久久| 成人情色综合网| 奇米四色网| 加勒比大香蕉视频在线| 婷婷九月国产| 人人看黄色视频| 男人天堂一区二区| 97免费视频在线观看视频| 人妻夜夜爽天天爽麻豆三区网站 | 日夜尻逼网| 秋霞网—男女啪啪亚洲免费体验区 | 开心六月色| 日韩91网站| 亚洲aV性爱| 干B| 亚洲黄片免费在线播放| 草草影院在线视频| 97精品一区| 日本操逼视频导航| 躁躁日曰躁2020| 91超碰在线| 天天射影院| 玖玖无码超碰| 中文字幕成人理论在线| 东北女人操比视频| 一级日本牲交大片好爽在线看| 色香色香欲天天天影视综合网| 熟女熟妇一区二区三区视频| 久久成人国产| 老女人碰碰在线碰碰视频| 韩国三级一线观看久| 国产11页| 欧美中文综合| 偷拍伦理视频| 欧美天天射| 熟妇在线视频一区二区| 我要色综合网站| 亚洲色图亚洲无码强奸乱伦| 中国的操老妇女| 中国大陆国产高清AⅤ毛片| 综合网久久| 免费国产电影一区二区| 欧美色图亚州激情| 亚洲最新Av| 大香蕉综合| 老熟女搡BBBB搡BBBB视频| 嗯啊啊啊轻点视频 | 嫩草美女久久| 亚洲 另类 丝袜 自拍 动漫| 99在线免费公开视频| 亚洲 欧美 另类 日韩 人妻一区| 91人妻最真实刺激绿帽| 日韩啪啪啪视频| 免费精品人妻一区二区三| 九九九九九九九九九九九九九九九女| 国产成年免费大片黄在线观看| 亚洲素人网| 日韩一级片在线看| 色激情五月天| 久久超碰日韩精品| 国产四虎在线| 日韩av不卡在线看| 超碰 国产熟女精品一区| 国产精品视频精品一二| 中文字幕三四五区| 97干色天堂| 中文字幕奈奈美被公侵犯| 九九九热精品| 天天综合网站| 综合av社区| 丝袜狠狠草尤物 91| 中文字幕jul-617人妻熟女| 久久色精品视频在线| 欧美亚洲国产自久久| 国产精品久久99日日| 天天影视综合色| 国产最新AV| 一本久道在线综合视频| 人妻熟妇一区二区三区| 黑丝少妇麻豆| 在线无码操| 蜜臀久久99精品久久久久久-DVD原版全| 嗯~啊~快点 死我视频| 一区二区影院| 97天天日| 欧美一区二区三区黄色影视| 欧美色婷婷| 亚洲国产欧美一区二区潘金莲| 欧美性五月| 国产四虎在线| 97任你吞精| 国产强奸无码乱伦| 日韩无码服务区| 熟妇人妻一区二区| 国产免费一区在线观看| 久久性爱视频99| 久久激情视频| 久久国99999| 欧美色婷婷| 伊人久久综合精品欧美| 久久超碰日韩精品| 久久精品电影| 欧美内射少妇| 天天天天干| 果冻国产精品麻豆成人av| 91精品人妻偷情| 五月天婷婷社区| 美女黑人91神马| 手机av天堂久久久久| 国内三级自拍小视频在线观看| 国产精品爱欲| 日本一区二区不卡| 婷婷国产精品一区二区| 99热18这里只有精品| 内射黑人| 四虎影视在线| 看日韩美女二区三区免费操逼视频| 黄页网站免费高清在线观看| 中国操逼无码| 亚洲日韩国产精品| 日韩九九九| 中文字幕第二页| 超碰一区二区| 骚人妻少妇视频| WWW.加勒比人妻一区不卡.com| 男人亚洲91首页在线| 色吧五月| 9久久精品| 很很热性爱视频| 国产高清成人mv在线观看| 乱伦一二三区| 三级日韩一区二区三区| 大JI巴好深好爽又大又粗视频| 99AV| 99少妇| 97ai亚洲| 久久国产精品一区二区| 国产在线激情| 伊香蕉综合久久久久久久噜噜噜 | 色婷五月| 亚洲五月婷婷| 超碰91在线| 激情婷婷| 人人天天欧洲| 日本亚洲vr欧美不卡高清专区| 中文字幕二区日韩天堂| 国产精品天美传媒| 97玖玖人妻| 久热精品色情| 97在线观视频免费观看| 亚洲有码第一页| 天天日美女的B| 大香蕉在线SuP| 欧美96交| 97在线视频网站| 欧美91精品国产自产| 偷拍 欧美 日韩| 午夜a成v人电影| 少妇无码av专区线| 国产一级做a爰大片免费久久| 国产激情在线| 91丝袜美女国产| av在线浏览| 天天摸夜夜操视频| 999久久芭蕾| 99在线精品视频| 色哟哟AⅤ| 亚洲一卡2卡3卡4卡乱码网站| 色综合久| 99久久这里只有精品| 亚洲综合小视频小说在线观看| 神马久久啊啊| 嗯嗯不要 视频| 亚洲伊人成综合成人网| www.99中文字幕| 97色色婷婷| 18一区二区三区| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 另类成人首页一区| 欲香欲色综合天天伊人| 日本在线观看网址| 日韩欧美国产一区二区三区四区| 人妻-91porn| 91丝袜美女| 91网站在线播放| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 一区=区三区视频| 欧美日韩国产人人| 国产97亚洲| 国产性爱乱伦AV| 天天综合网一91网| 老熟妇一区二区三区啪啪| 精品一区二区三区18| 九九视频黄色片| 大香蕉人妻| 精品国产乱码久久久兰草影视| 欧美亚洲首页| 一起草日韩| 日韩素人无码一区二区三区三州| 96国产污污污丝袜| 精品在线蜜臀| 最近的最新的中文字幕视频| 国产有码一区| 国语精品对白| 午夜偷拍久久熟女| 成人网欧美风情| 欧美性暴力猛交| 国产99久久99热这里只有精品15| 麻豆天美国美国产| 51一区二区三区| 一个国产在线综合网站| 国产欧美日韩在线观看麻豆传媒公司| 天天超级碰碰碰| 久久精品人人做人人看| 六月丁香五月婷婷| 97欧美久久久久久久| 亚洲无码国产探花在线观看| 色五月婷婷五月天| 午夜操操操| 操逼啊啊啊91| 97超碰久久色| 超碰在线人妻中文字幕| 男人天堂2019亚洲| 极品人妻少妇综合| 欧美黄片欧美黄片xxx| 97视频在线观看高清资源| 欧美少妇人妻| 婷婷五月丁香五月| 伊人网在线点播| 国产熟女乱论| 欧美91网站| 久久riav中文精品| 亚洲情色在线| 老熟女搡BBBB搡BBBB视频| 亚洲精品久久久久久久久豆丁网| 中文字幕丝袜| 99只有精品| 九九九九九九九九九国产精品| 亚洲色欲天天人妻无码系列专区| 国产自产22区| 偷看洗澡一二三区美女| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 色婷婷影院| 黑人在线91| 99精彩视频| 久久精品国产亚洲粉嫩| 激情综合五月| 超碰97丝袜| 欧美少妇大量自拍视频在线观看| 色妇综合网| 亚洲国产欧美日韩人妻日中文| 丰满人妻一区二区三区免费| 五月婷婷深深爱| 啊啊啊免费视频| 中文字幕日产av人| 欧美不卡在线一区二区| 日韩在线97| 久久久免费的精品| 久草成人影片| 99综合| 91精品老女人| 成人综合视频久久| 亚洲精品国产专区在线观看| 久久99深爱久久99精品| 熟女人妻一区二区三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久一二三四五六七八九区| 日本在线视频导航| 国产精品欧美在线观看| 亚洲天堂色图| 天堂а√在线最新版在线| 丝袜高跟澳门91视频| 91Chinese在线| 3PAV乱伦视频| 精品二999| 精品人妻美妇91job| 东京热毛片177b2viP| 少妇人妻无码| 香蕉人人操tv| 欧美亚洲91| 欧美日韩天堂| 久热99| 欧美日韩午夜精品一区二区三区| 国产精品婬乱一级毛片彝族| 欧美亚洲日韩人妻在线观看| 日本午夜久久电影| 亚洲九九九九| 伦理弟一页| 校园春色 亚洲| 伊人久操| 麻豆这里只有精品| 免费一级a毛片久久久久久鸭绿欲| 99只有精品| 在线播放成人网站| 岛国1区2区3区在线观看| 日日摸日日碰| 久草成人福利导航| 园内精品自拍视频在线播放| 欧美亚州综合网图片| 亚洲视频,小说| 婷婷激情综合网| 色操逼网| 2017天天拍大香蕉| 果冻传媒A片一二三区| 动漫片子网站3黄| 国产精品三级视频网站| 极品综合| 日韩猛交| 国产精品粉嫩福利在线| 天天摸夜夜摸| 在线另类| 少妇高潮对白在线观看| 粉嫩av平台| 91久久婷婷| 狠狠操狠狠燥| 欧美综合在线91| 欧美|91色综合| 色爱国产| 日本视频在线观看污污污| 成年人网站在线免费观看| 日比av无码| 学生妹天天看| 中文字幕88av在线| 亚洲天堂综合AV| 九九亚洲视频| 日韩免费看黄片| 国产性爱在线视频一区二区| 91狠狠综| 91 丝袜在线播放| 啊啊啊水好多| 人妻 欧美亚洲| 日本孕妇孕交| 精品无码久久久久| 久久久久久久久久黄色网| 精品久久久av| 超碰亚洲97| 久久人人妻| 95人妻爽爽人人做人人澡| 丁香色五月 97干| 大香蕉免费乱伦视频| 日韩 欧美 另类 人妻| 亚洲精品成人动漫在线| 伊人网青青| 亚洲国产成人精品999| 久久久久久久强迫| A级在线视频| 国内偷拍精品一区二区| a级免费在线观看| 欧美天天性| 男啪女色黄无遮挡免费观看| 九九AV| 久久精品一区二区| 久草成人| 午夜啪| 秋霞成人做爱| 成人性爱视频在线看| 精品人妻中文字幕4399| 欧美国产欧美在线观看| 91足交| 韩国一级做A片免费的| 91色婷婷综合久久中文字幕二区| 综合色色网| 99婷婷| 嗯阿好爽好紧| 天天干人妻| 啊啊啊操死我了| 久久久久久九九九九九|