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