2025智慧园区AI服务开发指南_第1页
2025智慧园区AI服务开发指南_第2页
2025智慧园区AI服务开发指南_第3页
2025智慧园区AI服务开发指南_第4页
2025智慧园区AI服务开发指南_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智慧园区AI服务开发指南 目录前言 1什么是园区智能服务 3什么是ModelEngine 5园区智能服务集成场景 6场景一:伙伴直接使用园区一体机中预置的大模型 7场景介绍 7访问DeepSeek示例 8场景二:伙伴基于自有Agent框架调用或编排园区智能服务提供的Agent 11场景介绍 11会议预定开发示例 13产业分析开发示例 14场景三:基于园区一体机AI全栈开发智能应用 16场景介绍 16基于ModelEngine开发智能应用案例 17制作插件 18编排应用 20结果验证 21API参考 23chat 23completeChat 27completeChatSync 319附录 36获取子系统id和密钥 36 1前言概述本文档描述了DeepSeek智慧园区产业及办公园区一体机方案中,eCampsCore产品中的园区智能服务(CampusMate)的能力以及如何开发使用。读者对象

本文档主要适用于智慧园区应用的开发人员。操作人员必须具备以下经验和技能:了解智慧园区的业务场景。具备一定的二次集成开发能力。具备大模型领域AIAgent开发基础知识。符号约定

在本文中可能出现下列标志,它们所代表的含义如下。符号说明表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。“须知”不涉及人身伤害。对正文中重点信息的补充说明。“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。修改记录文档版本发布日期修改说明012025-03-20第一次正式发布版本。 2什么是园区智能服务架构框架

园区智能服务(CampusMate)是eCampusCore针对园区场景推出的新服务,面向园区场景提供一系列智能化服务,将华为在200+园区项目中沉淀的行业知识与AI大模型深度融合,致力于将园区数字平台打造成为园区中懂业务、会思考、会进化的数字大脑,从而全面提升园区的智能运营、智能管理效率和智能体验。园区智能服务通过多个Agent问答、设备控制和服务调用Agent。它是eCampusCore的一部分,与联接服务、数据服务、统一运维紧密集成,从而形成一个全面的智能化管理平台。园区智能服务南向依赖于ModelEngine,包括模型使能、数据使能和应用使能,以支持其智能服务,硬件底座使用FusionCube1000H和Atlas800施。园区智能服务北向提供API,与PC端和移动APP互,以实现各种业务场景,如园区讲解、报告生成、自动巡检、应用切换等。功能介绍

意图识别Agent下文分析、多轮对话跟踪技术,精准识别用户意图类别,基于预设的智能服务矩阵,实现动态路由决策,统一意图入口与分发,构建有温度、懂业务的园区交互中枢。数据主题Agent专题库,封装安防/通行/办公/能效等1+8价值场景数据,实现自然语言查询(如:支持"本周B区会议室使用率如何"等复杂语义解析)。知识问答Agent识库内上传的文档、文件等内容作为上下文的智能回答,贴合企业特点,更懂用户心思。设备控制Agent实现安防/通行/楼宇自控等设备的自然语言指令引擎的解析(如:打开A栋3层照明系统"等模糊指令解析)和自动化执行。服务调用Agent:打通园区周边后台系统,实现自然语言对话转标准化工单(支持“创建C区6号会议室的大屏维修工单”的智能解析与工单创建),以及三方系统的自然语言交互实现。 3ModelEngineModelEngine提供从数据处理、知识生成,到模型微调和部署,以及RAG(RetrievalAugmentedGeneration)应用开发的AI数据到AI应用的落地周期。数据使能数据使能是用于文本、图像、文档等各类型数据处理的工具链,提供如数据清洗、数据评估、QA对生成、知识生成关键能力,为大模型微调、训练和RAG应用提供语料和知识。模型使能模型使能是面向模型微调和模型推理的工具链,降低模型训练和推理门槛。应用使能应用使能是为AI应用提供一站式开发、调试和部署的工具,帮助快速构建高准确率的AI应用。 4园区智能服务集成场景CampusMate提供多种集成方式,以满足用户开发诉求。图4-1CampusMate典型集成场景5场景一:伙伴直接使用园区一体机中预置的大模型建智能应用,通过接口调用一体机中大模型(deepseek)。6场景二:伙伴基于自有Agent框架调用或编排园区智能服务提供的Agent:基于自有全套框架构建智能应用,可选用部分园区方案提供的架构、组件和工具整合为融合架构进行业务编排。7场景三:基于园区一体机AI全栈开发智能应用:伙伴完全基于园区方案提供的ModelEngine和CampusMate能力完成知识库创建、模型部署及业务编排。5场景一:伙伴直接使用园区一体机中预置的 大模型伙伴应用可直接通过API访问预置大模型(deepseek),此方式不仅可以使用大模型的原生能力,还可以通过ModelEngine完成模型部署、上线和版本管理。场景介绍在伙伴开发的应用流中,使用ModelEngine提供的API与大模型进行交互。访问DeepSeek示例介绍接口调用方式,并提供基于Python脚本访问大模型和通过OpenAISDK访问大模型两种代码示例。场景介绍在伙伴开发的应用流中,使用ModelEngine提供的API与大模型进行交互。图5-1访问预置大模型交互流程DeepSeek示例介绍接口调用方式,并提供基于Python脚本访问大模型和通过OpenAISDK访问大模型两种代码示例。接口示例步骤1将智能应用工作流中的大模型访问方式,修改为ModelEngine大模型访问接口,接口参考8.1chat。接口路径:/open/router/v1/chat/completions调用方式:POSTHeader:Authorization:xxxContent-Type:application/json{"model":"deepseek-r1-distill-qwen-14b",{"model":"deepseek-r1-distill-qwen-14b","messages":[{"role":"user","role":"user","content":"xx公司价值观是什么"}],"stream":false}{"id":"endpoint_common_726","object":"pletion","created":1741610425,{"id":"endpoint_common_726","object":"pletion","created":1741610425,"model":"deepseek-r1-distill-qwen-14b","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n嗯,我现在要了解一下xx公司的价值观,xxxxx","tool_calls":null},"finish_reason":"stop"}],"usage":{"prompt_tokens":6,"completion_tokens":910,"total_tokens":916}}代码样例

----结束#!/usr/bin/envpython#-*-coding:utf-8-*-importrequestsimportjsonURL="https://xxx/open/router/v1/chat/completions"#!/usr/bin/envpython#-*-coding:utf-8-*-importrequestsimportjsonURL="https://xxx/open/router/v1/chat/completions"defrequests_chat_api(prompt:str=""):header={"Content-Type":"application/json","Authorization":"BearerME-sk-zj*****************00Re43wrYph5OWcyaNh",}query=promptdata={"model":"deepseek-r1-distill-qwen-14b","messages":[{"role":"user","content":query}],#stream字段标识是否供流式输出,建议默认为true"stream":True}data_json=json.dumps(data,indent=4)#通过requests方法调用ModelEngineDeepSeek大模型接口response=requests.post(url=URL,headers=header,data=data_json,verify=False)content=json.loads(response.content)returncontent.get("choices")[0].get("message").get("content")ifname=="main":query="""xxx的价值观是什么"""response=requests_chat_api(query)print(response)#!/usr/bin/envpython#-*-coding:utf-8-*-通过OpenAISDK方式调用ModelEngine大模型接口代码示例:#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2024/6/2719:55"""#@Time:2024/6/2719:55"""文件描述"""fromopenaiimportOpenAIimporthttpxCLIENT=OpenAI(base_url='https://x.x.x.x:30000/open/router/v1',api_key="xxxxxxxxxx",http_client=httpx.Client(verify=False))defrequests_chat_api(prompt:str=""):stream=CLIENT.pletions.create(model="deepseek-r1-distill-qwen-14b",messages=[{"role":"user","content":prompt}],temperature=0.6,stream=True)try:forchunkinstream:print(chunk.choices[0].delta.contentor'',end='')exceptExceptionase:print(e)print("result:""")ifname=="main":requests_chat_api("你好")6Agent框架调用或编 Agent使用自有编排工具,基于CampusMate和ModelEngine能力,实现业务编排。场景介绍主要包括直接使用CampusMate的Agent和基于CampusMate的意图识别和分发能力开发Agent两种场景。会议预定开发示例通过CampusMate提供的服务Agent实现预定会议。产业分析开发示例用户可以与CampusMate进行对话式知识问答,根据用户输入的意图流转到对应伙伴Agent进行专业知识问题场景介绍主要包括直接使用CampusMate的Agent和基于CampusMate的意图识别和分发能力开发Agent两种场景。直接使用CampusMate的Agent能力通过API,直接使用CampusMate和ModelEngine提供的能力,完成业务编排。开发示例请参考6.2会议预定开发示例。基于CampusMate做意图识别和业务分发使用自有的编排工具,开发新的Agent,并通过CampusMate实现多Agent分流。开发示例请参考6.3产业分析开发示例。会议预定开发示例通过CampusMate提供的服务Agent实现预定会议。前提条件

智能应用工作流中已经预置了会议交互节点,且应用已经完成部署。操作步骤步骤1修改工作流中的会议预定节点调用逻辑,使其调用CampusMate:接口路径:/mate-service/v1/chat/completions/sync调用方式:POSTHeader:参数名称参数类型是否必选描述X-HW-IDString是子系统接入授权的应用ID。X-HW-APPKEYString是子系统接入授权的应用的密钥。{"chatId":"93de2c111584646f5b20be764d012c927592af2cab4afdab",//{"chatId":"93de2c111584646f5b20be764d012c927592af2cab4afdab",//对话ID"userId":"defaultUserId",//用户ID"chatMode":"chat_bot","scenario":"skill","contents":[{"role":"user","contentType":"text","content":"请帮忙预定3月8日下午2点的会议室"//用户输入}]}{"resCode":"0","resMsg":"success","result":{"chatId":"93de2c111584646f5b20be764d012c927592af2cab4afdab","userId":"defaultUserId","chatMode":"chat_bot","scenario":"skill","contents":[{"role":"system","contentType":"skill","content":"{\"params\":\"\",\"command\":\"\",\"content\":\"会议室预定成功。\"}"}]}{"resCode":"0","resMsg":"success","result":{"chatId":"93de2c111584646f5b20be764d012c927592af2cab4afdab","userId":"defaultUserId","chatMode":"chat_bot","scenario":"skill","contents":[{"role":"system","contentType":"skill","content":"{\"params\":\"\",\"command\":\"\",\"content\":\"会议室预定成功。\"}"}]}}----结束产业分析开发示例用户可以与CampusMate进行对话式知识问答,根据用户输入的意图流转到对应伙伴Agent进行专业知识问题前提条件

智能应用业务流中已经预置了意图分流节点和子意图节点,且应用已经完成部署。操作步骤步骤1伙伴在ModelEngine的向量知识库中部署专属知识库。步骤2伙伴文档生成agent、产业分析agent相关知识进行意图识别训练,达到意图识别agent可以识别并路由到伙伴agent。步骤3在意图分流节点中调用CampusMate的completeChat,CampusMate将自动将用户意图转发至产业分析agent,并下发任务。接口路径:/mate-service/v1/chat/completions/sync调用方式:POST{"chatId":"93de2c111584646f5b20be764d012c927592af2cab57dsbd",//{"chatId":"93de2c111584646f5b20be764d012c927592af2cab57dsbd",//对话ID"userId":"defaultUserId",//用户ID"chatMode":"chat_bot","scenario":"skill","contents":[{"role":"user","contentType":"text","contentType":"text","content":"请分析下xx产业分析情况报告"//用户输入}]}{"resCode":"0",{"resCode":"0","resMsg":"success","result":{"chatId":"93de2c111584646f5b20be764d012c927592af2cab57dsbd","userId":"defaultUserId","chatMode":"chat_bot","scenario":"skill","contents":[{"role":"system","contentType":"skill","content":"{\"params\":\"\",\"command\":\"\",\"content\":\"xx产业分析情况:xxxxxxxxx\"}"}]}}----结束7AI全栈开发智能应 用场景介绍使用ModelEngine作为大模型和知识库构建工具,端到端完成智能应用工作流的开发和编排。基于ModelEngine开发智能应用案例基于ModelEngine开发一个智能应用,在工作流编排中调用CamputMate提供的知识问答Agent能力访问园区专属知识库开发案例介绍。场景介绍使用ModelEngine作为大模型和知识库构建工具,端到端完成智能应用工作流的开发和编排。图7-1开发编排工作流ModelEngine开发智能应用案例基于ModelEngine开发一个智能应用,在工作流编排中调用CamputMate提供的知识问答Agent能力访问园区专属知识库开发案例介绍。背景信息

开发案例主要由2个步骤组成:编排节点不能直接调用API,所以需要使用ModelEngine的自定义插件能力,制作一个调用CampusMateAPI的插件,完成对CampusMate知识问答Agent调用。应用编排:使用自定义插件编排工作流,实现知识问答的调用。前提条件

ModelEngine分别在向量知识库中安装了园区专属知识、推理大模型中部署DeepSeek大模型。制作插件ModelEngine支持Python插件与Java插件,以Ppython插件为例,介绍如何制作插件。背景信息图7-2插件开发流程前提条件已经联系华为技术支持工程师获取ModelEngine应用使能安装部署包。开发环境,已经安装pythonSDK框架依赖的三方包numpy、PyYAML、requests、tornado。操作步骤步骤1获取pythonSDK。解压ModelEngine应用使能安装部署包,在fit-sdk目录下可以获取python-sdk框架代码。fromtypingimportOptionalimportrequestsimportrandomfromfitframework.api.decoratorsimportfitable@fitable("genericable_id_multiplier","fitable_id_multiplier")步骤2fromtypingimportOptionalimportrequestsimportrandomfromfitframework.api.decoratorsimportfitable@fitable("genericable_id_multiplier","fitable_id_multiplier")defmultiplier(defmultiplier(question:str,host:str,port:int,x_hw_id:str,x_hw_appkey:str,chat_mode:str,scenario:str,content_type:str):"""参数化请求函数"""#API地址url=f"https://{host}:{port}/mate-service/v1/chat/completions/sync"#动态生成chatId(如果未传入)final_chat_id=random.randint(1,10000000)#请求头参数化headers={"X-HW-ID":x_hw_id,"X-HW-APPKEY":x_hw_appkey,"Content-Type":"application/json",}#请求体全参数化payload={"userId":"defaultUserId","chatId":final_chat_id,"contents":[{"role":"user","content":question,"contentType":content_type}],"chatMode":chat_mode,"scenario":scenario}response=requests.post(url,headers=headers,json=payload,verify=False)returnextract_content(response.json())defextract_content(response_data:dict)->Optional[str]:"""响应内容提取"""#双重校验:状态码+输出结构ifresponse_data.get("resCode")!="0"orresponse_data.get("resMsg")!="success":returnresponse_data.get("resMsg")#防御式层级访问result=response_data.get("result",{})contents=result.get("contents",[{}])returncontents[0].get("content")ifcontentselseNone步骤3在ModelEngine上部署自定义插件。将插件的源文件压缩包、元数据及完整性校验文件进行打包。登录ModelEngine。选择“应用使能>应用插件>上传”。上传插件压缩包。单击“部署”。部署成功后,可在应用市场查看该插件。----结束编排应用ModelEngine应用使能将已部署的插件编排到工作流中,完成对插件功能的调用。前提条件

已参考7.2.1制作插件章节,完成插件制作。操作步骤步骤1登录ModelEngine,选择“应用使能>应用开发”。步骤2选择“创建>创建空白应用”,编辑应用信息后单击“确定”。步骤3单击“工作流编排”。步骤4单击左侧“”,展开编排区。步骤5单击“插件”切换至插件列表,拖入Campus_plugin插件,为插件配置字段值。步骤6单击“调试”,提示运行成功。步骤7单击“发布”,发布编排后的应用。----结束结果验证完成应用编排后,测试知识问答结果。前提条件

已参考7.2.2编排应用章节,完成应用编排。操作步骤步骤1登录ModelEngine应用开发”。步骤2单击发布的应用,进入应用详情页面。步骤3单击“去编排”。步骤4在下方输入框中测试知识问答结果。图7-3验证知识问答----结束 8API参考8.1功能介绍

chatcompleteChatcompleteChatSync直接访问园区大模型一体机预置模型,实现文本/流式推理处理功能。调用方法

POSTURI

/v1/chat/completions表8-1请求header参数列表名称类型是否必选描述Content-TypeString是填写application/json。AuthorizationString是接口使用API密钥进行身份验证。访问您的APIKeys管理页面以创建您将在请求中使用的API密钥。所有API请求都应在HTTP标头中包含您的API密钥。请求body参数列表表8-2请求body参数列表名称类型是否必选描述ChatRequest表8-3是对话请求体。表8-3ChatRequest名称类型是否必选描述modelString是要使用的模型实例名称,通过/v1/models接口,获取当前可用模型实例列表。messagesArrayof表8-4是至今为止对话所包含的消息列表。messages必须是消息对象(messageobject)的数组,每个对象拥有一个role(“system”,“user”,或“assistant”)和content(消息的内容)。会话可以少至1条消息或者是有许多条。streamBoolean否指定返回结果是文本推理还是流式推理。bool类型参数,默认值false。表8-4messages名称类型是否必选描述roleString否消息对象的用户取值为“system”,“user”,或“assistant”,会话首先使用系统消息(“system”)格式化,然后交替使用用户消息(“user”)和助手消息(“assistant”)。系统消息(“system”)有助于设定助手的行为,用户消息(“user”)帮助指示助手,助手(“assistant”)消息用于存储之前的响应。当前不支持“tools”参数类型。contentString否推理请求文本。非空。Host:Content-Type:application/jsonHost:Content-Type:application/jsonAccept:application/jsonPOST/v1/chat/completionsHTTP/1.1{"model":"chatglm3-6b","messages":["object"],"stream":false}响应参数

名称类型是否必选描述idString否请求名称类型是否必选描述idString否请求id。objectString否返回结果类型。目前都返回"pletion"。createdInteger否推理请求时间戳,精确到秒。modelString否使用的推理模型。usage表8-6否推理结果统计数据。choicesArrayof表8-7否stream为false时返回推理结果列表。为true时返回流式推理结果。表8-6usage名称类型是否必选描述prompt_tokensInteger否用户输入的prompt文本对应的token长度。completion_tokensInteger否推理token数量。total_tokensInteger否请求+推理总token数。响应示例

表8-7choices名称类型是否必选描述message表8-8否推理消息。finish_reasonString否结束原因。请求被主动CANCEL或STOP,用户不感知,丢弃响应。请求执行中出错,响应输出为空,err_msg非空。请求输入校验异常,响应输出为空,err_msg非空。length:请求因达到最大序列长度而结束,响应为最后一轮迭代输出。请求因达到最大输出长度(包括请求和模型粒度)而结束,响应为最后一轮迭代输出。invalidflag:无效标记。indexInteger否choices消息index,当前只能为0。表8-8message名称类型是否必选描述roleString否角色,目前都返回“assistant”。contentString否推理文本结果。HTTP/1.1200OKHTTP/1.1200OKDate:Mon,13Jan202516:12:40GMTServer:Content-Type:application/json{"id":"chatcmpl-7KeDpu9A1NA8cvGROprevZBXrFf90","object":"pletion","created":1685155529,"model":"gpt-3.5-turbo-0301","usage":"object",{"id":"chatcmpl-7KeDpu9A1NA8cvGROprevZBXrFf90","object":"pletion","created":1685155529,"model":"gpt-3.5-turbo-0301","usage":"object","choices":["object"]]}completeChat功能介绍URI

基于预置Agent和自定义Agent的对话接口,对话结果输出方式为流式,可以通过此接口,实现知识问答、园区数据查询、安防报告生成、告警监控等功能。POST/mate-service/v1/chat/completions请求参数表8-9请求Header参数参数名称参数类型是否必选描述parkCodeString否区,当涉及查询园区相关数据时,使用该值进行查询。表8-10请求Body参数参数名称参数类型是否必选描述chatIdString是对话IDuserIdString是用户IDchatModeString是对话模式,包括chat_bot和agent两种。枚举值:chat_botagent参数名称参数类型是否必选描述scenarioString是对话场景,包括common,data,knowledge,ext_instruction,agent,report。对话场景与对话模式强校验的对应关系:common、data、knowledge、ext_instruction只在对话模式为chat_bot时使用,agent,report只在对话模式为agent时使用。当指定为common时,后台会自动识别意图并执行对应流程。枚举值:skillknowledgeagentreportcontentsArrayofChatContentobjects是内容列表表8-11ChatContent参数说明参数名称参数类型是否必选描述roleString是对话角色,包括user,systemcontentTypeString是内容类型,包括text,image,options,option,report,tablecontentString是内容refsArrayofRefKnowledgeobjects否引用,非必填表8-12RefKnowledge参数说明参数名称参数类型是否必选描述knowledge_idString是知识IDchunk_idString否文本块IDcontentString否知识文本answerString否QA对中的答案参数名称参数类型是否必选描述questionString否QA对中的问题question_noString否QA对编号scoreString是召回得分knowledge_labelString是知识标签knowledge_typeString是知识类型metadatametadataobject是知识来源referencereferenceobject是知识附件表8-13metadata参数说明参数名称参数类型是否必选描述sourceString否来源titleString否标题表8-14reference参数说明参数名称参数类型是否必选描述sourceString否来源titleString否标题请求示例无响应参数表8-15响应Body参数参数名称参数类型是否必选描述[数组元素]ArrayofChatContentobjects否对话内容列表表8-16ChatContent参数说明参数名称参数类型是否必选描述roleString是对话角色,包括user,systemcontentTypeString是内容类型,包括text,image,options,option,report,tablecontentString是内容refsArrayofRefKnowledgeobjects否引用,非必填表8-17RefKnowledge参数说明参数名称参数类型是否必选描述knowledge_idString是知识IDchunk_idString否文本块IDcontentString否知识文本answerString否QA对中的答案questionString否QA对中的问题question_noString否QA对编号scoreString是召回得分knowledge_labelString是知识标签knowledge_typeString是知识类型metadatametadataobject是知识来源referencereferenceobject是知识附件表8-18metadata参数说明参数名称参数类型是否必选描述sourceString否来源titleString否标题表8-19reference参数说明参数名称参数类型是否必选描述sourceString否来源titleString否标题响应示例无completeChatSyncAPI

completeChatSync功能介绍

基于预置Agent和自定义Agent的对话接口,对话结果输出方式为非流式,一次性全量返回,可以通过此接口,实现知识问答、园区数据查询、安防报告生成、告警监控等功能。URI

POST/mate-service/v1/chat/completions/sync请求参数表8-20请求Header参数参数名称参数类型是否必选描述parkCodeString否区,当涉及查询园区相关数据时,使用该值进行查询表8-21请求Body参数参数名称参数类型是否必选描述chatIdString是对话IDuserIdString是用户ID参数名称参数类型是否必选描述chatModeString是对话模式,包括chat_bot和agent枚举值:chat_botagentscenarioString是对话场景,包括common,data,knowledge,ext_instruction,agent,report。对话场景与对话模式强校验的对应关系:common、data、knowledge、ext_instruction只在对话模式为chat_bot时使用,ag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论