English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 5|回复: 0

DeepSeek引领潮流:低成本为团队打造定制化AI平台(上篇)

[复制链接]
查看: 5|回复: 0

DeepSeek引领潮流:低成本为团队打造定制化AI平台(上篇)

[复制链接]
查看: 5|回复: 0

229

主题

0

回帖

697

积分

高级会员

积分
697
PEWnVHu0GSjh

229

主题

0

回帖

697

积分

高级会员

积分
697
2025-2-26 14:44:47 | 显示全部楼层 |阅读模式

近期,随着大模型的快速发展,DeepSeek等大模型成为了AI领域的热门话题。如今,团队可以通过本地部署一套AI框架,结合远程调用大模型的官方API,而无需配备大量服务器或高性能显卡,便可轻松实现大模型的使用。这种方式不仅降低了硬件成本,也让AI技术的应用变得更加灵活和高效。
在人工智能(AI)领域,其实不仅仅有大模型,还有框架和算法等核心概念,它们之间有着密切的关系。理解它们的区别和联系对于深入学习和应用AI技术至关重要。以下是对它们的详细解释和相互关系:
AI模型(Model)

AI模型是经过训练,能够处理和学习数据的数学结构。模型的核心作用是根据输入数据进行预测、分类、生成等任务。AI模型通常是通过机器学习深度学习算法构建的,经过大量的训练数据来调整其内部参数。
AI框架(Framework)

AI框架是一组用于开发和训练AI模型的工具和库,它提供了处理和构建AI模型的基础设施。框架包含了各种工具、API和预构建的模块,可以帮助开发者更高效地构建、训练和部署AI模型。AI框架通常是开源的,它们封装了许多复杂的实现细节,使得AI开发者能够专注于算法设计和业务逻辑。
AI算法(Algorithm)

AI算法是指执行特定任务的数学方法和规则。它们是创建AI模型的基础,定义了模型如何从数据中学习、更新其参数和做出预测。不同的算法适用于不同类型的任务和数据。AI算法的目的是通过分析和优化输入数据,使得模型能够根据这些数据作出合理的判断。
AI框架推荐

框架作为实现算法和模型的工具,本期主要对定制化AI系统框架和工作原理进行介绍,首先推荐几款开源的框架:
FastGPT


使用简单,无需代码开发,开箱即用,但是功能有限扩展性不高。比较适合简单使用和低代码开发的场景.
MetaGPT


Metagpt是一款Multi-Agent框架(多智能体),专为应用开发者打造。使大模型以软件公司的形式工作,协作处理更复杂的任务。

  • MetaGPT输入一句话的老板需求,输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等。
  • MetaGPT内部包括产品经理 / 架构师 / 项目经理 / 工程师,它提供了一个软件公司的全过程与精心调配的SOP。
同样作为多智能体编程框架,AgentScope对于React框架更加友好,是阿里通义千问团队开源的AI框架,适配多种大模型,Dashscope,OpenAI等。也是新钛团队最终选择使用的框架。
Agenscope


同样作为多智能体编程框架,AgentScope对于React框架更加友好,是阿里通义千问团队开源的AI框架,适配多种大模型,Dashscope,OpenAI等。也是新钛团队最终选择使用的框架。
为什么需要引入智能运维?

传统运维工作通常面临高度重复、低效和响应慢的问题,尤其是在高频告警和夜间告警情况下。运维人员需要逐一分析和定位故障,且故障恢复时间往往较长,容易受到人为疲劳和处理能力的限制。
此外,日常巡检、工单处理,问题处理等任务消耗大量时间和人力,运维人员不得不手动完成这些繁琐的操作,导致效率低下。
智能运维的优势

引入智能运维平台,通过自动化和智能化手段解决这些问题,使运维工作更加高效、准确。
1.快速响应与自动化处理

对于告警,响应时间可以缩短至 2-5分钟,系统自动识别问题并执行处理,避免人工延迟。
2.自动故障诊断与处理

对于系统故障,智能平台能够自动诊断并提供解决方案,减少人工干预,帮助运维人员快速定位和修复问题。
3.降低服务不可用时间

通过自动诊断和故障修复,显著减少服务停机时间,确保业务持续稳定运行。
4.减轻运维人员负担

智能运维平台承担日常巡检、告警处理,报表生成等重复性任务,让运维人员专注于更高优先级的工作,同时实时监控和报表生成帮助团队优化决策。
5.提升系统智能与自学习能力

平台通过自我学习,不断优化故障诊断和自动修复流程,提高处理新问题的能力和精准度。
6.风险预测

系统通过数据分析预测潜在风险,帮助团队制定前瞻性决策,从而提升整体运营效率。
通过智能运维平台,企业可以大幅提升运维效率、减少人为错误,并确保系统的稳定性与业务连续性,让运维团队能够更高效地应对挑战,支持业务的可持续发展。
功能介绍


如上图所示,智能运维系统通过多个功能专一的 Agent 组合而成,例如 日志Agent、数据库Agent、云监控Agent 等。每个Agent负责处理特定领域的任务,并能够独立运行或协作完成更复杂的运维任务。通过这种 模块化 的设计,系统能够根据实际需求灵活组合不同的Agent,提供高效、精确的解决方案。
功能展示

1.故障处理

接口错误处理

当接口发生错误时,系统能够自动根据告警中的信息,获取该接口当时的调用链ID,具体的调用链详情和相关日志信息,进行详细分析并给出初步的诊断结果,同时生成故障报告。智能运维平台能够减少人工干预,并迅速提供解决方案,帮助运维人员迅速定位问题并修复。
工作逻辑展示

 告警转接到ReactAgent。

模型理解问题,并从知识库中寻找排查步骤作为参考。

根据整理好的排查步骤分步进行信息收集。
获取导致接口故障的调用链ID。

获取调用链详情。

自动生成查询语句获取日志。

整合信息进行分析并生成报告。

报告展示:

OOM应急处理

针对OOM(Out of Memory)告警,系统可以自动响应,进行日志收集、内存使用情况分析、服务JVM配置分析,判断FullGC情况进行分析。根据收集的信息得出合适的处理规则,扩容副本,JVM配置调整,服务重启等操作,并发送钉钉通知。
极大的缩减了因服务宕机导致的各种功能不可用,网页打不开等风险。

2.日程巡检

系统支持定时执行全面的巡检任务,并生成详细的报告,确保各项运维工作及时跟进。

3.信息查询

异常IP查询

针对流量激增或异常访问,平台能够快速提供流量突增的服务和接口信息,精准剖析出来源IP及其访问的具体内容,帮助运维人员高效定位问题。

CPU,内存等使用率查询

支持对服务器、容器、中间件等资源的CPU、内存、磁盘等使用详情进行实时查询,帮助运维人员全面掌握系统资源的使用情况,及时发现潜在问题。

前端展示

AgentScope 自带的前端页面,详细记录了框架和模型交互的过程,以及最终结果展示。

但是这样的页面并不适合作为直接面向用户的交互界面。为了提供更友好的用户体验,我们使用 Gradio 创建了定制化的前端页面。

系统架构和工作原理


系统入口

系统通过三个主要入口进行操作:钉钉机器人交互、Web页面和告警接口。这三个入口分别接收用户的需求、问题或告警信息。通过 UserAgent 智能体将这些信息转化为简洁的“老板需求”,以便于进一步处理。所有的信息最终都汇总为一个统一的请求,并被传递到 AgentScope 环境中。
知识库

在 AgentScope 环境中,React智能体 根据请求调用 RAG(Retrieval-Augmented Generation) 知识库,检索相关文档和信息。这一过程结合了检索和生成的优势,可以快速、精准地为复杂问题提供解决方案。对于需要额外处理的任务,系统会调用已有的工具包,以便在多步骤的操作中自动化处理复杂问题。
持续学习

经过详细分析和处理后,系统生成最终的响应,并通过三个入口中的任一方式返回给用户。为了不断提升系统的智能性,响应结果 会被记录和存储,且 知识库 会随着每次反馈进行更新和完善,从而实现系统的自我学习和进步。
这种设计方式不仅能够实时处理告警和问题,还通过智能体和工具包的有效配合,持续优化和提高决策和响应效率,使得每次交互都能带来更高效、准确的服务。
代码展示

以 接口问题处理 为例,我们在知识库中定义了该类问题的标准排查流程。大模型会根据这些定义好的排查思路,自动生成具体的执行步骤,并根据实时获取的信息进行汇总分析。最终,系统会结合这些数据生成解决方案,帮助快速定位并解决问题。
对接大模型

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="运维AI",    model_config_name=YOUR_MODEL_CONFIGURATION_NAME,    verbose=True,    service_toolkit=service_toolkit,    sys_prompt="你是一个非常专业的运维工程师,专业友好地与用户沟通交流。")

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.





知识库

定义复杂问题处理思路,大模型会理解并生成对应处理步骤。
[  {    "metadata": {      "alertId": "5xx_error",      "alertType": "服务接口故障",      "tags": {        "metricName": "Ingress响应码-5xx告警",        "metricProject": "acs_ingress"      },      "solutionSteps": [        {          "step": 1,          "description": "根据告警url获取失败的traceID",        },        {          "step": 2,          "description": "查询上述获取的traceID的完整调用链信息"        },        {          "step": 3,          "description": "通过知识库获得基于traceID查询错误日志的SLS查询语句及其所需参数",        },        {          "step": 4,          "description": "获取该traceID的错误日志",        },        {          "step": 5,          "description": "最近统一进行分析,然后生成故障报告",        }      ]    },    "text": "用于在服务接口响应 5xx 错误时进行排查。它包含了详细的步骤,可以有效识别和解决接口问题。"  }]

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.





工具篇举例

查询阿里云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'格式的字符串,可选,默认None",        "toTime": "int/str类型,结束时间,可以是时间戳或'%Y-%m-%d %H:%M:%S'格式的字符串,可选,默认None",        "topic": "str类型,日志主题名称,可选,默认None",        "query": "str类型,阿里云SLS查询语句,可选,默认None",        "line": "int类型,返回日志的最大行数,可选,默认100",        "offset": "int类型,返回日志的起始偏移行,可选,默认0",        "reverse": "bool类型,是否按时间倒序返回日志,可选,默认False",        "power_sql": "bool类型,是否使用增强SQL模式,可选,默认False",        "scan": "bool类型,是否使用扫描模式,可选,默认False",        "forward": "bool类型,仅用于扫描查询,true表示获取下一页,false表示获取上一页,可选,默认True",        "accurate_query": "bool类型,是否使用全局有序时间模式,可选,默认True",        "from_time_nano_part": "int类型,查询开始时间的纳秒部分,可选,默认0",        "to_time_nano_part": "int类型,查询结束时间的纳秒部分,可选,默认0"    }    # 从知识库获取参数    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相关信息    endpoint = 'cn-shanghai.log.aliyuncs.com'    # 获取到SLS日志库信息和SQL。具体执行步骤省略    ...    # 最终返回ServiceResponse    return ServiceResponse(status, output)

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.





查询prometheus指示数据

def get_prometheus_metrics(target: str) -> ServiceResponse:    """    从prometheus查询监控数据。        Args:        target (str): 自然语言描述的查询需求            Returns:        ServiceResponse: 包含查询结果或错误信息的响应对象    """    rag_file = "prometheus.json"        params_description: Dict = {        "PromQL": "从知识库获取的Prometheus查询语句,只能传入一个。需要先移除SQL中的转义符。",        "prometheus_cluster": "从知识库获取的Prometheus集群,只能传入一个。"    }        # 从utils导入通用的知识库参数获取函数    from services.utils.rag_utils import get_rag_params        # 获取知识库参数    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, "缺少必要的查询参数")    # 获取到PromQL和集群账密后,获取监控数据    ...    return ServiceResponse(ServiceExecStatus.SUCCESS, str([result]))

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.





总结

通过智能运维平台的构建和应用,我们能够有效提升运维团队的工作效率,减少人为干预,快速响应和解决各种问题。从传统的告警处理、故障诊断到资源使用监控,智能运维平台的自动化和智能化使得运维管理更加高效、精准。
利用如DeepSeek等大模型以及API远程调用的能力,不仅可以降低硬件需求,还能通过灵活的框架设计满足不同运维需求。通过不同的AI框架,如MetaGPT、AgentScope等,我们可以针对具体的运维场景定制化开发解决方案,实现高度自动化和高效运维。
总的来说,智能运维平台不仅提升了团队的效率,还能通过持续的自学习和知识库的更新,保持系统的灵活性和适应性,从而在未来的运维工作中为企业带来更加智能、快速、精确的服务。这不仅是运维领域的一次技术创新,更是企业数字化转型过程中的重要一步。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

229

主题

0

回帖

697

积分

高级会员

积分
697

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-3-11 03:48 , Processed in 6.289691 second(s), 29 queries .

Powered by 智能设备

©2025

|网站地图