大模型微調實戰之基于星火大模型的群聊對話分角色要素提取挑戰賽:Task01:跑通Baseline

目錄

  • 0 背景
  • 1 環境配置
    • 1.1 下載包
    • 1.2 配置密鑰
    • 1.3 測試模型
  • 2 解決問題
    • 2.1 獲取數據
    • 2.2 設計Prompt
    • 2.2 設計處理函數
    • 2.3 開始提取
  • 附全流程代碼

0 背景

Datawhale AI夏令營第二期開始啦,去年有幸參與過第一期,收獲很多,這次也立馬參與了第二期,這一期主要是關于大模型微調實戰的,之前一直想接觸大模型,但是忙于畢業一直沒有行動,抓住這次機會行動起來!

在當今數字化時代,企業積累了豐富的對話數據,這些數據不僅是客戶與企業之間交流的記錄,更是隱藏著寶貴信息的寶庫。在這個背景下,群聊對話分角色要素提取成為了企業營銷和服務的一項重要策略。
群聊對話分角色要素提取的理念是基于企業對話數據的深度分析和挖掘。通過對群聊對話數據進行分析,企業可以更好地理解客戶的需求、興趣和行為模式,從而精準地把握客戶的需求和心理,提供更加個性化和優質的服務。這不僅有助于企業更好地滿足客戶的需求,提升客戶滿意度,還可以為企業帶來更多的商業價值和競爭優勢。
群聊對話分角色要素提取的研究,將企業對話數據轉化為可用的信息和智能的洞察,為企業營銷和服務提供了新的思路和方法。通過挖掘對話數據中隱藏的客戶行為特征和趨勢,企業可以更加精準地進行客戶定位、推廣營銷和產品服務,實現營銷效果的最大化和客戶價值的最大化。這將為企業帶來更廣闊的發展空間和更持續的競爭優勢。

相關鏈接:
基于星火大模型的群聊對話分角色要素提取挑戰賽
零基礎入門大模型技術競賽-速通學習手冊

1 環境配置

1.1 下載包

本項目是基于windows環境,pycharm編譯器,星火認知大模型Spark3.5 Max,首先安裝軟件包

pip install --upgrade spark_ai_python  # 這里相較于baseline版本去掉-q

國內使用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple spark_ai_python

如果清華源版本不可用,請使用一下命令升級到最新版本:

pip install -i  https://repo.model.xfyun.cn/api/packages/administrator/pypi/simple  spark_ai_python --upgrade

或者,開那個解決。(最好用)

我在安裝的時候出現了報錯,經分析是網絡問題,開那個解決了。
在這里插入圖片描述

注:項目僅支持 Python3.8+

1.2 配置密鑰

這里密鑰從訊飛開發者平臺申請,Datawhale還幫我們申請了200w的token,隨便花!

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
import json#星火認知大模型Spark3.5 Max的URL值,其他版本大模型URL值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
#星火認知大模型調用秘鑰信息,請前往訊飛開放平臺控制臺(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = ''  # 替換成自己的
SPARKAI_API_SECRET = ''  # 替換成自己的
SPARKAI_API_KEY = ''  # 替換成自己的
#星火認知大模型Spark3.5 Max的domain值,其他版本大模型domain值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'generalv3.5'

1.3 測試模型

baseline提供了一個函數用于測試環境以及API是否配置合理,直接運行即可

def get_completions(text):messages = [ChatMessage(role="user",content=text)]spark = ChatSparkLLM(spark_api_url=SPARKAI_URL,spark_app_id=SPARKAI_APP_ID,spark_api_key=SPARKAI_API_KEY,spark_api_secret=SPARKAI_API_SECRET,spark_llm_domain=SPARKAI_DOMAIN,streaming=False,)handler = ChunkPrintHandler()a = spark.generate([messages], callbacks=[handler])return a.generations[0][0].text# 測試模型配置是否正確
text = "你是誰?"
print(get_completions(text))  # 注意這里要添加一個print函數

注意:相較于baseline,最后一行添加了print函數,因為百度在線平臺會直接打印以及輸出圖片。

  • 直接調用了ChatMessage()用于獲取用戶輸入的字符串,其中role參數:system用于設置對話背景,user表示是用戶的問題,assistant表示AI的回復。content是用戶和AI的對話內容。
  • ChatSparkLLM()構造了星火模型,其中streaming參數指的是采用一次性返回結果(非流式)還是采用流式返回結果。這里簡單測試,采用False

詳細的SDK說明可以在星火的Github查看。

2 解決問題

2.1 獲取數據

def read_json(json_file_path):"""讀取json文件"""with open(json_file_path, 'r', encoding='utf-8') as f:data = json.load(f)return datadef write_json(json_file_path, data):"""寫入json文件"""with open(json_file_path, 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)# 讀取數據
train_data = read_json("dataset/train.json")
test_data = read_json("dataset/test_data.json")

這里就是很普通的實現了Json文件的讀取函數和寫入函數。注意win環境下在讀取和寫入的時候要添加, encoding='utf-8',否則會讀取失敗。在許多中文Windows系統中,默認編碼是gbk,而不是utf-8。

2.2 設計Prompt

baseline提供的Prompt:

# prompt 設計
PROMPT_EXTRACT = """
你將獲得一段群聊對話記錄。你的任務是根據給定的表單格式從對話記錄中提取結構化信息。在提取信息時,請確保它與類型信息完全匹配,不要添加任何沒有出現在下面模式中的屬性。表單格式如下:
info: Array<Dict("基本信息-姓名": string | "",  // 客戶的姓名。"基本信息-手機號碼": string | "",  // 客戶的手機號碼。"基本信息-郵箱": string | "",  // 客戶的電子郵箱地址。"基本信息-地區": string | "",  // 客戶所在的地區或城市。"基本信息-詳細地址": string | "",  // 客戶的詳細地址。"基本信息-性別": string | "",  // 客戶的性別。"基本信息-年齡": string | "",  // 客戶的年齡。"基本信息-生日": string | "",  // 客戶的生日。"咨詢類型": string[] | [],  // 客戶的咨詢類型,如詢價、答疑等。"意向產品": string[] | [],  // 客戶感興趣的產品。"購買異議點": string[] | [],  // 客戶在購買過程中提出的異議或問題。"客戶預算-預算是否充足": string | "",  // 客戶的預算是否充足。示例:充足, 不充足"客戶預算-總體預算金額": string | "",  // 客戶的總體預算金額。"客戶預算-預算明細": string | "",  // 客戶預算的具體明細。"競品信息": string | "",  // 競爭對手的信息。"客戶是否有意向": string | "",  // 客戶是否有購買意向。示例:有意向, 無意向"客戶是否有卡點": string | "",  // 客戶在購買過程中是否遇到阻礙或卡點。示例:有卡點, 無卡點"客戶購買階段": string | "",  // 客戶當前的購買階段,如合同中、方案交流等。"下一步跟進計劃-參與人": string[] | [],  // 下一步跟進計劃中涉及的人員(客服人員)。"下一步跟進計劃-時間點": string | "",  // 下一步跟進的時間點。"下一步跟進計劃-具體事項": string | ""  // 下一步需要進行的具體事項。
)>請分析以下群聊對話記錄,并根據上述格式提取信息:**對話記錄:**
'''
{content}
'''請將提取的信息以JSON格式輸出。
不要添加任何澄清信息。
輸出必須遵循上面的模式。
不要添加任何沒有出現在模式中的附加字段。
不要隨意刪除字段。**輸出:**
'''
[{{"基本信息-姓名": "姓名","基本信息-手機號碼": "手機號碼","基本信息-郵箱": "郵箱","基本信息-地區": "地區","基本信息-詳細地址": "詳細地址","基本信息-性別": "性別","基本信息-年齡": "年齡","基本信息-生日": "生日","咨詢類型": ["咨詢類型"],"意向產品": ["意向產品"],"購買異議點": ["購買異議點"],"客戶預算-預算是否充足": "充足或不充足","客戶預算-總體預算金額": "總體預算金額","客戶預算-預算明細": "預算明細","競品信息": "競品信息","客戶是否有意向": "有意向或無意向","客戶是否有卡點": "有卡點或無卡點","客戶購買階段": "購買階段","下一步跟進計劃-參與人": ["跟進計劃參與人"],"下一步跟進計劃-時間點": "跟進計劃時間點","下一步跟進計劃-具體事項": "跟進計劃具體事項"
}}, ...]
'''
"""

2.2 設計處理函數

import jsonclass JsonFormatError(Exception):def __init__(self, message):self.message = messagesuper().__init__(self.message)def convert_all_json_in_text_to_dict(text):"""提取LLM輸出文本中的json字符串"""dicts, stack = [], []for i in range(len(text)):if text[i] == '{':stack.append(i)elif text[i] == '}':begin = stack.pop()if not stack:dicts.append(json.loads(text[begin:i+1]))return dicts# 查看對話標簽
def print_json_format(data):"""格式化輸出json格式"""print(json.dumps(data, indent=4, ensure_ascii=False))def check_and_complete_json_format(data):required_keys = {"基本信息-姓名": str,"基本信息-手機號碼": str,"基本信息-郵箱": str,"基本信息-地區": str,"基本信息-詳細地址": str,"基本信息-性別": str,"基本信息-年齡": str,"基本信息-生日": str,"咨詢類型": list,"意向產品": list,"購買異議點": list,"客戶預算-預算是否充足": str,"客戶預算-總體預算金額": str,"客戶預算-預算明細": str,"競品信息": str,"客戶是否有意向": str,"客戶是否有卡點": str,"客戶購買階段": str,"下一步跟進計劃-參與人": list,"下一步跟進計劃-時間點": str,"下一步跟進計劃-具體事項": str}if not isinstance(data, list):raise JsonFormatError("Data is not a list")for item in data:if not isinstance(item, dict):raise JsonFormatError("Item is not a dictionary")for key, value_type in required_keys.items():if key not in item:item[key] = [] if value_type == list else ""if not isinstance(item[key], value_type):raise JsonFormatError(f"Key '{key}' is not of type {value_type.__name__}")if value_type == list and not all(isinstance(i, str) for i in item[key]):raise JsonFormatError(f"Key '{key}' does not contain all strings in the list")return data
  • JsonFormatError 類: 這是一個自定義異常類,繼承自Python內置的Exception類。當遇到JSON格式錯誤時,這個異常會被拋出。它接收一個消息參數,并將其存儲在message屬性中。
  • convert_all_json_in_text_to_dict 函數: 這個函數接受一個字符串參數text,然后掃描這個字符串,尋找JSON對象,并將它們轉換為Python字典。它使用一個棧來處理嵌套的JSON對象,并只在找到匹配的括號對時才嘗試解析JSON。
  • print_json_format 函數: 這個函數接受一個Python字典data作為參數,并將其轉換為格式化的JSON字符串,然后打印出來。它使用json.dumps函數來實現這個轉換,其中indent=4用于美化輸出,ensure_ascii=False允許打印非ASCII字符。
  • check_and_complete_json_format 函數: 這個函數用于檢查一個列表中的每個字典是否包含一組特定的鍵,并且這些鍵對應的值的類型也是正確的。

2.3 開始提取

from tqdm import tqdmretry_count = 5 # 重試次數
result = []
error_data = []for index, data in tqdm(enumerate(test_data)):index += 1is_success = Falsefor i in range(retry_count):try:res = get_completions(PROMPT_EXTRACT.format(content=data["chat_text"]))infos = convert_all_json_in_text_to_dict(res)infos = check_and_complete_json_format(infos)result.append({"infos": infos,"index": index})is_success = Truebreakexcept Exception as e:print("index:", index, ", error:", e)continueif not is_success:data["index"] = indexerror_data.append(data)
write_json("output.json", result)

附全流程代碼

配置好虛擬環境,下載兩個json文件到dataset文件夾下即可直接使用。

"""
==========================================
@author: Seaton
@Time: 2024/6/29:下午7:19
@IDE: PyCharm
@Summary:Task01:baseline實現
==========================================
"""
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
import json
from tqdm import tqdm# 星火認知大模型Spark3.5 Max的URL值,其他版本大模型URL值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
# 星火認知大模型調用秘鑰信息,請前往訊飛開放平臺控制臺(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''
# 星火認知大模型Spark3.5 Max的domain值,其他版本大模型domain值請前往文檔(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'generalv3.5'def get_completions(text):messages = [ChatMessage(role="user",content=text)]spark = ChatSparkLLM(spark_api_url=SPARKAI_URL,spark_app_id=SPARKAI_APP_ID,spark_api_key=SPARKAI_API_KEY,spark_api_secret=SPARKAI_API_SECRET,spark_llm_domain=SPARKAI_DOMAIN,streaming=False,)handler = ChunkPrintHandler()a = spark.generate([messages], callbacks=[handler])return a.generations[0][0].text# # 測試模型配置是否正確
# text = "你是誰?"
# print(get_completions(text))  # 注意這里要添加一個print函數def read_json(json_file_path):"""讀取json文件"""with open(json_file_path, 'r', encoding='utf-8') as f:data = json.load(f)return datadef write_json(json_file_path, data):"""寫入json文件"""with open(json_file_path, 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)# 讀取數據
train_data = read_json("dataset/train.json")
test_data = read_json("dataset/test_data.json")# prompt 設計
PROMPT_EXTRACT = """
你將獲得一段群聊對話記錄。你的任務是根據給定的表單格式從對話記錄中提取結構化信息。在提取信息時,請確保它與類型信息完全匹配,不要添加任何沒有出現在下面模式中的屬性。表單格式如下:
info: Array<Dict("基本信息-姓名": string | "",  // 客戶的姓名。"基本信息-手機號碼": string | "",  // 客戶的手機號碼。"基本信息-郵箱": string | "",  // 客戶的電子郵箱地址。"基本信息-地區": string | "",  // 客戶所在的地區或城市。"基本信息-詳細地址": string | "",  // 客戶的詳細地址。"基本信息-性別": string | "",  // 客戶的性別。"基本信息-年齡": string | "",  // 客戶的年齡。"基本信息-生日": string | "",  // 客戶的生日。"咨詢類型": string[] | [],  // 客戶的咨詢類型,如詢價、答疑等。"意向產品": string[] | [],  // 客戶感興趣的產品。"購買異議點": string[] | [],  // 客戶在購買過程中提出的異議或問題。"客戶預算-預算是否充足": string | "",  // 客戶的預算是否充足。示例:充足, 不充足"客戶預算-總體預算金額": string | "",  // 客戶的總體預算金額。"客戶預算-預算明細": string | "",  // 客戶預算的具體明細。"競品信息": string | "",  // 競爭對手的信息。"客戶是否有意向": string | "",  // 客戶是否有購買意向。示例:有意向, 無意向"客戶是否有卡點": string | "",  // 客戶在購買過程中是否遇到阻礙或卡點。示例:有卡點, 無卡點"客戶購買階段": string | "",  // 客戶當前的購買階段,如合同中、方案交流等。"下一步跟進計劃-參與人": string[] | [],  // 下一步跟進計劃中涉及的人員(客服人員)。"下一步跟進計劃-時間點": string | "",  // 下一步跟進的時間點。"下一步跟進計劃-具體事項": string | ""  // 下一步需要進行的具體事項。
)>請分析以下群聊對話記錄,并根據上述格式提取信息:**對話記錄:**
'''
{content}
'''請將提取的信息以JSON格式輸出。
不要添加任何澄清信息。
輸出必須遵循上面的模式。
不要添加任何沒有出現在模式中的附加字段。
不要隨意刪除字段。**輸出:**
'''
[{{"基本信息-姓名": "姓名","基本信息-手機號碼": "手機號碼","基本信息-郵箱": "郵箱","基本信息-地區": "地區","基本信息-詳細地址": "詳細地址","基本信息-性別": "性別","基本信息-年齡": "年齡","基本信息-生日": "生日","咨詢類型": ["咨詢類型"],"意向產品": ["意向產品"],"購買異議點": ["購買異議點"],"客戶預算-預算是否充足": "充足或不充足","客戶預算-總體預算金額": "總體預算金額","客戶預算-預算明細": "預算明細","競品信息": "競品信息","客戶是否有意向": "有意向或無意向","客戶是否有卡點": "有卡點或無卡點","客戶購買階段": "購買階段","下一步跟進計劃-參與人": ["跟進計劃參與人"],"下一步跟進計劃-時間點": "跟進計劃時間點","下一步跟進計劃-具體事項": "跟進計劃具體事項"
}}, ...]
'''
"""class JsonFormatError(Exception):def __init__(self, message):self.message = messagesuper().__init__(self.message)def convert_all_json_in_text_to_dict(text):"""提取LLM輸出文本中的json字符串"""dicts, stack = [], []for i in range(len(text)):if text[i] == '{':stack.append(i)elif text[i] == '}':begin = stack.pop()if not stack:dicts.append(json.loads(text[begin:i+1]))return dicts# 查看對話標簽
def print_json_format(data):"""格式化輸出json格式"""print(json.dumps(data, indent=4, ensure_ascii=False))def check_and_complete_json_format(data):required_keys = {"基本信息-姓名": str,"基本信息-手機號碼": str,"基本信息-郵箱": str,"基本信息-地區": str,"基本信息-詳細地址": str,"基本信息-性別": str,"基本信息-年齡": str,"基本信息-生日": str,"咨詢類型": list,"意向產品": list,"購買異議點": list,"客戶預算-預算是否充足": str,"客戶預算-總體預算金額": str,"客戶預算-預算明細": str,"競品信息": str,"客戶是否有意向": str,"客戶是否有卡點": str,"客戶購買階段": str,"下一步跟進計劃-參與人": list,"下一步跟進計劃-時間點": str,"下一步跟進計劃-具體事項": str}if not isinstance(data, list):raise JsonFormatError("Data is not a list")for item in data:if not isinstance(item, dict):raise JsonFormatError("Item is not a dictionary")for key, value_type in required_keys.items():if key not in item:item[key] = [] if value_type == list else ""if not isinstance(item[key], value_type):raise JsonFormatError(f"Key '{key}' is not of type {value_type.__name__}")if value_type == list and not all(isinstance(i, str) for i in item[key]):raise JsonFormatError(f"Key '{key}' does not contain all strings in the list")return dataretry_count = 5  # 重試次數
result = []
error_data = []for index, data in tqdm(enumerate(test_data)):index += 1is_success = Falsefor i in range(retry_count):try:res = get_completions(PROMPT_EXTRACT.format(content=data["chat_text"]))infos = convert_all_json_in_text_to_dict(res)infos = check_and_complete_json_format(infos)result.append({"infos": infos,"index": index})is_success = Truebreakexcept Exception as e:print("index:", index, ", error:", e)continueif not is_success:data["index"] = indexerror_data.append(data)write_json("output.json", result)

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

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

相關文章

VMware ESXi 技術

目錄 一、VMware ESXi安裝 1. 在VMware WorkStation中創建一臺虛擬機 2. 進入VMware ESXi控制臺 3. 配置VMware ESXi網絡 二、使用Web網頁端登錄管理ESXi 1. 分配許可證密鑰&#xff08;選做&#xff09; 2. 管理ESXi 三、VMware ESXi控制臺 1. 創建虛擬機 2. 定制虛擬…

Webpack: 開發 PWA、Node、Electron 應用

概述 毋庸置疑&#xff0c;對前端開發者而言&#xff0c;當下正是一個日升月恒的美好時代&#xff01;在久遠的過去&#xff0c;Web 頁面的開發技術鏈條非常原始而粗糙&#xff0c;那時候的 JavaScript 更多用來點綴 Web 頁面交互而不是用來構建一個完整的應用。直到 2009年5月…

LINUX操作系統:Mx Linux,用虛擬機VMware Workstation安裝體驗

需求說明&#xff1a; 操作系統目前流行有Windows、Linux、Unix等&#xff0c;中國人應該要知道國有操作系統&#xff0c;也要支持國產操作系統&#xff0c;為了更好支持國產操作系統&#xff0c;我們也要知己知彼&#xff0c;那么今天就來體驗一把操作系統Mx_Linux_23.2的安裝…

分享一個下載windows系統鏡像包的網站

下載各種操作系統&#xff08;比如Windows、Linux、MacOS等&#xff09;比較快的鏡像站點&#xff0c;我嘗試過這個不錯&#xff0c;提供了BT連接&#xff0c;可以用迅雷軟件下載&#xff0c;速度很快的&#xff01; 入口地址&#xff1a;NEXT, ITELLYOU 1&#xff09;打開網站…

[XYCTF新生賽2024] pwn

用了一周來復現crypto部分(不能算是復現&#xff0c;拿著 糖醋小雞塊的WP一點點學了下)。 兩天時間復現PWN部分。相對來說PWN比密碼這塊要簡單&#xff0c;不過ARM,MIPS懶得學了&#xff0c;跳過。 malloc_flag 題目先打開flag將建0x100的塊&#xff0c;然后把flag讀入再fre…

[深度學習] Transformer

Transformer是一種深度學習模型&#xff0c;最早由Vaswani等人在2017年的論文《Attention is All You Need》中提出。它最初用于自然語言處理&#xff08;NLP&#xff09;任務&#xff0c;但其架構的靈活性使其在許多其他領域也表現出色&#xff0c;如計算機視覺、時間序列分析…

MySQL高級-SQL優化- limit優化(覆蓋索引加子查詢)

文章目錄 0、limit 優化0.1、從表 tb_sku 中按照 id 列進行排序&#xff0c;然后跳過前 9000000 條記錄0.2、通過子查詢獲取按照 id 排序后的第 9000000 條開始的 10 條記錄的 id 值&#xff0c;然后在原表中根據這些 id 值獲取對應的完整記錄 1、上傳5個sql文件到 /root2、查看…

libctk shared library的設計及編碼實踐記錄

一、引言 1.1 <libctk>的由來 1.2 <libctk>的設計理論依據 1.3 <libctk>的設計理念 二、<libctk>的依賴庫 三、<libctk>的目錄說明 四、<libctk>的功能模塊及使用實例說明 4.1 日志模塊 4.2 mysql client模塊 4.3 ftp client模塊 4…

鴻蒙開發設備管理:【@ohos.geolocation (位置服務)】

位置服務 說明&#xff1a; 本模塊首批接口從API version 7開始支持。后續版本的新增接口&#xff0c;采用上角標單獨標記接口的起始版本。 導入模塊 import geolocation from ohos.geolocation;geolocation.on(‘locationChange’) on(type: ‘locationChange’, request: L…

安卓開發自定義時間日期顯示組件

安卓開發自定義時間日期顯示組件 問題背景 實現時間和日期顯示&#xff0c;左對齊和對齊兩種效果&#xff0c;如下圖所示&#xff1a; 問題分析 自定義view實現一般思路&#xff1a; &#xff08;1&#xff09;自定義一個View &#xff08;2&#xff09;編寫values/attrs.…

poi-tl 生成 word 文件(插入文字、圖片、表格、圖表)

文章說明 本篇文章主要通過代碼案例的方式&#xff0c;展示 poi-tl 生成 docx 文件的一些常用操作&#xff0c;主要涵蓋以下內容 &#xff1a; 插入文本字符&#xff08;含樣式、超鏈接&#xff09;插入圖片插入表格引入標簽&#xff08;通過可選文字的方式&#xff0c;這種方…

俄羅斯防空系統

俄羅斯的S系列防空系統是一系列先進的地對空導彈系統&#xff0c;旨在防御各類空中威脅&#xff0c;包括飛機、無人機、巡航導彈和彈道導彈。以下是幾種主要的S系列防空系統&#xff1a; 1. **S-300系統**&#xff1a; - **S-300P**&#xff1a;最早期的版本&#xff0c;用…

翻譯造句練習

翻譯練習 翻譯 1&#xff1a;經常做運動會提高人的自信 翻譯 2&#xff1a;教學的質量對學生成績有很大的影響。 翻譯 3&#xff1a;家長和老師應該努力去減少小孩看電視的時間。 翻譯 4&#xff1a;經濟的下滑&#xff08;economic slowdown&#xff09;導致失業率的上升 翻譯…

大模型和數據庫最新結合進展

寫在前面 本文主要內容是上次接受 infoQ 訪談&#xff0c;百度智能云朱潔老師介紹了大模型和 AI 結合相關話題&#xff0c;這次整體再刷新下&#xff0c;給到對這個領域感興趣的同學。 當前&#xff0c;百度智能云云數據庫特惠專場開始&#xff01;熱銷規格新用戶免費使用&am…

Android中ViewModel+LiveData+DataBinding的配合使用(kotlin)

Android 中 ViewModel、LiveData 和 Data Binding 的配合使用&#xff08;Kotlin&#xff09; 摘要 本文將介紹如何在 Android 開發中結合使用 ViewModel、LiveData 和 Data Binding 進行數據綁定和狀態更新。我們將詳細探討這三者之間的關系&#xff0c;并展示如何在 Kotlin…

最逼真的簡易交通燈設計

最逼真的簡易交通燈設計 需要資料的請在文章末尾獲取&#xff08;有問題可以私信我哦~~&#xff09; 01 資料內容 Proteus仿真文件程序源碼實物制作&#xff0c;代碼修改&#xff0c;功能定制&#xff08;需額外收費&#xff0c;價格實惠&#xff0c;歡迎咨詢&#xff09; …

實驗場:在幾分鐘內使用 Elasticsearch 進行 RAG 應用程序實驗

作者&#xff1a;來自 Elastic Joe McElroy, Serena Chou 什么是 Playground&#xff08;實驗場&#xff09;&#xff1f; 我們很高興發布我們的 Playground 體驗 —- 一個低代碼界面&#xff0c;開發人員可以在幾分鐘內使用自己的私人數據探索他們選擇的 LLM。 在對對話式搜…

41割隊伍

上海市計算機學會競賽平臺 | YACSYACS 是由上海市計算機學會于2019年發起的活動,旨在激發青少年對學習人工智能與算法設計的熱情與興趣,提升青少年科學素養,引導青少年投身創新發現和科研實踐活動。https://www.iai.sh.cn/problem/387 題目描述 給定 ??n 個數字 ??1,?…

一周小計(1):實習初體驗

實習的第一周&#xff0c;從最開始的配環境做好準備工作&#xff0c;到拉項目熟悉項目&#xff0c;然后自己去寫需求&#xff0c;每一步都有很大收獲&#xff0c;得到很多人幫助真的好感謝&#xff0c;以下是個人這幾天的記錄與感想。 &#xff08;這個其實是我寫的周報&#x…

Hi3861 OpenHarmony嵌入式應用入門--LiteOS Semaphore做同步使用

信號量作為同步使用 創建一個Semaphore對象&#xff0c;并指定一個初始的計數值&#xff08;通常稱為“許可”或“令牌”的數量&#xff09;。這個計數值表示當前可用的資源數量或可以同時訪問共享資源的線程數。當一個線程需要訪問共享資源時&#xff0c;它會嘗試從Semaphore…