> **来源:[研报客](https://pc.yanbaoke.cn)** # 智慧园区AI服务开发指南总结 ## 核心内容 本文档介绍了华为智慧园区AI服务 **CampusMate** 的开发和集成方式,以及 **ModelEngine** 的功能与使用方法。CampusMate 是 eCampusCore 的一部分,专注于园区场景的智能化服务,如意图识别、数据查询、知识问答、设备控制和服务调用等。ModelEngine 提供了从数据处理、知识生成到模型部署的全流程工具链,支持开发者快速构建 AI 应用。 --- ## 主要观点 - **CampusMate** 是一个面向园区场景的智能服务系统,旨在打造园区的数字大脑,提升智能运营、管理效率和用户体验。 - **ModelEngine** 提供了完整的 AI 训推工具链,支持数据使能、模型使能和应用使能,帮助缩短从数据到 AI 应用的开发周期。 - 文档提供了三种集成场景,分别适用于不同的开发需求和能力水平: - 直接调用园区一体机中预置的大模型(如 DeepSeek)。 - 基于自有 Agent 框架调用或编排 CampusMate 提供的 Agent。 - 完全基于园区一体机 AI 全栈开发智能应用。 --- ## 关键信息 ### 1. **园区智能服务(CampusMate)** - **功能**: - 意图识别 Agent:解析用户意图并进行智能路由。 - 数据主题 Agent:提供自然语言查询园区数据的能力。 - 知识问答 Agent:结合企业私域知识库进行智能问答。 - 设备控制 Agent:支持自然语言指令控制园区设备。 - 服务调用 Agent:实现自然语言对话转工单及三方系统交互。 - **架构**: - 南向依赖 **ModelEngine**,包括模型使能、数据使能和应用使能。 - 北向提供 API 接口,支持与 PC 端、移动 APP 等智慧应用交互。 - **集成方式**: - **场景一**:通过 API 直接访问一体机中预置的大模型(如 DeepSeek)。 - **场景二**:基于自有 Agent 框架调用或编排 CampusMate 的 Agent。 - **场景三**:基于园区一体机 AI 全栈开发智能应用,使用 ModelEngine 和 CampusMate 能力完成知识库创建、模型部署及业务编排。 --- ### 2. **ModelEngine** - **功能**: - 提供从数据处理、知识生成、模型微调、部署到 RAG 应用开发的全流程工具链。 - 支持数据使能、模型使能和应用使能,帮助开发者快速构建高准确率的 AI 应用。 - **三大能力**: - **数据使能**:支持文本、图像、文档等数据处理,为大模型训练提供语料和知识。 - **模型使能**:提供模型微调和推理工具,降低模型开发门槛。 - **应用使能**:提供一站式开发、调试和部署能力,便于构建智能应用。 --- ### 3. **API 接口** - **chat**: - 实现文本/流式推理处理。 - 接口路径:`/open/rsder/v1-chat/completions`。 - 支持 `POST` 方法,请求头包括 `Content-Type` 和 `Authorization`。 - 请求体包含 `model`、`messages` 和 `stream` 参数。 - **completeChat**: - 支持流式输出,适用于知识问答、园区数据查询、安防报告生成、告警监控等功能。 - 接口路径:`/mate-service/v1/chat/completions`。 - 请求参数包括 `chatId`、`userId`、`chatMode`、`scenario` 和 `contents`。 - **completeChatSync**: - 支持非流式输出,一次性返回全量结果。 - 接口路径:`/mate-service/v1/chat/completions/sync`。 - 请求参数与 completeChat 类似,但使用 `chatMode` 为 `chatbots` 或 `agent`。 --- ### 4. **集成示例** #### **场景一:访问 DeepSeek 示例** - 接口路径:`/open/rsder/v1-chat/completions`。 - 示例请求: ```json { "model": "deepseek-r1-distill-qwen-14b", "messages": [ { "role": "user", "content": "xx公司价值观是什么" } ], "stream": false } ``` - 示例响应: ```json { "id": "endpoint_common_726", "object": "chat Completion", "created": 1741610425, "model": "deepseek-r1-distill-qwen-14b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "嗯,我现在要了解一下xx公司的价值观,xxxx" }, "finish_reason": "stop" } ] } ``` #### **场景二:会议预定开发示例** - 前提条件:应用已部署,预置了会议交互节点。 - 接口路径:`/mate-service/v1/chat/completions/sync`。 - 示例请求: ```json { "chatId": "93de2c111584646f5b20be764d012c927592af2cab4afdab", "UserID": "defaultUserID", "chatMode": "chat.Bot", "scenario": "skill", "contents": [ { "role": "user", "contentType": "text", "content": "请帮忙预定3月8日下午2点的会议室" } ] } ``` - 示例响应: ```json { "resCode": "0", "resMsg": "success", "result": { "chatId": "93de2c111584646f5b20be764d012c927592af2cab4afdab", "UserID": "defaultUserID", "chatMode": "chat.Bot", "scenario": "skill", "contents": [ { "role": "system", "contentType": "skill", "content": "会议室预定成功。" } ] } } ``` #### **场景三:基于 ModelEngine 开发智能应用** - **步骤**: 1. 制作自定义插件,用于调用 CampusMate API。 2. 在 ModelEngine 上部署插件。 3. 编排工作流,调用插件功能。 4. 测试应用,验证知识问答结果。 - **插件开发示例**: ```python from typing import Any, Optional import requests import random from fitframework apidecorators import fitable @fitable("generic_id-multiplier", "fitable_id-multiplier") def multiplier(question: str, host: str, port: int, x_hw_id: str, x_hw_appkey: str, chat_mode: str, scenario: str, content_type: str): url = f"https://{host}:{port}/mate-service/v1/chat/completions/sync" headers = { "X-HW-ID": x_hw_id, "X-HW-APPKEY": x_hw_appkey, "Content-Type": "application/json" } payload = { "UserID": "defaultUserId", "chatId": random.randint(1, 10000000), "contents": [ { "role": "user", "contentType": content_type, "content": question } ], "chatMode": chat_mode, "scenario": scenario } response = requests.post(url, headers=headers, json=payload, verify=False) return extract_content(response.json()) def extract_content(response_data: dict) -> Optional[str]: if response_data.get("resCode") != "0" or response_data.get("resMsg") != "success": return response_data.get("resMsg") result = response_data.get("result", {}) contents = result.get("contents", []) return contents[0].get("content") if contents else None ``` --- ### 5. **子系统 ID 和密钥获取** - **操作步骤**: 1. 登录平台 Portal。 2. 选择“平台服务 $>$ 联接 $>$ 子系统接入”。 3. 进入“子系统管理 $>$ 子系统”页面。 4. 找到对应子系统,获取子系统 ID。 5. 单击“密钥”并下载请求密钥的 txt 文件。 --- ### 6. **注意事项** - 文档内容可能随产品版本更新而变化,建议定期查阅最新版本。 - 文档内容仅作为使用指导,不构成任何明示或暗示的担保。 - 漏洞处理流程请参见:https://www.huawei.com/cn/psirt/vul-response-process - 企业客户可访问:https://securitybulletin.huawei.com/enterprise/cn/security-advisory 获取漏洞信息。