DeepSeek引領(lǐng)潮流:低成本為團(tuán)隊(duì)打造定制化AI平臺(tái)(上篇)
近期,隨著大模型的快速發(fā)展,DeepSeek等大模型成為了AI領(lǐng)域的熱門(mén)話(huà)題。如今,團(tuán)隊(duì)可以通過(guò)本地部署一套AI框架,結(jié)合遠(yuǎn)程調(diào)用大模型的官方API,而無(wú)需配備大量服務(wù)器或高性能顯卡,便可輕松實(shí)現(xiàn)大模型的使用。這種方式不僅降低了硬件成本,也讓AI技術(shù)的應(yīng)用變得更加靈活和高效。
在人工智能(AI)領(lǐng)域,其實(shí)不僅僅有大模型,還有框架和算法等核心概念,它們之間有著密切的關(guān)系。理解它們的區(qū)別和聯(lián)系對(duì)于深入學(xué)習(xí)和應(yīng)用AI技術(shù)至關(guān)重要。以下是對(duì)它們的詳細(xì)解釋和相互關(guān)系:
AI模型(Model)
AI模型是經(jīng)過(guò)訓(xùn)練,能夠處理和學(xué)習(xí)數(shù)據(jù)的數(shù)學(xué)結(jié)構(gòu)。模型的核心作用是根據(jù)輸入數(shù)據(jù)進(jìn)行預(yù)測(cè)、分類(lèi)、生成等任務(wù)。AI模型通常是通過(guò)機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法構(gòu)建的,經(jīng)過(guò)大量的訓(xùn)練數(shù)據(jù)來(lái)調(diào)整其內(nèi)部參數(shù)。
AI框架(Framework)
AI框架是一組用于開(kāi)發(fā)和訓(xùn)練AI模型的工具和庫(kù),它提供了處理和構(gòu)建AI模型的基礎(chǔ)設(shè)施。框架包含了各種工具、API和預(yù)構(gòu)建的模塊,可以幫助開(kāi)發(fā)者更高效地構(gòu)建、訓(xùn)練和部署AI模型。AI框架通常是開(kāi)源的,它們封裝了許多復(fù)雜的實(shí)現(xiàn)細(xì)節(jié),使得AI開(kāi)發(fā)者能夠?qū)W⒂谒惴ㄔO(shè)計(jì)和業(yè)務(wù)邏輯。
AI算法(Algorithm)
AI算法是指執(zhí)行特定任務(wù)的數(shù)學(xué)方法和規(guī)則。它們是創(chuàng)建AI模型的基礎(chǔ),定義了模型如何從數(shù)據(jù)中學(xué)習(xí)、更新其參數(shù)和做出預(yù)測(cè)。不同的算法適用于不同類(lèi)型的任務(wù)和數(shù)據(jù)。AI算法的目的是通過(guò)分析和優(yōu)化輸入數(shù)據(jù),使得模型能夠根據(jù)這些數(shù)據(jù)作出合理的判斷。
AI框架推薦
框架作為實(shí)現(xiàn)算法和模型的工具,本期主要對(duì)定制化AI系統(tǒng)框架和工作原理進(jìn)行介紹,首先推薦幾款開(kāi)源的框架:
FastGPT
使用簡(jiǎn)單,無(wú)需代碼開(kāi)發(fā),開(kāi)箱即用,但是功能有限擴(kuò)展性不高。比較適合簡(jiǎn)單使用和低代碼開(kāi)發(fā)的場(chǎng)景.
MetaGPT
Metagpt是一款Multi-Agent框架(多智能體),專(zhuān)為應(yīng)用開(kāi)發(fā)者打造。使大模型以軟件公司的形式工作,協(xié)作處理更復(fù)雜的任務(wù)。
- MetaGPT輸入一句話(huà)的老板需求,輸出用戶(hù)故事 / 競(jìng)品分析 / 需求 / 數(shù)據(jù)結(jié)構(gòu) / APIs / 文件等。
- MetaGPT內(nèi)部包括產(chǎn)品經(jīng)理 / 架構(gòu)師 / 項(xiàng)目經(jīng)理 / 工程師,它提供了一個(gè)軟件公司的全過(guò)程與精心調(diào)配的SOP。
同樣作為多智能體編程框架,AgentScope對(duì)于React框架更加友好,是阿里通義千問(wèn)團(tuán)隊(duì)開(kāi)源的AI框架,適配多種大模型,Dashscope,OpenAI等。也是新鈦團(tuán)隊(duì)最終選擇使用的框架。
Agenscope
同樣作為多智能體編程框架,AgentScope對(duì)于React框架更加友好,是阿里通義千問(wèn)團(tuán)隊(duì)開(kāi)源的AI框架,適配多種大模型,Dashscope,OpenAI等。也是新鈦團(tuán)隊(duì)最終選擇使用的框架。
為什么需要引入智能運(yùn)維?
傳統(tǒng)運(yùn)維工作通常面臨高度重復(fù)、低效和響應(yīng)慢的問(wèn)題,尤其是在高頻告警和夜間告警情況下。運(yùn)維人員需要逐一分析和定位故障,且故障恢復(fù)時(shí)間往往較長(zhǎng),容易受到人為疲勞和處理能力的限制。
此外,日常巡檢、工單處理,問(wèn)題處理等任務(wù)消耗大量時(shí)間和人力,運(yùn)維人員不得不手動(dòng)完成這些繁瑣的操作,導(dǎo)致效率低下。
智能運(yùn)維的優(yōu)勢(shì)
引入智能運(yùn)維平臺(tái),通過(guò)自動(dòng)化和智能化手段解決這些問(wèn)題,使運(yùn)維工作更加高效、準(zhǔn)確。
1.快速響應(yīng)與自動(dòng)化處理
對(duì)于告警,響應(yīng)時(shí)間可以縮短至 2-5分鐘,系統(tǒng)自動(dòng)識(shí)別問(wèn)題并執(zhí)行處理,避免人工延遲。
2.自動(dòng)故障診斷與處理
對(duì)于系統(tǒng)故障,智能平臺(tái)能夠自動(dòng)診斷并提供解決方案,減少人工干預(yù),幫助運(yùn)維人員快速定位和修復(fù)問(wèn)題。
3.降低服務(wù)不可用時(shí)間
通過(guò)自動(dòng)診斷和故障修復(fù),顯著減少服務(wù)停機(jī)時(shí)間,確保業(yè)務(wù)持續(xù)穩(wěn)定運(yùn)行。
4.減輕運(yùn)維人員負(fù)擔(dān)
智能運(yùn)維平臺(tái)承擔(dān)日常巡檢、告警處理,報(bào)表生成等重復(fù)性任務(wù),讓運(yùn)維人員專(zhuān)注于更高優(yōu)先級(jí)的工作,同時(shí)實(shí)時(shí)監(jiān)控和報(bào)表生成幫助團(tuán)隊(duì)優(yōu)化決策。
5.提升系統(tǒng)智能與自學(xué)習(xí)能力
平臺(tái)通過(guò)自我學(xué)習(xí),不斷優(yōu)化故障診斷和自動(dòng)修復(fù)流程,提高處理新問(wèn)題的能力和精準(zhǔn)度。
6.風(fēng)險(xiǎn)預(yù)測(cè)
系統(tǒng)通過(guò)數(shù)據(jù)分析預(yù)測(cè)潛在風(fēng)險(xiǎn),幫助團(tuán)隊(duì)制定前瞻性決策,從而提升整體運(yùn)營(yíng)效率。
通過(guò)智能運(yùn)維平臺(tái),企業(yè)可以大幅提升運(yùn)維效率、減少人為錯(cuò)誤,并確保系統(tǒng)的穩(wěn)定性與業(yè)務(wù)連續(xù)性,讓運(yùn)維團(tuán)隊(duì)能夠更高效地應(yīng)對(duì)挑戰(zhàn),支持業(yè)務(wù)的可持續(xù)發(fā)展。
功能介紹
如上圖所示,智能運(yùn)維系統(tǒng)通過(guò)多個(gè)功能專(zhuān)一的 Agent 組合而成,例如 日志Agent、數(shù)據(jù)庫(kù)Agent、云監(jiān)控Agent 等。每個(gè)Agent負(fù)責(zé)處理特定領(lǐng)域的任務(wù),并能夠獨(dú)立運(yùn)行或協(xié)作完成更復(fù)雜的運(yùn)維任務(wù)。通過(guò)這種 模塊化 的設(shè)計(jì),系統(tǒng)能夠根據(jù)實(shí)際需求靈活組合不同的Agent,提供高效、精確的解決方案。
功能展示
1.故障處理
接口錯(cuò)誤處理
當(dāng)接口發(fā)生錯(cuò)誤時(shí),系統(tǒng)能夠自動(dòng)根據(jù)告警中的信息,獲取該接口當(dāng)時(shí)的調(diào)用鏈ID,具體的調(diào)用鏈詳情和相關(guān)日志信息,進(jìn)行詳細(xì)分析并給出初步的診斷結(jié)果,同時(shí)生成故障報(bào)告。智能運(yùn)維平臺(tái)能夠減少人工干預(yù),并迅速提供解決方案,幫助運(yùn)維人員迅速定位問(wèn)題并修復(fù)。
工作邏輯展示
告警轉(zhuǎn)接到ReactAgent。
模型理解問(wèn)題,并從知識(shí)庫(kù)中尋找排查步驟作為參考。
根據(jù)整理好的排查步驟分步進(jìn)行信息收集。
獲取導(dǎo)致接口故障的調(diào)用鏈ID。
獲取調(diào)用鏈詳情。
自動(dòng)生成查詢(xún)語(yǔ)句獲取日志。
整合信息進(jìn)行分析并生成報(bào)告。
報(bào)告展示:
OOM應(yīng)急處理
針對(duì)OOM(Out of Memory)告警,系統(tǒng)可以自動(dòng)響應(yīng),進(jìn)行日志收集、內(nèi)存使用情況分析、服務(wù)JVM配置分析,判斷FullGC情況進(jìn)行分析。根據(jù)收集的信息得出合適的處理規(guī)則,擴(kuò)容副本,JVM配置調(diào)整,服務(wù)重啟等操作,并發(fā)送釘釘通知。
極大的縮減了因服務(wù)宕機(jī)導(dǎo)致的各種功能不可用,網(wǎng)頁(yè)打不開(kāi)等風(fēng)險(xiǎn)。
2.日程巡檢
系統(tǒng)支持定時(shí)執(zhí)行全面的巡檢任務(wù),并生成詳細(xì)的報(bào)告,確保各項(xiàng)運(yùn)維工作及時(shí)跟進(jìn)。
3.信息查詢(xún)
異常IP查詢(xún)
針對(duì)流量激增或異常訪(fǎng)問(wèn),平臺(tái)能夠快速提供流量突增的服務(wù)和接口信息,精準(zhǔn)剖析出來(lái)源IP及其訪(fǎng)問(wèn)的具體內(nèi)容,幫助運(yùn)維人員高效定位問(wèn)題。
CPU,內(nèi)存等使用率查詢(xún)
支持對(duì)服務(wù)器、容器、中間件等資源的CPU、內(nèi)存、磁盤(pán)等使用詳情進(jìn)行實(shí)時(shí)查詢(xún),幫助運(yùn)維人員全面掌握系統(tǒng)資源的使用情況,及時(shí)發(fā)現(xiàn)潛在問(wèn)題。
前端展示
AgentScope 自帶的前端頁(yè)面,詳細(xì)記錄了框架和模型交互的過(guò)程,以及最終結(jié)果展示。
但是這樣的頁(yè)面并不適合作為直接面向用戶(hù)的交互界面。為了提供更友好的用戶(hù)體驗(yàn),我們使用 Gradio 創(chuàng)建了定制化的前端頁(yè)面。
系統(tǒng)架構(gòu)和工作原理
系統(tǒng)入口
系統(tǒng)通過(guò)三個(gè)主要入口進(jìn)行操作:釘釘機(jī)器人交互、Web頁(yè)面和告警接口。這三個(gè)入口分別接收用戶(hù)的需求、問(wèn)題或告警信息。通過(guò) UserAgent 智能體將這些信息轉(zhuǎn)化為簡(jiǎn)潔的“老板需求”,以便于進(jìn)一步處理。所有的信息最終都匯總為一個(gè)統(tǒng)一的請(qǐng)求,并被傳遞到 AgentScope 環(huán)境中。
知識(shí)庫(kù)
在 AgentScope 環(huán)境中,React智能體 根據(jù)請(qǐng)求調(diào)用 RAG(Retrieval-Augmented Generation) 知識(shí)庫(kù),檢索相關(guān)文檔和信息。這一過(guò)程結(jié)合了檢索和生成的優(yōu)勢(shì),可以快速、精準(zhǔn)地為復(fù)雜問(wèn)題提供解決方案。對(duì)于需要額外處理的任務(wù),系統(tǒng)會(huì)調(diào)用已有的工具包,以便在多步驟的操作中自動(dòng)化處理復(fù)雜問(wèn)題。
持續(xù)學(xué)習(xí)
經(jīng)過(guò)詳細(xì)分析和處理后,系統(tǒng)生成最終的響應(yīng),并通過(guò)三個(gè)入口中的任一方式返回給用戶(hù)。為了不斷提升系統(tǒng)的智能性,響應(yīng)結(jié)果 會(huì)被記錄和存儲(chǔ),且 知識(shí)庫(kù) 會(huì)隨著每次反饋進(jìn)行更新和完善,從而實(shí)現(xiàn)系統(tǒng)的自我學(xué)習(xí)和進(jìn)步。
這種設(shè)計(jì)方式不僅能夠?qū)崟r(shí)處理告警和問(wèn)題,還通過(guò)智能體和工具包的有效配合,持續(xù)優(yōu)化和提高決策和響應(yīng)效率,使得每次交互都能帶來(lái)更高效、準(zhǔn)確的服務(wù)。
代碼展示
以 接口問(wèn)題處理 為例,我們?cè)谥R(shí)庫(kù)中定義了該類(lèi)問(wèn)題的標(biāo)準(zhǔn)排查流程。大模型會(huì)根據(jù)這些定義好的排查思路,自動(dòng)生成具體的執(zhí)行步驟,并根據(jù)實(shí)時(shí)獲取的信息進(jìn)行匯總分析。最終,系統(tǒng)會(huì)結(jié)合這些數(shù)據(jù)生成解決方案,幫助快速定位并解決問(wèn)題。
對(duì)接大模型
YOUR_MODEL_CONFIGURATION_NAME = "qwen_config"
YOUR_MODEL_CONFIGURATION = {
"model_type": "dashscope_chat",
"config_name": "qwen_config",
"model_name": "qwen-max-latest",
"api_key": "xxxxx",
"verbose": False,
"max_tokens": 100000000,
"enable_search": True
# ...
}
agentscope.init(
model_cnotallow=YOUR_MODEL_CONFIGURATION,
project="Conversation with ReActAgent",
save_api_invoke=True,
)
user = UserAgent(name="User")
react_agent = ReActAgent(
name="運(yùn)維AI",
model_config_name=YOUR_MODEL_CONFIGURATION_NAME,
verbose=True,
service_toolkit=service_toolkit,
sys_prompt="你是一個(gè)非常專(zhuān)業(yè)的運(yùn)維工程師,專(zhuān)業(yè)友好地與用戶(hù)溝通交流。"
)
知識(shí)庫(kù)
定義復(fù)雜問(wèn)題處理思路,大模型會(huì)理解并生成對(duì)應(yīng)處理步驟。
[
{
"metadata": {
"alertId": "5xx_error",
"alertType": "服務(wù)接口故障",
"tags": {
"metricName": "Ingress響應(yīng)碼-5xx告警",
"metricProject": "acs_ingress"
},
"solutionSteps": [
{
"step": 1,
"description": "根據(jù)告警url獲取失敗的traceID",
},
{
"step": 2,
"description": "查詢(xún)上述獲取的traceID的完整調(diào)用鏈信息"
},
{
"step": 3,
"description": "通過(guò)知識(shí)庫(kù)獲得基于traceID查詢(xún)錯(cuò)誤日志的SLS查詢(xún)語(yǔ)句及其所需參數(shù)",
},
{
"step": 4,
"description": "獲取該traceID的錯(cuò)誤日志",
},
{
"step": 5,
"description": "最近統(tǒng)一進(jìn)行分析,然后生成故障報(bào)告",
}
]
},
"text": "用于在服務(wù)接口響應(yīng) 5xx 錯(cuò)誤時(shí)進(jìn)行排查。它包含了詳細(xì)的步驟,可以有效識(shí)別和解決接口問(wèn)題。"
}
]
工具篇舉例
查詢(xún)阿里云sls日志工具。
def get_sls_logs(target: str) -> ServiceResponse:
"""
查詢(xún)存儲(chǔ)在阿里云SLS中的日志。
Args:
target (str): 自然語(yǔ)言描述的查詢(xún)需求,例如:
- "查詢(xún)prodapp-java這個(gè)logstore的日志,時(shí)間在2025-01-06 15:13:37"
"""
rag_file = "aliyun_sls_log-get_sls_logs.json"
# 提供給大模型的信息
params_description = {
"project": "str類(lèi)型,project名稱(chēng),必選",
"logstore": "str類(lèi)型,logstore名稱(chēng),必選",
"fromTime": "int/str類(lèi)型,開(kāi)始時(shí)間,可以是時(shí)間戳或'%Y-%m-%d %H:%M:%S'格式的字符串,可選,默認(rèn)None",
"toTime": "int/str類(lèi)型,結(jié)束時(shí)間,可以是時(shí)間戳或'%Y-%m-%d %H:%M:%S'格式的字符串,可選,默認(rèn)None",
"topic": "str類(lèi)型,日志主題名稱(chēng),可選,默認(rèn)None",
"query": "str類(lèi)型,阿里云SLS查詢(xún)語(yǔ)句,可選,默認(rèn)None",
"line": "int類(lèi)型,返回日志的最大行數(shù),可選,默認(rèn)100",
"offset": "int類(lèi)型,返回日志的起始偏移行,可選,默認(rèn)0",
"reverse": "bool類(lèi)型,是否按時(shí)間倒序返回日志,可選,默認(rèn)False",
"power_sql": "bool類(lèi)型,是否使用增強(qiáng)SQL模式,可選,默認(rèn)False",
"scan": "bool類(lèi)型,是否使用掃描模式,可選,默認(rèn)False",
"forward": "bool類(lèi)型,僅用于掃描查詢(xún),true表示獲取下一頁(yè),false表示獲取上一頁(yè),可選,默認(rèn)True",
"accurate_query": "bool類(lèi)型,是否使用全局有序時(shí)間模式,可選,默認(rèn)True",
"from_time_nano_part": "int類(lèi)型,查詢(xún)開(kāi)始時(shí)間的納秒部分,可選,默認(rèn)0",
"to_time_nano_part": "int類(lèi)型,查詢(xún)結(jié)束時(shí)間的納秒部分,可選,默認(rèn)0"
}
# 從知識(shí)庫(kù)獲取參數(shù)
kb_response = knowledge_base(target=target, rag_file=rag_file, params_descriptinotallow=params_description)
if not kb_response:
return ServiceResponse(ServiceExecStatus.ERROR, "無(wú)法理解查詢(xún)意圖")
params = json.loads(params_match.group())
project = params.get('project')
logstore = params.get('logstore')
query = params.get('query')
# SLS相關(guān)信息
endpoint = 'cn-shanghai.log.aliyuncs.com'
# 獲取到SLS日志庫(kù)信息和SQL。具體執(zhí)行步驟省略
...
# 最終返回ServiceResponse
return ServiceResponse(status, output)
查詢(xún)prometheus指示數(shù)據(jù)
def get_prometheus_metrics(target: str) -> ServiceResponse:
"""
從prometheus查詢(xún)監(jiān)控?cái)?shù)據(jù)。
Args:
target (str): 自然語(yǔ)言描述的查詢(xún)需求
Returns:
ServiceResponse: 包含查詢(xún)結(jié)果或錯(cuò)誤信息的響應(yīng)對(duì)象
"""
rag_file = "prometheus.json"
params_description: Dict = {
"PromQL": "從知識(shí)庫(kù)獲取的Prometheus查詢(xún)語(yǔ)句,只能傳入一個(gè)。需要先移除SQL中的轉(zhuǎn)義符。",
"prometheus_cluster": "從知識(shí)庫(kù)獲取的Prometheus集群,只能傳入一個(gè)。"
}
# 從utils導(dǎo)入通用的知識(shí)庫(kù)參數(shù)獲取函數(shù)
from services.utils.rag_utils import get_rag_params
# 獲取知識(shí)庫(kù)參數(shù)
params = get_rag_params(target, rag_file, params_description)
# 如果params是ServiceResponse,則直接返回
if isinstance(params, ServiceResponse):
return params
promql = params.get('PromQL')
prometheus_cluster = params.get('prometheus_cluster')
if not promql or not prometheus_cluster:
return ServiceResponse(ServiceExecStatus.ERROR, "缺少必要的查詢(xún)參數(shù)")
# 獲取到PromQL和集群賬密后,獲取監(jiān)控?cái)?shù)據(jù)
...
return ServiceResponse(ServiceExecStatus.SUCCESS, str([result]))
總結(jié)
通過(guò)智能運(yùn)維平臺(tái)的構(gòu)建和應(yīng)用,我們能夠有效提升運(yùn)維團(tuán)隊(duì)的工作效率,減少人為干預(yù),快速響應(yīng)和解決各種問(wèn)題。從傳統(tǒng)的告警處理、故障診斷到資源使用監(jiān)控,智能運(yùn)維平臺(tái)的自動(dòng)化和智能化使得運(yùn)維管理更加高效、精準(zhǔn)。
利用如DeepSeek等大模型以及API遠(yuǎn)程調(diào)用的能力,不僅可以降低硬件需求,還能通過(guò)靈活的框架設(shè)計(jì)滿(mǎn)足不同運(yùn)維需求。通過(guò)不同的AI框架,如MetaGPT、AgentScope等,我們可以針對(duì)具體的運(yùn)維場(chǎng)景定制化開(kāi)發(fā)解決方案,實(shí)現(xiàn)高度自動(dòng)化和高效運(yùn)維。
總的來(lái)說(shuō),智能運(yùn)維平臺(tái)不僅提升了團(tuán)隊(duì)的效率,還能通過(guò)持續(xù)的自學(xué)習(xí)和知識(shí)庫(kù)的更新,保持系統(tǒng)的靈活性和適應(yīng)性,從而在未來(lái)的運(yùn)維工作中為企業(yè)帶來(lái)更加智能、快速、精確的服務(wù)。這不僅是運(yùn)維領(lǐng)域的一次技術(shù)創(chuàng)新,更是企業(yè)數(shù)字化轉(zhuǎn)型過(guò)程中的重要一步。