openai 標準化協議 Structured Outputs 具體示例教程

Structured Outputs 具體示例教程

場景:個人財務管理助手

假設我們要構建一個 AI 助手,幫助用戶記錄和管理個人財務支出。用戶可以輸入自然語言描述(如“昨天我花了50元買了午餐”),助手將提取關鍵信息并以結構化 JSON 格式返回,包括日期、金額、類別和備注。


示例 1:使用 Structured Outputs 提取財務記錄

步驟 1:定義 JSON Schema

我們需要一個清晰的 Schema 來描述財務記錄:

{"type": "object","properties": {"date": {"type": "string","description": "支出日期,格式為 YYYY-MM-DD"},"amount": {"type": "number","description": "支出金額,單位為人民幣(元)"},"category": {"type": "string","enum": ["餐飲", "交通", "娛樂", "購物", "其他"],"description": "支出類別"},"note": {"type": ["string", "null"],"description": "可選備注,若無則為 null"}},"required": ["date", "amount", "category", "note"],"additionalProperties": false
}

設計要點

  • date 使用標準日期格式。
  • amount 為數字類型,確保精確。
  • category 使用枚舉限制可選值。
  • note 可選,通過 "type": ["string", "null"] 實現。

步驟 2:實現 API 調用

使用 Python 實現,提取用戶輸入中的財務信息:

from openai import OpenAI
import json
from datetime import datetime, timedeltaclient = OpenAI()# 定義 Schema
schema = {"type": "object","properties": {"date": {"type": "string", "description": "支出日期,格式為 YYYY-MM-DD"},"amount": {"type": "number", "description": "支出金額,單位為人民幣(元)"},"category": {"type": "string","enum": ["餐飲", "交通", "娛樂", "購物", "其他"],"description": "支出類別"},"note": {"type": ["string", "null"], "description": "可選備注,若無則為 null"}},"required": ["date", "amount", "category", "note"],"additionalProperties": False
}# 計算昨天的日期(假設當前日期為 2025-03-16)
yesterday = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system", "content": "你是一個財務管理助手,從用戶輸入中提取結構化支出信息。如果信息不完整,返回合理默認值。"},{"role": "user", "content": "昨天我花了50元買了午餐"}],text={"format": {"type": "json_schema","name": "expense_record","schema": schema,"strict": True}}
)# 解析結果
expense = json.loads(response.output_text)
print(json.dumps(expense, indent=2, ensure_ascii=False))

輸出

{"date": "2025-03-15","amount": 50,"category": "餐飲","note": "買了午餐"
}

解析說明

  • date:模型根據“昨天”推斷為 2025-03-15(假設當前為 2025-03-16)。
  • amount:從“50元”提取為數字 50。
  • category:根據“午餐”推斷為“餐飲”。
  • note:提取“買了午餐”作為備注。

步驟 3:處理邊緣情況

添加錯誤處理,應對拒絕或不完整響應:

try:response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system", "content": "你是一個財務管理助手,從用戶輸入中提取結構化支出信息。如果信息不完整,返回合理默認值。"},{"role": "user", "content": "昨天我花了50元買了午餐"}],max_output_tokens=20,  # 模擬令牌限制text={"format": {"type": "json_schema", "name": "expense_record", "schema": schema, "strict": True}})if response.status == "incomplete" and response.incomplete_details.reason == "max_output_tokens":print("錯誤:輸出令牌數不足,無法生成完整響應")elif response.output[0].content[0].type == "refusal":print(f"模型拒絕:{response.output[0].content[0].refusal}")else:expense = json.loads(response.output_text)print(json.dumps(expense, indent=2, ensure_ascii=False))except Exception as e:print(f"API 調用失敗:{e}")

可能輸出(令牌限制情況)

錯誤:輸出令牌數不足,無法生成完整響應

示例 2:結合 Function Calling 和 Structured Outputs

場景:保存財務記錄到數據庫

現在我們擴展功能,讓模型不僅提取支出信息,還調用函數將其保存到數據庫。

步驟 1:定義 Function Calling 和 Structured Outputs

Function Schema
{"type": "function","name": "save_expense","description": "將支出記錄保存到數據庫","parameters": {"type": "object","properties": {"date": {"type": "string", "description": "支出日期,YYYY-MM-DD"},"amount": {"type": "number", "description": "支出金額(元)"},"category": {"type": "string", "enum": ["餐飲", "交通", "娛樂", "購物", "其他"]},"note": {"type": ["string", "null"]}},"required": ["date", "amount", "category", "note"],"additionalProperties": False}
}
Structured Output Schema(用于最終響應)
{"type": "object","properties": {"status": {"type": "string", "enum": ["success", "error"]},"message": {"type": "string"}},"required": ["status", "message"],"additionalProperties": False
}

步驟 2:實現代碼

from openai import OpenAI
import json
from datetime import datetime, timedeltaclient = OpenAI()# 函數定義
tools = [{"type": "function","name": "save_expense","description": "將支出記錄保存到數據庫","parameters": {"type": "object","properties": {"date": {"type": "string", "description": "支出日期,YYYY-MM-DD"},"amount": {"type": "number", "description": "支出金額(元)"},"category": {"type": "string", "enum": ["餐飲", "交通", "娛樂", "購物", "其他"]},"note": {"type": ["string", "null"]}},"required": ["date", "amount", "category", "note"],"additionalProperties": False}
}]# Structured Output Schema
response_schema = {"type": "object","properties": {"status": {"type": "string", "enum": ["success", "error"]},"message": {"type": "string"}},"required": ["status", "message"],"additionalProperties": False
}# 用戶輸入
input_messages = [{"role": "system", "content": "你是一個財務管理助手,提取支出信息并保存到數據庫。"},{"role": "user", "content": "昨天我花了50元買了午餐"}
]# 第一次調用:提取并調用函數
response = client.responses.create(model="gpt-4o-2024-08-06",input=input_messages,tools=tools
)# 處理函數調用
tool_call = response.output[0]
if tool_call.type == "function_call":args = json.loads(tool_call.arguments)def save_expense(date, amount, category, note):# 模擬數據庫保存return f"記錄保存成功:{date}, {amount}元, {category}, {note}"result = save_expense(**args)# 將函數調用和結果追加到消息中input_messages.append(tool_call)input_messages.append({"type": "function_call_output","call_id": tool_call.call_id,"output": result})# 第二次調用:生成結構化響應
response_2 = client.responses.create(model="gpt-4o-2024-08-06",input=input_messages,text={"format": {"type": "json_schema","name": "save_response","schema": response_schema,"strict": True}}
)final_response = json.loads(response_2.output_text)
print(json.dumps(final_response, indent=2, ensure_ascii=False))

輸出

{"status": "success","message": "記錄保存成功:2025-03-15, 50元, 餐飲, 買了午餐"
}

流程說明

  1. 第一次調用識別并調用 save_expense 函數。
  2. 執行函數,模擬保存到數據庫。
  3. 第二次調用使用 Structured Outputs 返回最終狀態。

優化建議

  1. 動態日期處理

    • 在系統提示中明確日期推斷規則,如“‘昨天’應轉換為當前日期減一天”。
    • 示例:"將相對日期(如‘昨天’)轉換為 YYYY-MM-DD 格式,基于當前日期 2025-03-16。"
  2. 錯誤處理增強

    • 添加對無效金額或類別的驗證。
    • 示例:若用戶輸入“花了abc元”,返回 {"status": "error", "message": "金額無效"}
  3. 多記錄支持

    • 修改 Schema 支持數組,如:
      {"type": "array","items": {"$ref": "#/definitions/expense"},"definitions": {"expense": {...}}
      }
      
  4. 流式輸出

    • 對于長響應,使用 stream=True 實時顯示結果。

示例 1:健康記錄場景實現

場景描述

我們要構建一個健康管理助手,用戶可以輸入自然語言(如“今天早上我跑了5公里,心率達到120次/分鐘”),助手將提取健康數據并以結構化 JSON 格式返回,包括日期、活動類型、持續時間、心率等信息。

步驟 1:定義 JSON Schema

{"type": "object","properties": {"date": {"type": "string","description": "活動日期,格式為 YYYY-MM-DD"},"activity": {"type": "string","enum": ["跑步", "游泳", "騎行", "瑜伽", "其他"],"description": "活動類型"},"duration": {"type": ["number", "null"],"description": "活動持續時間(分鐘),若未知則為 null"},"heart_rate": {"type": ["number", "null"],"description": "平均心率(次/分鐘),若未知則為 null"},"notes": {"type": ["string", "null"],"description": "附加備注,若無則為 null"}},"required": ["date", "activity", "duration", "heart_rate", "notes"],"additionalProperties": false
}

設計要點

  • durationheart_rate 可選,使用 "type": ["number", "null"]
  • activity 使用枚舉限制常見類型。
  • date 要求標準格式。

步驟 2:實現代碼

from openai import OpenAI
import json
from datetime import datetimeclient = OpenAI()# 定義 Schema
health_schema = {"type": "object","properties": {"date": {"type": "string", "description": "活動日期,格式為 YYYY-MM-DD"},"activity": {"type": "string", "enum": ["跑步", "游泳", "騎行", "瑜伽", "其他"]},"duration": {"type": ["number", "null"], "description": "活動持續時間(分鐘)"},"heart_rate": {"type": ["number", "null"], "description": "平均心率(次/分鐘)"},"notes": {"type": ["string", "null"], "description": "附加備注"}},"required": ["date", "activity", "duration", "heart_rate", "notes"],"additionalProperties": False
}# 當前日期
today = datetime.now().strftime("%Y-%m-%d")response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system","content": "你是一個健康管理助手,從用戶輸入中提取結構化健康數據。‘今天’指 {today},若信息缺失則返回 null。"},{"role": "user", "content": "今天早上我跑了5公里,心率達到120次/分鐘"}],text={"format": {"type": "json_schema","name": "health_record","schema": health_schema,"strict": True}}
)health_record = json.loads(response.output_text)
print(json.dumps(health_record, indent=2, ensure_ascii=False))

輸出

{"date": "2025-03-16","activity": "跑步","duration": null,"heart_rate": 120,"notes": "跑了5公里"
}

解析說明

  • date:從“今天”推斷為 2025-03-16。
  • activity:識別為“跑步”。
  • duration:未提供分鐘數,返回 null
  • heart_rate:提取為 120。
  • notes:記錄“跑了5公里”。

步驟 3:優化與錯誤處理

try:response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system","content": f"你是一個健康管理助手,從用戶輸入中提取結構化健康數據。‘今天’指 {today},若信息缺失則返回 null。"},{"role": "user", "content": "今天早上我跑了5公里,心率達到120次/分鐘"}],text={"format": {"type": "json_schema", "name": "health_record", "schema": health_schema, "strict": True}})if response.status == "incomplete":print(f"響應不完整:{response.incomplete_details.reason}")elif response.output[0].content[0].type == "refusal":print(f"模型拒絕:{response.output[0].content[0].refusal}")else:health_record = json.loads(response.output_text)print(json.dumps(health_record, indent=2, ensure_ascii=False))except Exception as e:print(f"錯誤:{e}")

示例 2:任務管理(復雜 Schema 設計)

場景描述

構建一個任務管理助手,支持嵌套子任務和遞歸結構,用戶輸入(如“明天完成項目報告,包括收集數據和撰寫初稿”),返回任務及其子任務的結構化數據。

步驟 1:定義復雜 JSON Schema

使用遞歸結構表示任務和子任務:

{"type": "object","properties": {"task_id": {"type": "string","description": "唯一任務ID"},"title": {"type": "string","description": "任務標題"},"due_date": {"type": "string","description": "截止日期,格式 YYYY-MM-DD"},"subtasks": {"type": "array","description": "子任務列表","items": {"$ref": "#"}},"status": {"type": "string","enum": ["待辦", "進行中", "已完成"],"description": "任務狀態"}},"required": ["task_id", "title", "due_date", "subtasks", "status"],"additionalProperties": false
}

設計要點

  • subtasks 使用 "$ref": "#" 表示遞歸引用。
  • task_id 確保唯一性。
  • status 使用枚舉限制狀態。

步驟 2:實現代碼

from openai import OpenAI
import json
from datetime import datetime, timedelta
import uuidclient = OpenAI()# 定義 Schema
task_schema = {"type": "object","properties": {"task_id": {"type": "string", "description": "唯一任務ID"},"title": {"type": "string", "description": "任務標題"},"due_date": {"type": "string", "description": "截止日期,格式 YYYY-MM-DD"},"subtasks": {"type": "array", "description": "子任務列表", "items": {"$ref": "#"}},"status": {"type": "string", "enum": ["待辦", "進行中", "已完成"]}},"required": ["task_id", "title", "due_date", "subtasks", "status"],"additionalProperties": False
}# 計算明天日期
tomorrow = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%d")response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system","content": f"你是一個任務管理助手,生成結構化任務數據。‘明天’指 {tomorrow},為每個任務生成唯一 task_id(如 UUID)。"},{"role": "user", "content": "明天完成項目報告,包括收集數據和撰寫初稿"}],text={"format": {"type": "json_schema","name": "task","schema": task_schema,"strict": True}}
)task = json.loads(response.output_text)
print(json.dumps(task, indent=2, ensure_ascii=False))

輸出

{"task_id": "a1b2c3d4-5678-90ef-ghij-klmn","title": "完成項目報告","due_date": "2025-03-17","subtasks": [{"task_id": "e5f6g7h8-9012-34ij-klmn-opqr","title": "收集數據","due_date": "2025-03-17","subtasks": [],"status": "待辦"},{"task_id": "i9j0k1l2-3456-78mn-opqr-stuv","title": "撰寫初稿","due_date": "2025-03-17","subtasks": [],"status": "待辦"}],"status": "待辦"
}

解析說明

  • 主任務“完成項目報告”包含兩個子任務。
  • 每個任務都有唯一 task_id(UUID)。
  • due_date 推斷為明天(2025-03-17)。

步驟 3:優化與調試

調試支持

若輸出不符合預期(如子任務缺失),可能原因及解決方法:

  1. 提示不明確

    • 問題:模型未識別“收集數據”和“撰寫初稿”為子任務。
    • 解決:調整系統提示,添加“將‘包括’后的內容拆分為子任務”。
    • 示例:"將‘包括’后的內容拆分為獨立的子任務,每個子任務需有唯一 task_id 和默認狀態‘待辦’。"
  2. Schema 限制

    • 問題:嵌套層級超過 5 層(Structured Outputs 限制)。
    • 解決:檢查輸出,確保不超過限制,或簡化結構。
優化代碼
try:response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system","content": f"你是一個任務管理助手,生成結構化任務數據。‘明天’指 {tomorrow},為每個任務生成唯一 task_id(如 UUID)。將‘包括’后的內容拆分為子任務。"},{"role": "user", "content": "明天完成項目報告,包括收集數據和撰寫初稿"}],text={"format": {"type": "json_schema", "name": "task", "schema": task_schema, "strict": True}})if response.status == "incomplete":print(f"不完整:{response.incomplete_details.reason}")elif response.output[0].content[0].type == "refusal":print(f"拒絕:{response.output[0].content[0].refusal}")else:task = json.loads(response.output_text)print(json.dumps(task, indent=2, ensure_ascii=False))except Exception as e:print(f"錯誤:{e}")

調試支持:常見問題及優化建議

  1. 問題:模型未填充所有字段

    • 原因:輸入信息不足或提示未明確要求填充。
    • 解決:在系統提示中添加默認值規則,如“若持續時間未知,返回 null”。
  2. 問題:輸出不符合 Schema

    • 原因:Schema 定義錯誤(如漏寫 required)。
    • 解決:檢查 Schema,確保 additionalProperties: false 和所有字段在 required 中。
  3. 問題:復雜嵌套導致性能下降

    • 原因:遞歸結構過深或屬性過多。
    • 解決:簡化 Schema,或使用 Function Calling 分擔復雜邏輯。

示例調試代碼

假設健康記錄示例中 heart_rate 未正確提取:

# 修改提示以明確要求
response = client.responses.create(model="gpt-4o-2024-08-06",input=[{"role": "system","content": f"你是一個健康管理助手,從用戶輸入中提取結構化健康數據。‘今天’指 {today},若信息缺失則返回 null。明確提取‘心率’并以數字表示。"},{"role": "user", "content": "今天早上我跑了5公里,心率達到120次/分鐘"}],text={"format": {"type": "json_schema", "name": "health_record", "schema": health_schema, "strict": True}}
)health_record = json.loads(response.output_text)
print(json.dumps(health_record, indent=2, ensure_ascii=False))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898210.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898210.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898210.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

16.使用讀寫包操作Excel文件:XlsxWriter 包

一 XlsxWriter 的介紹 XlsxWriter 只能寫入 Excel 文件。 OpenPyXL 和 XlsxWriter 的區別在筆記 15 。 二 如何使用 XlsxWriter 1.導包 import datetime as dtimport xlsxwriterimport excel 2.實例化工作簿 book xlsxwriter.Workbook("xlxswriter.xlsx") book.clo…

ChatGPT and Claude國內使用站點

RawChat kelaode chatgptplus chatopens(4.o mini免費,plus收費) 網頁: 定價: wildcard 網頁: 虛擬卡定價: 2233.ai 網頁: 定價: MaynorAPI chatgpt cla…

【MySQL】MySQL審計工具Audit Plugin安裝使用

MySQL審計工具Audit Plugin安裝使用 https://www.cnblogs.com/waynechou/p/mysql_audit.html MySQL 5.6 開啟審計功能 https://blog.51cto.com/u_15127556/4344503 MySQL之添加日志審計功能 https://blog.csdn.net/weixin_43279032/article/details/105507170 MySQL開啟日志記錄…

QT 磁盤文件 教程04-創建目錄、刪除目錄、遍歷目錄

【1】新建目錄 bool CreateDir(QString name){QString fileName name ;QDir dir(fileName);if (dir.isEmpty()) {dir.mkdir(fileName);return true;}else{qDebug()<<"文件夾已存在";return false;} } 【2】刪除目錄 bool DeleteDir(QString fileName){if (…

Git——分布式版本控制工具使用教程

本文主要介紹兩種版本控制工具——SVN和Git的概念&#xff0c;接著會講到Git的安裝&#xff0c;Git常用的命令&#xff0c;以及怎么在Vscode中使用Git。幫助新手小白快速上手Git。 1. SVN和Git介紹 1.1 SVN 集中式版本控制工具&#xff0c;版本庫是集中存放在中央服務器的&am…

Vue:添加響應式數據

Vue&#xff1a;添加響應式數據 1. 什么是響應式&#xff1f; 修改 data 后&#xff0c;頁面自動改變/刷新&#xff0c;這就是響應式。就像我們在使用 Excel 的時候&#xff0c;修改一個單元格中的數據&#xff0c;其它單元格的數據會聯動更新&#xff0c;這也是響應式。在前…

算法刷題記錄——LeetCode篇(10) [第901~1000題](持續更新)

(優先整理熱門100及面試150&#xff0c;不定期持續更新&#xff0c;歡迎關注) 994. 腐爛的橘子 在給定的 m x n 網格 grid 中&#xff0c;每個單元格可以有以下三個值之一&#xff1a; 值 0 代表空單元格&#xff1b;值 1 代表新鮮橘子&#xff1b;值 2 代表腐爛的橘子。 每…

Secs/Gem第二講 (基于secs4net項目的ChatGpt介紹)

好的&#xff0c;我們正式進入&#xff1a; 第二講&#xff1a;深入 SECS4NET 項目結構——主機程序是怎么搭起來的&#xff1f; 關鍵詞&#xff1a;項目結構、類圖、通信類、事件處理、連接生命周期、異步機制 本講目的 我們從源碼入手&#xff0c;一步步搞懂&#xff1a; S…

壓測實戰 | 微信小程序商城 “雙 11” 的壓測實踐

背景 某全球知名珠寶品牌&#xff0c;始終以創新驅動零售變革。隨著全渠道戰略的深化&#xff0c;其小程序官方商城逐漸成為品牌私域流量的核心陣地&#xff0c;不僅承載了線上銷售、會員運營等功能&#xff0c;同時還與其內部系統打通&#xff0c;如會員管理系統、人力資源系…

垃圾分類--環境配置

寫在前面&#xff1a; 如果你們打這屆比賽時&#xff0c;還有我們所保留的內存卡&#xff0c;那么插上即可運行&#xff08;因為內存卡里我們已經配置好所有的環境&#xff09; 本文提供兩種環境的配置 一種是基于yolov8&#xff1a;YOLOv8 - Ultralytics YOLO Docshttps://d…

工具(十二):Java導出MySQL數據庫表結構信息到excel

一、背景 遇到需求&#xff1a;將指定數據庫表設計&#xff0c;統一導出到一個Excel中&#xff0c;存檔查看。 如果一個一個弄&#xff0c;很復雜&#xff0c;耗時長。 二、寫一個工具導出下 廢話少絮&#xff0c;上碼&#xff1a; 2.1 pom導入 <dependency><grou…

Postman 新手入門指南:從零開始掌握 API 測試

Postman 新手入門指南&#xff1a;從零開始掌握 API 測試 一、Postman 是什么&#xff1f; Postman 是一款功能強大的 API 開發與測試工具&#xff0c;支持 HTTP 請求調試、自動化測試、團隊協作等功能。無論是開發人員還是測試工程師&#xff0c;都可以用它快速驗證接口的正確…

運維工具推薦 -- 寶塔面板:一鍵部署服務器

標題&#xff1a;寶塔面板&#xff1a;一鍵部署服務器&#xff0c;輕松管理你的云端世界 引言 在數字化時代&#xff0c;服務器管理對于個人開發者、中小企業或站長來說既是機遇也是挑戰。手動配置服務器環境耗時費力&#xff0c;而 寶塔面板 作為一款 免費開源、功能全面 的服…

【軟件工程】03_軟件需求分析

3.1 系統分析 1. 系統分析概述 系統分析是一組統稱為計算機系統工程的活動。它著眼于所有的系統元素,而非僅僅局限于軟件。系統分析主要探索軟件項目的目標、市場預期、主要的技術指標等,其目的在于幫助決策者做出是否進行軟件項目立項的決定。 2. 可行性分析(Feasibility …

WD5202L超低成本 Buck 電源芯片的特性與應用電路解析, 將市電轉換為 5V 電壓

WD5202L&#xff1a;超低成本 Buck 電源芯片的特性與應用電路解析 在現代電子設備的小型化、低成本化趨勢下&#xff0c;對電源管理芯片的性能、成本和尺寸提出了嚴苛要求。WD5202L 作為一款超低成本的 Buck 電源芯片&#xff0c;憑借其獨特的特性&#xff0c;在眾多應用場景中…

UART轉AHB模塊ModelSim仿真

一、簡介 UART轉AHB模塊用于實現一種簡單的通過上位機控制FPGA內部寄存器的方式。上位機通過串口助手發送讀寫寄存器的指令&#xff0c;UART轉AHB模塊接收指令后解析出地址&#xff0c;命令&#xff0c;數據信息&#xff0c;然后轉成AHB總線格式輸出。這時UART轉AHB模塊相當于A…

Qt5.15.2實現Qt for WebAssembly與示例

目錄 1.什么是Qt for WebAssembly&#xff1f; 1.1 什么是 WebAssembly&#xff1f; 1.2 WebAssembly 的優勢 1.3 什么是 Qt for WebAssembly&#xff1f; 1.4 Qt for WebAssembly 的特點 1.5 編譯過程 1.6 運行時環境 注意&#xff01;&#xff01;&#xff01;注意&am…

AGI大模型(8):提示詞的安全與防護

1 前言 著名的「奶奶漏洞」&#xff0c;?套路把 AI 繞懵。 2 常?的提示詞攻擊技術 2.1 同類型?標劫持 同類?標劫持攻擊&#xff0c;特別是在同類型任務的背景下&#xff0c;涉及到攻擊者通過?法?段控制模型&#xff0c;并迫使其執行與原始任務性質相同但?標不同的操作…

使用redis客戶端中對于json數據格式的存儲和讀取

代碼背景&#xff1a; 現在有一個json格式的數據&#xff0c;但是由于redis客戶端上面沒辦法直接創建/導入json的數據格式。 故考慮現在redis客戶端上先存儲一個名為"old_order"的string類型的的源數據。 思路&#xff1a; 由于直接使用redisTemplate獲取自動導入…

專題三搜索插入位置

1.題目 題目分析&#xff1a; 給一個目標值&#xff0c;然后要在排序的整數數組中&#xff0c;找到跟目標值一樣的&#xff0c;如果沒有就把這個值插入進去&#xff0c;然后返回插入后的下標。 2.算法原理 根據題目的時間復雜度可以知道要用二分&#xff0c;開始劃分區域&…