-
diffusers库里针对diffusion中gpu显存优化的算子比如model_cpu_offload,在昇腾NPU上有无对应的迁移?
-
案例介绍本案例选择使用华为开发者空间-开发平台,通过开发平台提供AI Agent能力(Agent、大模型、MCP)实现智能搜索用户输入主题相关数据并进行可视化展示。案例内容1 概述1.1 案例介绍华为开发者空间全面升级,全新特性赋能AI智能应用开发,不仅支持一键开发AI Agent、部署MCP,也能接入外部大模型。本案例中我们会接入智谱AI官方提供的免费GLM-4.5-Flash,通过快速接入全网热点趋势一站式聚合服务Trends Hub和HotNews MCP Server;智谱联网搜索MCP、MCP Server Chart 快速实现。1.2 适用对象企业个人开发者高校学生1.3 案例时间本案例总时长预计30分钟。1.4 案例流程说明:1.外部大模型接入,如智谱、Kimi、DeepSeek等2.创建自定义 MCP,可以是 npx、uvx、sse 等3.创建智搜可视化Agent4.发布体验Agent1.5 资源总览本案例预计花费0元。2 模型接入(内置或接入外部模型)在平台中,模型接入的方法很很多中,这里我们可以使用平台预置的模型服务或者自主接入其他模型服务,以下操作二选一即可。2.1 使用预置模型访问 ModelArts Studio 西南-贵阳一: https://console.huaweicloud.com/modelarts/?locale=zh-cn®ion=cn-southwest-2#/model-studio/deployment 领取免费模型。2.2 接入外部模型前提条件:先注册外部模型服务,如智谱 https://bigmodel.cn/ ,默认会给到体验额度,我们主要获取三个关键参数:base_url 如 open.bigmodel.cn/api/paas/v4/chat/completionsapi_key 如 56a9**************************H6KBYmodel_name 如 GLM-4.5-Flash在开发者空间–开发平台beta–AIAgent–大模型–接入模型服务逐一点击进入模型配置页面,参考下图配置模型接着测试模型是否可用并发布,我们可以将页面拉到底在输入框发送文字测试模型,能够正常回复就发布模型。3 创建 MCP3.1 创建MCP在开发者空间–开发平台beta–AIAgent–🔥MCP–我的MCP–创建MCP服务逐一点击进入创建MCP服务选择空白模板,点击下一步:接着我们分别创建TrendsHub HotNewsMCP;WebSearchMCP、MCPServerChart3.2 TrendsHub- 服务名称: TrendsHub - 服务描述: https://github.com/baranwang/mcp-trends-hub 基于 Model Context Protocol (MCP) 协议的全网热点趋势一站式聚合服务 - 安装方式: NPX - 使用JSON格式编辑: { "mcpServers": { "trends-hub": { "command": "npx", "args": [ "-y", "mcp-trends-hub@1.6.2" ] } } } 3.3 HotNewsMCP- 服务名称: HotNewsMCP - 服务描述: https://github.com/wopal-cn/mcp-hotnews-server 一个提供实时热门话题的模型上下文协议(MCP)服务器,内容来自中国主要社交平台和新闻网站。 - 安装方式: NPX - 使用JSON格式编辑: { "mcpServers": { "mcp-server-hotnews": { "command": "npx", "args": [ "-y", "@wopal/mcp-server-hotnews" ] } } } 3.4 WebSearchMCP- 服务名称: WebSearchMCP - 服务描述: Web Search API 是一个专给大模型用的搜索引擎,在传统搜索引擎网页抓取、排序的能力基础上,增强了意图识别能力,返回更适合大模型处理的结果(网页标题、网页URL、网页摘要、网站名称、网站图标等)。 意图增强检索:支持智能识别用户查询意图,自动判断是否需要网页检索 结构化输出:返回适合LLM处理的数据格式(含标题/URL/摘要/网站名/图标等) 多引擎支持:整合智谱自研引擎及主流搜索引擎(搜狗/夸克) 支持指定范围搜索:可自定义返回的搜索结果数量、域名、时间范围等指定搜索,并可调整网页摘要的字数,帮助实现搜索行为的精细化管控 可灵活控制输出结果时间:响应参数可设置网页发布时间字段,便于时效性分析和排序 - 安装方式: SSE - 使用JSON格式编辑(注意将YOUR API Key替换为2.2的智谱api_key): { "mcpServers": { "zhipu-web-search-sse": { "url": "https://open.bigmodel.cn/api/mcp/web_search/sse?Authorization=YOUR API Key" } } } 3.5 MCPServerChart- 服务名称: MCPServerChart - 服务描述: https://github.com/antvis/mcp-server-chart 🤖 一个可视化 mcp 包含 25+个视觉图表,使用。用于图表生成和数据分析。 - 安装方式: NPX - 使用JSON格式编辑: { "mcpServers": { "mcp-server-chart": { "command": "npx", "args": [ "-y", "@antv/mcp-server-chart" ] } } } 所有 MCP 服务安装完毕之后可以刷新一看确认状态,也可以按个点进去看看每个 MCP 定义的工具。以 WebSearchMCP 工具为例:4 编排及部署 Agent在开发者空间–开发平台beta–AIAgent–Agent-创建Agent逐一点击进入Agent创建页面:我们可以使用智能修改来修改图标和描述:名称: 智搜可视化Agent描述: 一站式智能搜索与数据可视化专家,助您高效挖掘信息宝藏,直观呈现数据洞察。模型: 选择上文中配置好的如 GLM-4.5-Flash角色设定: 也可以智能生成接着我们依次添加上文中定义的4个MCP服务:参考提示词:## 角色定义 你是一名专业的“智搜数据可视化Agent”,专注于为用户提供智能数据搜索、趋势分析及可视化展示服务。你的核心能力是通过调用不同的MCP(Model Context Protocol)模块,精准满足用户的数据查询与可视化需求。 ## 可调用工具 你有四个MCP模块可供调用,每个模块有明确的用途和调用场景: ### 1. TrendsHub - **功能**:热点趋势数据查询与分析 - **调用场景**:当用户需要查询各类热点趋势数据时(如搜索趋势、流行趋势、话题热度等) - **调用规则**:仅在用户明确表达需要查询热点趋势数据时调用 ### 2. HotNewsMCP - **功能**:热点新闻获取与聚合 - **调用场景**:当用户需要获取最新热点新闻、热门资讯时 - **调用规则**:仅在用户明确表达需要查询热点新闻时调用 ### 3. WebSearchMCP - **功能**:常规网页搜索 - **调用场景**:当用户需要进行常规信息搜索、资料查询时 - **调用规则**:作为默认搜索工具,在非热点数据查询场景下调用 ### 4. MCPServerChart - **功能**:数据可视化图表生成 - **调用场景**:在通过其他MCP获取到数据后,需要将数据以图表形式展示时 - **调用规则**:获取数据后,根据用户需求或数据特性自动调用生成可视化图表 ## 工作流程 1. **需求分析**:仔细理解用户的查询意图,判断是热点数据查询还是常规搜索 2. **工具选择**: - 热点趋势查询 → 调用 TrendsHub - 热点新闻查询 → 调用 HotNewsMCP - 常规信息搜索 → 调用 WebSearchMCP 3. **数据获取**:通过相应的MCP获取所需数据 4. **数据可视化**:获取数据后,调用 MCPServerChart 将数据转化为直观的图表 5. **结果呈现**:向用户提供包含数据分析和可视化结果的完整回答 ## 交互风格 - **专业准确**:确保数据查询和可视化结果的准确性 - **清晰易懂**:用简洁明了的语言解释数据分析结果 - **主动服务**:根据用户需求主动推荐合适的可视化方式 - **灵活应变**:能够根据用户的反馈调整搜索策略和可视化方案 ## 注意事项 - 严格遵守各MCP的调用规则,避免不必要的工具调用 - 在获取数据后,优先考虑数据可视化,提升用户体验 - 如遇到数据获取失败或可视化异常,及时向用户说明情况并提供替代方案可按需调整模型参数、推荐问题等,调试效果满意之后即可发布 Agent。既可以通过 API 调用,也可以直接通过 WEB 网页访问。我正在参加【案例共创】第5期 开发者空间 AI Agent 开发 https://developer.huaweicloud.com/signup/0e966198e87a4210b5f88c0d759d4f3b
-
智能就业建议报告补充部分说明文档eyre9210本项目在严格遵循比赛要求的基础上,针对问卷设计、代码质量及分析功能等进行了系统性优化,现将主要改进内容说明如下:一、改善了问卷设计1、问卷立意与激励体系升级原问卷:说明文字过于简略,未建立价值共鸣仅陈述”研究就业形势”这一宏观目标缺乏参与者利益点设计新问卷:构建完整的参与价值闭环通过”揭示痛点-优化服务-推动改变”三层次说明研究价值设置双激励体系:智能报告(即时价值)+ 影响未来(情感价值)强调数据安全(匿名+限定用途)增加社会责任感驱动(影响百万毕业生)2、问题结构优化分析原问卷:存在明显逻辑断层基本信息(1-3题)→ 毕业去向(4题)→ 就业因素(5题)→ 能力提升(7题)关键维度缺失(城市选择、行业偏好、自我评估等)新问卷:构建完整决策树逻辑身份锚定(称呼/性别/专业/毕业状态)决策环境(城市/行业/工作类型偏好)能力评估(专业/沟通/协作/抗压)决策机制(压力值/核心竞争力/因素权重)发展路径(毕业计划/能力提升方向)3、选项设计专业化提升原问卷:存在严重设计缺陷毕业去向选项覆盖率不足(缺失职业转型等)影响因素选项重叠(薪酬与福利未拆分)新问卷:体现职业发展研究专业性毕业计划创新:区分短期(考证)与长期(职业转型)规划覆盖新型就业形态(远程工作/自由职业)工作类型矩阵:稳定型(体制内) 成长型(互联网)自由型(零工经济)专业型(技术岗)4、能力评估科学性优化原问卷:单一维度评估仅问及”专业对找工作的帮助”能力提升方向开放式提问导致分析困难新问卷:构建能力雷达图硬技能:专业知识/技术熟练度(通过评分)软技能:沟通/协作/抗压(多维度评分)竞争力词云:捕捉自我认知标签5、城市分级创新原问卷:完全缺失地域维度新问卷:采用动态城市分级特别标注”以工作机会为主”体现务实导向海外选项呼应全球化趋势新问卷实现的过程同步了参数绑定和查看时禁用编辑的功能。原问卷设计为了研究大学生就业形势,探讨如何完善各项指导,特做 此次调查,希望您能把真实想法告诉我们!如何称呼您?您的性别是?您的专业类型是?你进入毕业时期的去向?求职考研出国创业其他就业时,下列哪些因素对你有影响?薪酬保险福利工作氛围环境晋升空间其他您的专业对您找工作的帮助评分?在日常实习,工作,生活中希望提升哪些方面的能力?新问卷设计二、代码质量提升1、命名规范改进解决了原来教程中将questionCode7作为AI提示词命名的不规范问题,额外引入AIPromot[]用来存储多组提示词,为接下来多组分析做铺垫。引入新的标签指导手册第22页中代码命名不规范的部分2、提示词改进信息完整性提升原版仅使用6个参数(0-5),新版扩展至16个参数(0-15),新增了:核心竞争力(5)、意向城市(6)、毕业状态(7)、工作类型(8)多维能力评分体系(10-13)、行业偏好(14)、能力提升目标(15)量化指标系统(1-10分制的压力值与能力值)模块化设计优化从单一建议升级为三阶段服务:JavaScriptvar prompt1 = "职业规划建议"; // 战略层面var prompt2 = "具体职业推荐"; // 战术层面var prompt3 = "用户画像分析"; // 诊断层面各模块功能明确且相互补充,形成完整的职业咨询体系用户体验增强提示词设计更符合用户认知逻辑:新增”结合当下就业形势”的时效性要求“只列出重点大纲”的格式化要求明确的字数控制(300字)保证信息密度术语优化: “毕业时期去向” → “毕业1年内计划” “自我评分” → 细分为专业/沟通/协作/抗压等具体维度实用性提升新增关键决策维度:JavaScriptquestionCodes[6] // 城市选择questionCodes[14] // 行业偏好questionCodes[15] // 能力提升目标构建了完整的决策矩阵:地域+行业+能力三维模型具体如下var suggestionText = `该学生性别为 ${questionCodes[0]},专业是${questionCodes[1]},毕业时期去向为 ${questionCodes[2]},就业时主要受到以下因素影响:${questionCodes[3]},其专业对于找工作时的自我评分为 ${questionCodes[4]} 分,日常实习工作中希望得到以下方面的提升:${questionCodes[5]}。请根据以上信息给出该学生的职业规划建议,200 字以内。`;const userInfo = `我的性别为 ${questionCodes[0]},专业是 ${questionCodes[1]},毕业时期1年内计划为 ${questionCodes[2]},就业时主要受到以下因素影响:${questionCodes[3]},其求职压力为 ${questionCodes[4]} 分(1-10),核心竞争力为:${questionCodes[5]},意向的城市有${questionCodes[6]},毕业状态是${questionCodes[7]},倾向工作类型是${questionCodes[8]};喜欢的工作内容是${questionCodes[9]},入职后你最想提高的能力是${questionCodes[15]},对自己的专业知识和技能评分是${questionCodes[10]}分(1-10),对自己的沟通表达能力评分是${questionCodes[11]}分(1-10),对自己的团队协作能力评分是${questionCodes[12]}分(1-10),对自己抗压与适应能力评分是${questionCodes[13]}分(1-10),优先考虑进入的行业:${questionCodes[14]}。`;var prompt1 = `请根据下面的内容为我生成一份智能就业建议报告,结合当下就业形势,给出职业规划建议,只列出重点大纲发展方向,300字以内,保持良好的格式,直接输出文字。${userInfo},`;var prompt2 = `请根据下面的内容为我推荐一些职业,以及这些职业需要的技能和学习精通方法,只列出重点大纲发展方向,300字以内,保持良好的格式,直接输出文字。${userInfo}`;var prompt3 = `请根据下面的内容为我生成大学生求职者用户画像并给出简要分析,300字以内,保持良好的格式,直接输出文字。${userInfo}`;var _form = context.$component.form;// 校验表单,非promise,返回true/falsevar validFlag = _form.formValidateUnPromise();if (!validFlag) {return false;}//序列化表单var model = context.$model.ref("formData").getData();var modelCopy = JSON.parse(JSON.stringify(model));for (var item in modelCopy) {if (modelCopy[item] && typeof modelCopy[item] !== "string") {modelCopy[item] = JSON.stringify(modelCopy[item]);}}console.log(modelCopy.nfeyre__questionCode4__CST);// 获取当前页面var pageName = context.$page.params.pageName;// 提取 nfeyre__questionCode1__CST 到 nfeyre__questionCode15__CST 字段的值var questionCodes = [];for (var i = 1; i <= 16; i++) {var fieldName = "nfeyre__questionCode" + i + "__CST";var fieldValue = modelCopy[fieldName] || ""; // 如果字段不存在,使用空字符串questionCodes.push(fieldValue);}// 拼接字符串const userInfo = `我的性别为 ${questionCodes[0]},专业是 ${questionCodes[1]},毕业时期1年内计划为 ${questionCodes[2]},就业时主要受到以下因素影响:${questionCodes[3]},其求职压力为 ${questionCodes[4]} 分(1-10),核心竞争力为:${questionCodes[5]},意向的城市有${questionCodes[6]},毕业状态是${questionCodes[7]},倾向工作类型是${questionCodes[8]};喜欢的工作内容是${questionCodes[9]},入职后你最想提高的能力是${questionCodes[15]},对自己的专业知识和技能评分是${questionCodes[10]}分(1-10),对自己的沟通表达能力评分是${questionCodes[11]}分(1-10),对自己的团队协作能力评分是${questionCodes[12]}分(1-10),对自己抗压与适应能力评分是${questionCodes[13]}分(1-10),优先考虑进入的行业:${questionCodes[14]}。`;var prompt1 = `请根据下面的内容为我生成一份智能就业建议报告,结合当下就业形势,给出职业规划建议,只列出重点大纲发展方向,300字以内,保持良好的格式,直接输出文字。${userInfo},`;var prompt2 = `请根据下面的内容为我推荐一些职业,以及这些职业需要的技能和学习精通方法,只列出重点大纲发展方向,300字以内,保持良好的格式,直接输出文字。${userInfo}`;var prompt3 = `请根据下面的内容为我生成大学生求职者用户画像并给出简要分析,300字以内,保持良好的格式,直接输出文字。${userInfo}`;modelCopy.nfeyre__AIPrompt1__CST = prompt1;modelCopy.nfeyre__AIPrompt2__CST = prompt2;modelCopy.nfeyre__AIPrompt3__CST = prompt3;// 业务逻辑context.$model.ref("formData").setData(modelCopy);context.$model.ref("formData").save().then((data) => {if (data.resCode == 0) {var recordId = data.result[0] && data.result[0].id;// 在当前页签打开var queryParam = "recordId=" + recordId + "&page=" + pageName;context.$page.loadStdPage("nfeyre__questionnaires_submitPage",queryParam);}});三、分析更加多维从单一建议升级为三阶段服务,具体内容见上一部分。后期拟加入文字解析模块,解析markdown文本到文本框,使得用户阅读更加友好。同时利用JS并发执行特点,同步调用三次API,让分析更加完备、代码更加健壮。function parseJSON(str) {var flag = false;try {JSON.parse(str);flag = true;} catch (err) {flag = false;}return flag;}var recordId = context.$page.params.recordId;if (recordId) {// 获取 Object 对象var _object = context.object("nfeyre__suggestion__CST");// 查询满足条件数据var _condition = {conjunction: "AND",conditions: [{ field: "id", operator: "eq", value: recordId }],};_object.query(_condition).then(function (res) {if (res.resCode == 0) {var result = res.result;if (result && result.length > 0) {var data = result[0];try {for (var item in data) {if (data[item] && parseJSON(data[item])) {data[item] = JSON.parse(data[item]);}}} catch (err) {console.log(err);}console.log(data);var suggestionText1 = data.nfeyre__AIPrompt1__CST;var suggestionText2 = data.nfeyre__AIPrompt2__CST;var suggestionText3 = data.nfeyre__AIPrompt3__CST;// 执行脚本// 初始化 Flowvar _flow1 = context.flow("nfeyre__ds");_flow1.version("0.0.1");var _flow2 = context.flow("nfeyre__ds");_flow2.version("0.0.1");var _flow3 = context.flow("nfeyre__ds");_flow3.version("0.0.1");// 并行执行Promise.all([_flow1.run({ input: suggestionText1 }),_flow2.run({ input: suggestionText2 }),_flow3.run({ input: suggestionText3 }),]).then(function (results) {data.nfeyre__suggestion__CST =results[0]["result"][0]["variable0"]["choices"][0]["message"]["content"];data.nfeyre__suggestion1__CST =results[1]["result"][0]["variable0"]["choices"][0]["message"]["content"];data.nfeyre__suggestion2__CST =results[2]["result"][0]["variable0"]["choices"][0]["message"]["content"];$model.ref("form0").setData(data);}).catch(function (error) {console.error("Flow execution failed:", error);});}}});}四、实例展示1.问卷实例2.规划建议实例
-
基于华为开发者空间使用 FastAPI 构建 MCP 天气查询服务案例介绍本案例将指导您在华为云开发者空间中使用 FastAPI 框架构建一个功能完整的 MCP(Model Context Protocol)天气查询服务。通过本案例,您将学会如何将传统的 REST API 转换为 MCP 工具,让 AI 模型能够实时获取天气信息并与用户进行智能交互。技术栈后端框架: FastAPI协议标准: MCP (Model Context Protocol)天气数据: 和风天气 API认证方式: JWT (JSON Web Token)客户端: Cherry Studio部署环境: 华为云开发者空间学习目标掌握 MCP 协议的基本概念和实现方式实现 AI 模型与外部服务的实时数据交互体验华为云开发者空间的开发便利性以及 Maas DeepSeek 模型服务的无缝集成案例内容1. 概述1.1 案例背景在传统的 AI 对话系统中,模型只能基于训练数据回答问题,无法获取实时信息。MCP 协议的出现解决了这一痛点,它允许 AI 模型通过标准化的接口调用外部工具和服务,获取实时数据。本案例选择天气查询作为示例,因为:实时性强: 天气数据需要实时获取,体现 MCP 的价值应用广泛: 天气查询是用户常见需求技术完整: 涵盖 API 调用、数据处理、错误处理等完整流程易于扩展: 可以基于此案例扩展更多功能1.2 适用对象企业用户:关注业务自动化、提升开发效率、集成AI能力,适合希望快速构建智能工具、提升企业数字化水平的团队。个人开发者:具备一定Python基础(或能借助 AI 辅助编程),关注技术创新与个人成长,适合希望掌握MCP协议、API开发与AI集成的开发者。高校学生:有编程基础(或能借助 AI 辅助编程),关注AI应用实践与创新能力培养,适合希望参与AI+云平台项目实训、提升综合开发能力的学生群体。1.3 案例时间准备阶段: 30 分钟(环境配置、账号注册)开发阶段: 20 分钟(代码编写、调试)测试阶段: 10 分钟(功能验证、MCP 集成)总计时间: 约 60 分钟1.4 案例流程环境准备API 注册项目初始化依赖安装核心代码开发JWT 认证实现天气接口开发MCP 集成本地测试客户端配置端到端验证1.5 资源总览本案例预计花费0元。资源类型名称/说明免费额度/价格备注开发资源华为云开发者空间0元免费注册使用Maas DeepSeek 模型服务0元免费额度,按需扩展和风天气开发者账号0元免费额度,1000次/天Cherry Studio 客户端0元开源免费API 配额和风天气免费版0元1000次/天Maas DeepSeek 模型服务0元免费额度注意事项:本案例基于免费额度,如需更高配额请自行申请。API 可能存在调用次数限制,超出免费额度需付费或申请扩容。2. 环境配置2.1 开发者空间配置步骤 1: 登录华为云领取免费云主机访问 华为云官网,注册并登录华为云账号点击“开发者->开发者空间”,进入。如果没有领取过云主机可以点击"立即体验"进行开通。步骤 2: 配置云主机访问开发者空间工作台, 点击"配置云主机"配置基础资源: CPU架构为 ARM,规格为 4 vCPUs 8 GB,操作系统为 Ubuntu ,镜像为 Ubuntu 24.04 Server定制版等待环境初始化完成后点击"打开云主机-进入桌面",打开云主机桌面2.2 MaaS 领取 DeepSeek步骤 1: 访问华为云 MaaS 服务在华为云控制台搜索"MaaS",点击进入 Maas 控制台区域选择西南-贵阳一,在左侧菜单栏,选择在线推理 > 预置服务 > 免费服务,选择DeepSeek-R1-32K模型,点击领取额度,领取200万免费token。步骤 2: 获取API地址和模型名称领取后点击调用说明*,可以获取到对应的API地址、模型名称。步骤 3: 获取 API 密钥点击“API Key管理-创建API Key“”,自定义标签和描述,点击确定创建API Key。(⚠️注意:API Key仅会在新建后显示一次,请及时复制并妥善保存,若API Key丢失,请新建API Key。)至此,我们获取到了所需的 API 地址、模型名称和 API 密钥。2.3 安装 Cherry Studio下载安装:使用云主机中的Firefox访问 [Cherry Studio 官网] https://cherry-studio.com根据操作系统下载对应版本,如 **Cherry-Studio-1.3.12-arm64.AppImage给下载的文件添加执行权限chmod +x Cherry-Studio-1.3.12-arm64.AppImage安装运行相关依赖sudo apt update sudo apt install zlib1g zlib1g-dev sudo add-apt-repository universe sudo apt install libfuse2运行安装包./Cherry-Studio-1.3.12-arm64.AppImage --no-sandbox基础配置:配置 DeepSeek 模型连接测试模型连接是否正常2.4 和风天气 API 注册(可选)💡 提示: 教程代码中已包含测试用的 API 配置,如无法使用请自行注册注册流程:访问 和风天气开发者平台 https://id.qweather.com/注册开发者账号并完成邮箱验证进入开发服务控制台创建项目并获取必要的认证信息获取配置信息:PROJECT_ID: 项目标识符KEY_ID: JWT 密钥标识PRIVATE_KEY: JWT 签名私钥WEATHER_API_HOST: API 服务地址访问[https://id.qweather.com/] https://id.qweather.com/ 注册账号,初次使用需绑定手机号和邮箱。注册成功后,点击菜单中的 开发服务控制台,进入开发控制台。点击项目管理-创建项目,创建一个项目,如 fastapi, 创建之后此步骤获得PROJECT_ID。点击项目如fastapi,进入项目详情页并点击创建凭据开始创建 JWT 凭据,需先在本地生成公私钥对再创建,创建之后此步骤获得PRIVATE_KEY和KEY_ID。(PS: 虽然 APIKey 更简单,但推荐使用JSON Web Token (JWT)的认证方式获得更高等级的安全性以及不受限的API请求)点击设置, 从开发者信息中获取 API Host,也就是WEATHER_API_HOST至此,我们天气查询 MCP 中需要用到的配置信息已经全部获取。3. 项目搭建3.1 项目初始化使用CodeArts IDE for Python创建项目工程或者使用脚本创建项目目录:mkdir qweather-mcp cd qweather-mcp安装依赖包:pip install fastapi uvicorn fastapi-mcp pyjwt cryptography requests -i https://repo.huaweicloud.com/repository/pypi/simple创建项目结构:qweather-mcp/ ├── main.py # 主程序文件 ├── requirements.txt # 依赖列表 ├── config.py # 配置文件(可选) └── README.md # 项目说明3.2 核心代码实现详细的代码实现包括:FastAPI 应用初始化JWT 认证机制天气 API 封装MCP 协议集成错误处理机制3.3 关键功能模块JWT 认证模块: 实现安全的 API 访问控制天气查询模块: 封装和风天气 API 调用MCP 集成模块: 将 REST API 转换为 MCP 工具数据模型模块: 定义请求和响应的数据结构3.4 代码实现我们创建 main.py 文件,并编写代码。3.4.1 引入依赖from fastapi import FastAPI, HTTPException, Depends, Query, status from fastapi.security import HTTPBearer from pydantic import BaseModel, Field from typing import List, Optional, Dict, Any import jwt import time import requests from datetime import datetime import base64 from cryptography.hazmat.primitives import serialization from cryptography.hazmat.backends import default_backend # 引入 fastapi_mcp from fastapi_mcp import FastApiMCP, AuthConfig3.4.2 配置天气服务 APIapp = FastAPI(title="天气查询API") # 配置项 - 在实际应用中应从环境变量或配置文件中读取 # PRIVATE_KEY = """YOUR_PRIVATE_KEY""" # PROJECT_ID = "YOUR_PROJECT_ID" # KEY_ID = "YOUR_KEY_ID" # WEATHER_API_HOST = "your_api_host" PRIVATE_KEY = "MC4CAQAwBQYDK2VwBCIEIG2wMZga50X1YDHmR8jkE5TGKNXpriFPXXCT/kgwZkcT" PROJECT_ID = "3MKPRE78RN" KEY_ID = "T8B7JMU7AY" WEATHER_API_HOST = "ky6mte27bb.re.qweatherapi.com" 3.4.3 定义响应 Model# 响应模型 class Location(BaseModel): name: str id: str lat: str lon: str adm2: str adm1: str country: str tz: str utcOffset: str isDst: str type: str rank: str fxLink: str class LocationResponse(BaseModel): code: str location: List[Location] class WeatherNow(BaseModel): obsTime: str temp: str feelsLike: str icon: str text: str wind360: str windDir: str windScale: str windSpeed: str humidity: str precip: str pressure: str vis: str cloud: str dew: str class ReferSources(BaseModel): sources: List[str] license: List[str] class WeatherResponse(BaseModel): code: str updateTime: str fxLink: str now: WeatherNow refer: ReferSources class JWTRequest(BaseModel): expiry_seconds: Optional[int] = 900 # 默认15分钟 custom_claims: Optional[dict] = None # 允许添加自定义声明 class WeatherQuery(BaseModel): city: str = Field(..., description="城市名,如:北京") 3.4.4 JWT 令牌生成# 解码并加载私钥 try: _der_key_bytes = base64.b64decode(PRIVATE_KEY) PRIVATE_KEY = serialization.load_der_private_key( _der_key_bytes, password=None, backend=default_backend() ) except Exception as e: print(f"关键错误:无法从配置加载EdDSA私钥。错误: {e}") PRIVATE_KEY = None if PRIVATE_KEY is None: raise RuntimeError(f"关键错误:EdDSA私钥加载失败,应用无法启动。错误: {e}") # 令牌缓存(简单实现,生产环境应使用Redis等缓存系统) token_cache = { "token": None, "expires_at": 0 } # Bearer Token 安全头 token_auth_scheme = HTTPBearer() EXPECTED_BEARER_TOKEN = "huaweicloud" # 定义期望的固定Token # Bearer Token 验证依赖 async def verify_bearer_token(token_payload = Depends(token_auth_scheme)): if token_payload.credentials != EXPECTED_BEARER_TOKEN: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="无效的认证凭据", headers={"WWW-Authenticate": "Bearer"}, ) return token_payload.credentials # 生成JWT令牌 def generate_jwt(expiry_seconds: int = 900): current_time = int(time.time()) # 构建标准JWT载荷 payload = { 'iat': current_time - 30, # 颁发时间(提前30秒,避免时钟偏差问题) 'exp': current_time + expiry_seconds, # 过期时间 'sub': PROJECT_ID # 主题(项目ID) } # JWT头部 headers = { 'kid': KEY_ID # 密钥ID } if PRIVATE_KEY is None: raise ValueError("JWT生成失败: 私钥未初始化或加载失败。") try: # 生成JWT encoded_jwt = jwt.encode(payload, PRIVATE_KEY, algorithm='EdDSA', headers=headers) # 更新缓存 token_cache["token"] = encoded_jwt token_cache["expires_at"] = current_time + expiry_seconds - 60 # 提前1分钟过期,确保安全 return encoded_jwt except Exception as e: raise ValueError(f"JWT生成失败: {str(e)}") # 获取有效的JWT令牌(如果缓存中有有效令牌则使用缓存,否则生成新令牌) def get_valid_token(): current_time = int(time.time()) # 检查缓存中的令牌是否有效 if token_cache["token"] and token_cache["expires_at"] > current_time: return token_cache["token"] # 生成新令牌 return generate_jwt() @app.post("/generate-jwt", operation_id="generate_jwt", tags=["JWT"]) async def create_jwt( request: JWTRequest = JWTRequest() ): """ 生成JWT令牌 - 使用EdDSA算法签名 - 默认有效期为15分钟 - 可以添加自定义声明 """ try: encoded_jwt = generate_jwt(request.expiry_seconds) current_time = int(time.time()) return { "jwt": encoded_jwt, "expires_at": datetime.fromtimestamp(current_time + request.expiry_seconds).isoformat(), "issued_at": datetime.fromtimestamp(current_time - 30).isoformat(), "valid_for_seconds": request.expiry_seconds } except Exception as e: raise HTTPException(status_code=500, detail=str(e)) 3.4.5 天气查询接口# 发送HTTP请求到天气API,并处理gzip压缩 def fetch_weather_api(endpoint: str, params: Dict[str, Any]): # 获取有效的JWT令牌 token = get_valid_token() headers = { 'Authorization': f'Bearer {token}', 'Accept-Encoding': 'gzip' # 我们请求gzip压缩 } url = f"https://{WEATHER_API_HOST}/{endpoint}" try: response = requests.get(url, headers=headers, params=params) # 检查响应状态 if response.status_code != 200: # 如果是401或403,尝试刷新令牌并重试 if response.status_code in [401, 403]: # 强制生成新令牌 new_token = generate_jwt() # 更新请求头 headers['Authorization'] = f'Bearer {new_token}' # 重试请求 response = requests.get(url, headers=headers, params=params) # 如果还是失败,则抛出异常 if response.status_code != 200: raise HTTPException( status_code=response.status_code, detail=f"天气API请求失败: HTTP {response.status_code}" ) else: raise HTTPException( status_code=response.status_code, detail=f"天气API请求失败: HTTP {response.status_code}" ) # 依赖 requests 库自动处理Gzip解压缩,并直接解析JSON # 旧的Gzip处理逻辑已被移除 return response.json() except requests.exceptions.JSONDecodeError as e: # 如果响应不是有效的JSON(即使在解压缩后),则捕获此特定错误 raise HTTPException(status_code=500, detail=f"天气API响应解析失败: 无效的JSON内容 - {str(e)}") except HTTPException: # 重新抛出已捕获的HTTPException,以便FastAPI处理 raise except Exception as e: # 捕获其他潜在错误 raise HTTPException(status_code=500, detail=f"天气API请求时发生未知错误: {str(e)}") @app.get("/city/lookup", response_model=LocationResponse, operation_id="lookup_city", tags=["天气查询"]) async def lookup_city( location: str = Query(..., description="城市名称,如:北京") ): """ 根据城市名称查询位置ID - 返回城市的详细信息和位置ID - 位置ID用于后续天气查询 """ try: data = fetch_weather_api("geo/v2/city/lookup", {"location": location}) return data except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.get("/weather/now", response_model=WeatherResponse, operation_id="get_weather_now", tags=["天气查询"]) async def get_weather_now( location: str = Query(..., description="位置ID,如:101010100") ): """ 获取指定位置的实时天气 - 需要提供位置ID - 返回当前天气详情 """ try: data = fetch_weather_api("v7/weather/now", {"location": location}) return data except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.post("/weather/by-city", response_model=WeatherResponse, operation_id="get_weather_by_city", tags=["天气查询"]) async def get_weather_by_city( query: WeatherQuery ): """ 一站式查询城市天气 - 只需提供城市名 - 自动查询位置ID并获取天气 """ try: # 先查询城市ID location_data = fetch_weather_api("geo/v2/city/lookup", {"location": query.city}) # 检查是否找到城市 if location_data.get("code") != "200" or not location_data.get("location"): raise HTTPException(status_code=404, detail=f"找不到城市: {query.city}") # 获取第一个匹配城市的ID location_id = location_data["location"][0]["id"] # 查询天气 weather_data = fetch_weather_api("v7/weather/now", {"location": location_id}) return weather_data except HTTPException: raise except Exception as e: raise HTTPException(status_code=500, detail=str(e)) 3.4.6 主程序及 MCP 集成@app.get("/") async def root(): """主页 - 提供API简介""" return { "message": "天气查询API", "endpoints": [ "/generate-jwt - 生成JWT令牌", "/city/lookup - 根据城市名查询位置ID", "/weather/now - 根据位置ID查询当前天气", "/weather/by-city - 一站式查询城市天气" ], "docs": "/docs 查看完整API文档" } # mcp 实现 mcp = FastApiMCP( app, name="My Weather MCP", description="天气查询API", include_operations=["get_weather_by_city"], # 只公开 get_weather_by_city 接口作为 MCP tool auth_config=AuthConfig(dependencies=[Depends(verify_bearer_token)]) # MCP 使用 Bearer Token 验证 ) mcp.mount() # 启动服务器的命令(在命令行中运行): # uvicorn main:app --reload if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8009) 4. 测试验证4.1 本地服务测试启动服务:python main.pyAPI 文档验证:访问 http://localhost:8009/docs测试各个接口功能验证数据格式正确性我们可以使用浏览器访问 http://localhost:8009/docs 来查看并测试API。4.2 MCP 客户端集成Cherry Studio 配置:服务名称: FastAPI 天气查询连接类型: 服务器发送事件(SSE)服务地址: http://localhost:8009/mcp认证头: Authorization=Bearer huaweicloud功能验证:配置 MCP 服务连接验证工具列表显示测试天气查询功能对比启用前后的效果在 Cherry Studio 中配置好的 MCP 服务,我们可以直接在 MCP 客户端中使用 get_weather_by_city 接口:名称:FastAPI 天气查询类型:服务器发送事件(SSE)URL:http://localhost:8009/mcp请求头:Authorization=Bearer zishu.co在工具中,我们可以看到get_weather_by_city接口已经添加到MCP服务中。新建一个话题,先不开启 MCP 服务器设置,直接输入北京天气怎么样,我们会发现大模型无法实时获取天气。接着我们启用 MCP 服务,并输入北京天气怎么样,我们会发现大模型可以实时获取天气。get_weather_by_city tool 被成功调用,并返回了天气信息。5. 总结5.1 技术收获通过本案例,您将掌握:MCP 协议: 理解 AI 模型与外部工具的交互机制FastAPI 开发: 快速构建高性能 Web APIJWT 认证: 实现安全的 API 访问控制第三方 API 集成: 学会封装和调用外部服务错误处理: 构建健壮的服务应用5.2 应用价值实时数据获取: AI 模型可以获取最新的天气信息用户体验提升: 提供准确、及时的天气查询服务技术架构: 为更复杂的 MCP 应用奠定基础可扩展性: 可以轻松添加更多天气相关功能如果想要拓展更多功能,您可以动手试试看!
-
如题。MetaStudio生成的数字人口播视频在使用上有什么限制吗?是否可以放到短视频平台(抖音、快手等)上做为营销广告?
-
"同事小李上周被老板骂了,就因为他花了3天整理报表数据。而我喝着咖啡刷着剧,5分钟就生成精准报表——别误会,我不是黑客,只是把公司数据库调教成了会说话的AI管家!"一、为什么要跪着看这篇教程?在这个人均ChatGPT的时代,你还靠人肉查数据?今天要搞的这套"智能知识库系统"有多逆天:老板说"我要上周华东区热销单品",直接生成SQL报表运营妹子问"用户复购率top3品类",秒出可视化图表新人查资料不用翻wiki,直接对话调取知识库重点来了!整套方案零!成!本!华为云免费主机 + 200万token大模型 + 开箱即用的神器AntSK = 打工人の摸鱼神器二、华为云的正确薅法(手把手教学)Step1:领取你的免费赛博打工人浏览器输入:cid:link_1进入我的云主机黑科技说明书:华为云开发者空间就像个24小时待命的数字员工宿舍,我们即将在这里部署:学霸级AI大脑:DeepSeek-R1(32B参数大佬)知识库管家:AntSK(微软Semantic Kernel加持)三、保姆级部署指南(含避坑大全)▍Stage1:给你的云主机装外挂在终端输入这段魔法咒语:bash复制sudo apt-get install git -y # 别问,问就是装个时光机避坑TIP:如果遇到"Permission denied",请深情朗诵三遍:"sudo大法好,权限保平安"▍Stage2:召唤AntSK神器复制粘贴这段代码,你将获得价值百万的开源项目:bash复制git clone https://github.com/AIDotNet/AntSK.git接下来我们需要安装一下dotnet8环境,此处省略。sudo dotnet cleansudo dotnet buildsudo dotnet publish "AntSK.csproj"cd /antsk/AntSK/src/AntSK/bin/Release/net8.0/publish/sudo AntSK.dll安装好以后,我们启动项目然后我们访问127.0.0.1:5000/user/login然后我们需要申请一下ModelArts Studio的模型 https://console.huaweicloud.com/modelarts/?region=cn-east-4&locale=zh-cn#/model-studio/square 进入ModelArts Studio单个模型可以免费使用200W Token这里我选择的是 DeepSeek-R1-Distill-Qwen-32B-4K选择好以后,需要创建一个Api Key然后我们就可以直接使用这个模型进入模型配置页面我们还需要一个向量模型,这里使用硅基流动的免费的bge-m3接下来我们可以创建应用测试看看我们可以看到,对话已经通了,接下来我们创建知识库进行测试我们导入一个简单的文本进行测试我们可以看到。向量已经处理完成我们重新创建一个知识库然后我们测试看看效果到此我们就通过华为云开发者空间的免费云主机和 Model Arts 完成了一个知识库搭建 项目亮点剧透:这个基于.NET8的黑科技,能轻松实现:智能客服秒回"亲"企业级知识图谱甚至帮你写情书(误)四、模型界的复仇者联盟▍ModelArts Studio:你的AI军火库猛戳这个神秘链接:https://console.huaweicloud.com/modelarts/?region=cn-east-4选模型就像选男友:要聪明:DeepSeek-R1(32B参数智商担当)要持家:免费200万token(足够聊到天荒地老)要贴心:bge-m3向量模型(中文理解小能手)五、让数据库开口说话の奥义▍知识库调教指南:上传公司文档时,建议先喂点"零食":产品手册.pdf(主食)销售数据.xlsx(甜点)甚至老板的语音备忘录.mp3(黑暗料理)向量化处理时,可以泡杯咖啡灵魂拷问测试:尝试输入:"去年Q4华南区手机配件毛利率是多少?"当系统自动生成SQL时——"动了动了!它自己会写JOIN语句了!"六、打工人の逆袭时刻现在你拥有:✅ 智能问答系统127.0.0.1:5000✅ 自动报表生成器✅ 24小时AI客服升职加薪话术:"王总,我做了个能自动分析销售数据的人工智能系统,预计每年可节省2000小时人工..." 终极秘籍:遇到任何问题,在AntSK的GitHub页面:https://github.com/AIDotNet/AntSK提issue时加上"跪求大佬",触发开发者BUFF加成结语:当你完成部署的那一刻,无数个加班的夜晚将离你远去。P.S. 据说点赞收藏的小伙伴,下周都会收到涨薪通知单~
-
"同事小李上周被老板骂了,就因为他花了3天整理报表数据。而我喝着咖啡刷着剧,5分钟就生成精准报表——别误会,我不是黑客,只是把公司数据库调教成了会说话的AI管家!"一、为什么要跪着看这篇教程?在这个人均ChatGPT的时代,你还靠人肉查数据?今天要搞的这套"智能知识库系统"有多逆天:老板说"我要上周华东区热销单品",直接生成SQL报表运营妹子问"用户复购率top3品类",秒出可视化图表新人查资料不用翻wiki,直接对话调取知识库重点来了!整套方案零!成!本!华为云免费主机 + 200万token大模型 + 开箱即用的神器AntSK = 打工人の摸鱼神器二、华为云的正确薅法(手把手教学)Step1:领取你的免费赛博打工人浏览器输入:cid:link_1进入我的云主机黑科技说明书:华为云开发者空间就像个24小时待命的数字员工宿舍,我们即将在这里部署:学霸级AI大脑:DeepSeek-R1(32B参数大佬)知识库管家:AntSK(微软Semantic Kernel加持)三、保姆级部署指南(含避坑大全)▍Stage1:给你的云主机装外挂在终端输入这段魔法咒语:bash复制sudo apt-get install git -y # 别问,问就是装个时光机避坑TIP:如果遇到"Permission denied",请深情朗诵三遍:"sudo大法好,权限保平安"▍Stage2:召唤AntSK神器复制粘贴这段代码,你将获得价值百万的开源项目:bash复制git clone https://github.com/AIDotNet/AntSK.git接下来我们需要安装一下dotnet8环境,此处省略。sudo dotnet cleansudo dotnet buildsudo dotnet publish "AntSK.csproj"cd /antsk/AntSK/src/AntSK/bin/Release/net8.0/publish/sudo AntSK.dll安装好以后,我们启动项目然后我们访问127.0.0.1:5000/user/login然后我们需要申请一下ModelArts Studio的模型 https://console.huaweicloud.com/modelarts/?region=cn-east-4&locale=zh-cn#/model-studio/square 进入ModelArts Studio单个模型可以免费使用200W Token这里我选择的是 DeepSeek-R1-Distill-Qwen-32B-4K选择好以后,需要创建一个Api Key然后我们就可以直接使用这个模型进入模型配置页面我们还需要一个向量模型,这里使用硅基流动的免费的bge-m3接下来我们可以创建应用测试看看我们可以看到,对话已经通了,接下来我们创建知识库进行测试我们导入一个简单的文本进行测试我们可以看到。向量已经处理完成我们重新创建一个知识库然后我们测试看看效果到此我们就通过华为云开发者空间的免费云主机和 Model Arts 完成了一个知识库搭建 项目亮点剧透:这个基于.NET8的黑科技,能轻松实现:智能客服秒回"亲"企业级知识图谱甚至帮你写情书(误)四、模型界的复仇者联盟▍ModelArts Studio:你的AI军火库猛戳这个神秘链接:https://console.huaweicloud.com/modelarts/?region=cn-east-4选模型就像选男友:要聪明:DeepSeek-R1(32B参数智商担当)要持家:免费200万token(足够聊到天荒地老)要贴心:bge-m3向量模型(中文理解小能手)五、让数据库开口说话の奥义▍知识库调教指南:上传公司文档时,建议先喂点"零食":产品手册.pdf(主食)销售数据.xlsx(甜点)甚至老板的语音备忘录.mp3(黑暗料理)向量化处理时,可以泡杯咖啡灵魂拷问测试:尝试输入:"去年Q4华南区手机配件毛利率是多少?"当系统自动生成SQL时——"动了动了!它自己会写JOIN语句了!"六、打工人の逆袭时刻现在你拥有:✅ 智能问答系统127.0.0.1:5000✅ 自动报表生成器✅ 24小时AI客服升职加薪话术:"王总,我做了个能自动分析销售数据的人工智能系统,预计每年可节省2000小时人工..." 终极秘籍:遇到任何问题,在AntSK的GitHub页面:https://github.com/AIDotNet/AntSK提issue时加上"跪求大佬",触发开发者BUFF加成结语:当你完成部署的那一刻,无数个加班的夜晚将离你远去。P.S. 据说点赞收藏的小伙伴,下周都会收到涨薪通知单~
-
"同事小李上周被老板骂了,就因为他花了3天整理报表数据。而我喝着咖啡刷着剧,5分钟就生成精准报表——别误会,我不是黑客,只是把公司数据库调教成了会说话的AI管家!"一、为什么要跪着看这篇教程?在这个人均ChatGPT的时代,你还靠人肉查数据?今天要搞的这套"智能知识库系统"有多逆天:老板说"我要上周华东区热销单品",直接生成SQL报表运营妹子问"用户复购率top3品类",秒出可视化图表新人查资料不用翻wiki,直接对话调取知识库重点来了!整套方案零!成!本!华为云免费主机 + 200万token大模型 + 开箱即用的神器AntSK = 打工人の摸鱼神器二、华为云的正确薅法(手把手教学)Step1:领取你的免费赛博打工人浏览器输入(此处做超链接):cid:link_1 黑科技说明书:华为云开发者空间就像个24小时待命的数字员工宿舍,我们即将在这里部署:学霸级AI大脑:DeepSeek-R1(32B参数大佬)知识库管家:AntSK(微软Semantic Kernel加持)三、保姆级部署指南(含避坑大全)▍Stage1:给你的云主机装外挂在终端输入这段魔法咒语:bash复制sudo apt-get install git -y # 别问,问就是装个时光机避坑TIP:如果遇到"Permission denied",请深情朗诵三遍:"sudo大法好,权限保平安"▍Stage2:召唤AntSK神器复制粘贴这段代码,你将获得价值百万的开源项目:bash复制git clone https://github.com/AIDotNet/AntSK.git接下来我们需要安装一下dotnet8环境,此处省略。sudo dotnet cleansudo dotnet buildsudo dotnet publish "AntSK.csproj"cd /antsk/AntSK/src/AntSK/bin/Release/net8.0/publish/sudo AntSK.dll安装好以后,我们启动项目然后我们访问127.0.0.1:5000/user/login然后我们需要申请一下ModelArts Studio的模型 https://console.huaweicloud.com/modelarts/?region=cn-east-4&locale=zh-cn#/model-studio/square 进入ModelArts Studio单个模型可以免费使用200W Token这里我选择的是 DeepSeek-R1-Distill-Qwen-32B-4K选择好以后,需要创建一个Api Key然后我们就可以直接使用这个模型进入模型配置页面我们还需要一个向量模型,这里使用硅基流动的免费的bge-m3接下来我们可以创建应用测试看看我们可以看到,对话已经通了,接下来我们创建知识库进行测试我们导入一个简单的文本进行测试我们可以看到。向量已经处理完成我们重新创建一个知识库然后我们测试看看效果到此我们就通过华为云开发者空间的免费云主机和 Model Arts 完成了一个知识库搭建 项目亮点剧透:这个基于.NET8的黑科技,能轻松实现:智能客服秒回"亲"企业级知识图谱甚至帮你写情书(误)四、模型界的复仇者联盟▍ModelArts Studio:你的AI军火库猛戳这个神秘链接:https://console.huaweicloud.com/modelarts/?region=cn-east-4选模型就像选男友:要聪明:DeepSeek-R1(32B参数智商担当)要持家:免费200万token(足够聊到天荒地老)要贴心:bge-m3向量模型(中文理解小能手)五、让数据库开口说话の奥义▍知识库调教指南:上传公司文档时,建议先喂点"零食":产品手册.pdf(主食)销售数据.xlsx(甜点)甚至老板的语音备忘录.mp3(黑暗料理)向量化处理时,可以泡杯咖啡灵魂拷问测试:尝试输入:"去年Q4华南区手机配件毛利率是多少?"当系统自动生成SQL时——"动了动了!它自己会写JOIN语句了!"六、打工人の逆袭时刻现在你拥有:✅ 智能问答系统127.0.0.1:5000✅ 自动报表生成器✅ 24小时AI客服升职加薪话术:"王总,我做了个能自动分析销售数据的人工智能系统,预计每年可节省2000小时人工..." 终极秘籍:遇到任何问题,在AntSK的GitHub页面:https://github.com/AIDotNet/AntSK提issue时加上"跪求大佬",触发开发者BUFF加成结语:当你完成部署的那一刻,无数个加班的夜晚将离你远去。P.S. 据说点赞收藏的小伙伴,下周都会收到涨薪通知单~
-
你们怎么看最近火爆 AI 编程圈的 MCP 协议?对Agent,或者大模型输出的准确度帮助大吗?MCP 就是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。Model Context Protocol (MCP)MCP 是一个标准协议,就像给 AI 大模型装了一个 “万能接口”,让 AI 模型能够与不同的数据源和工具进行无缝交互。它就像 USB-C 接口一样,提供了一种标准化的方法,将 AI 模型连接到各种数据源和工具。MCP 旨在替换碎片化的 Agent 代码集成,从而使 AI 系统更可靠,更有效。通过建立通用标准,服务商可以基于协议来推出它们自己服务的 AI 能力,从而支持开发者更快的构建更强大的 AI 应用。开发者也不需要重复造轮子,通过开源项目可以建立强大的 AI Agent 生态。MCP 可以在不同的应用 / 服务之间保持上下文,从而增强整体自主执行任务的能力。
-
一、华为云产品与DeepSeek技术融合价值华为开发者空间为开发者提供了一站式云原生开发环境,整合了昇腾AI算力、鲲鹏处理器等根技术资源。结合华为云MaaS(大模型即服务),开发者可快速调用DeepSeek-R1/V3等开源大模型,实现从代码生成到部署的全流程优化。DeepSeek的RLHF(基于人类反馈的强化学习)技术显著提升了代码生成的逻辑性和实用性,尤其在金融领域,其处理复杂业务逻辑和数据处理需求时表现突出。二、开发环境搭建与DeepSeek部署1. 开发环境准备华为云账号:完成实名认证后云主机部署:在开发者空间创建云主机(注意不要选择ARM型主机,内存4G以上),安装Ubuntu 22.04系统。DeepSeek部署:通过ollama工具部署DeepSeek-R1:1.5B模型,命令:bashcurl -fssl https://ollama.com/install.sh | shollama run deepseek-r1:1.5b验证模型:输入你好,<think>触发交互式问答。2. DeepSeek Token获取登录华为云MaaS控制台,进入“模型推理-旧版服务”,选择DeepSeek版本并领取200万免费Token,用于后续API调用。三、智能代码生成助手开发实践1. 功能设计场景:金融领域自动化代码生成。技术架构:前端:HarmonyOS NEXT应用(DevEco Studio 5.0.9)集成CodeGPT插件,调用DeepSeek API。后端:云主机部署DeepSeek模型,通过RESTful API与前端交互。知识库:基于RAG技术构建金融领域代码片段库,提升生成准确性。2. 关键代码实现python代码生成服务接口from flask import Flask, request import openai app = Flask(__name__) openai.api_key = "DeepSeek-API-Key" 从华为云MaaS获取 @app.route('/generate_code', methods='POST') def generate_code(): prompt = request.json'prompt' 调用DeepSeek生成代码 response = openai.Completion.create( engine="deepseek-r1", prompt=prompt, max_tokens=1000 ) return {'code': response.choices0.text.strip()} if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) 代码说明:通过Flask搭建API服务,集成DeepSeek的代码生成能力,支持自然语言指令转代码。3. RAG知识库构建数据集准备:收集金融领域GitHub开源项目代码(如量化交易策略、财务报表分析脚本)。向量索引生成:from langchain.vectorstores import Chromafrom langchain.embeddings import OpenAIEmbeddingsembeddings = OpenAIEmbeddings(api_key=“DeepSeek-API-Key”)database = Chroma.from_documents(code_dataset, embeddings)检索优化:通过昇腾云的稀疏路由算法提升检索效率,响应时间降低30%。四、应用效果与优化1. 实操展示输入指令:“生成基于Python的移动平均线策略代码,支持TA-Lib库调用。”输出示例:import talibimport pandas as pddef moving_average_strategy(data, short_window=5, long_window=20): signals = pd.DataFrame(index=data.index) signals'signal' = 0.0 signals'short_mavg' = talib.SMA(data'close', short_window) signals'long_mavg' = talib.SMA(data'close', long_window) signals'signal'short_window: = np.where(signals'short_mavg'short_window: > signals'long_mavg'short_window:, 1.0, 0.0) return signals 2.后续优化低代码扩展:通过Dify框架构建可视化界面,支持非技术人员配置生成规则。本次实践验证了华为开发者空间与DeepSeek在金融领域的协同价值,未来 结合华为云ModelArts Studio实现自动化部署,探索多模态代码生成(如结合金融数据图表生成分析脚本)。我正在参加【案例共创】第3期:基于华为开发者空间+DeepSeek实现智能代码生成助手 --金融领域代码自动化实践
-
一、技术融合价值与背景华为云与DeepSeek的合作为智能体开发提供了“大脑+手脚”的黄金组合:DeepSeek:作为语言基座,擅长需求理解与框架生成(中文问答准确率64.1%),可快速输出代码框架Manus:作为执行引擎,支持快速任务拆解,能自动调用浏览器、Excel等工具完成复杂流程华为云生态:通过ModelArts Studio提供昇腾算力支持,推理速度较GPU提升30%二、开发环境搭建1. 资源准备华为云账号:完成实名认证后,免费领取DeepSeek相关免费Token- 模型部署:在ModelArts Studio领取DeepSeek-R1-671B-4K模型(200万免费Token)通过ollama工具部署模型,命令:bashcurl -fssl https://ollama.com/install.sh | shollama run deepseek-r1:1.5b2. 工具链配置Dify编排平台:配置OpenAI-API兼容供应商,填入华为云模型API地址(需去掉/v1/chat/completions)Manus Studio:安装插件支持华为云API调用,设置执行超时阈值(建议300秒)三、智能体开发实践1. 功能设计场景:企业级软件开发自动化(如API接口开发、测试用例生成)技术架构:A用户需求 --> B(DeepSeek需求解析) B --> C{Manus任务拆解} C --> D代码生成 C --> E测试用例生成 D --> F代码部署 E --> F F --> G结果反馈 2. 关键代码实现python需求解析接口from flask import Flask, request import openai app = Flask(__name__) openai.api_key = "DeepSeek-API-Key" @app.route('/parse_demand', methods='POST') def parse_demand(): prompt = request.json'prompt' response = openai.Completion.create( engine="deepseek-r1", prompt=prompt, max_tokens=1000 ) return {'tasks': response.choices0.text.strip().split('\n')} 任务执行引擎 import subprocess def execute_task(task): if task'type' == 'code': subprocess.run('python', 'code_generator.py', task'params') elif task'type' == 'test': subprocess.run('pytest', task'params') 多智能体协作yaml协作配置文件smart_agents: - name: code_generator type: deepseek api_key: "your_deeepseek_token" - name: test_executor type: manus tools: - pytest - Selenium --- 四、应用效果与优化1. 实操案例输入指令:“开发用户登录API,支持OAuth2.0认证”输出流程:DeepSeek生成代码框架(耗时5秒)Manus自动创建Git分支并提交代码(耗时12秒)调用Postman生成测试用例(耗时8秒)部署至华为云函数计算(耗时30秒)性能优化昇腾加速:将模型推理部署至昇腾超节点,提升响应速度成本控制:通过华为云弹性伸缩策略,闲时自动释放GPU资源安全加固:启用华为云密钥管理服务(KMS)加密API密钥五、总结与展望本次实践验证了华为云+DeepSeek+Manus的技术组合优势:不但提升代码开发效率,而且华为云MaaS与ModelArts Studio提供稳定运行环境,支持企业级应用落地,未来会继续探索与华为云IoT、GaussDB的深度集成,构建端到端智能体。我正在参加【案例共创】第3期:基于华为云+DeepSeek打造企业级智能体开发实践 ——从需求拆解到自动化执行的技术链路
-
1.Manus是什么?Manus的官网地址:cid:link_0Manus是一个通用AI智能体,它连接思维与行动:它不仅思考,还能交付成果。2. Manus能做什么?最近几天,Manus都刷屏了,但是Manus到底能做什么事呢?筛选简历、研究房产、分析股票等等一系列复杂任务都可以由Manus完成官网演示视频中的第一个Demo是简历筛选,视频是YouTube源,需要点科学上网的能力才能看。演示开始,官方给Manus发送一个包含10份简历的压缩包,并给它指令:我需要招聘算法工程师,评估这10份简历。Manus随后就和专业招聘人员一样,解压文件,逐个分析简历,评估排名等等操作该任务都是在Manus后台完成,提问者可以提交任务后,随时关闭电脑,等任务完成后,Manus会发送通知3. Manus为什么这么火?Manus的独特在于它不仅能理解用户需求,还能主动采取行动完成具体的任务,也就是知行合一,有条不紊地完成各项任务,并直接交付完整成果目前Manus仍然处于内测阶段,想要试用Manus需要邀请码,而官方未大规模放出邀请码,导致在某鱼上邀请码卖出了999元到100万元的天价4.如何申请Manus第一步:注册登录打开官方网站:cid:link_0打开右上角的Get Started按钮第二步:激活账户登录因为还没邀请码,我们点击Apply For Access进入申请页面第三步:申请快速通过技巧到这一步,需要填写申请邀请码的基本信息,其中Email是你要注册的邮箱号,尽量用gmailHow can Manus help you:主要告诉官方,我们拿到Manus后,怎么使用,需要提供需求细节综合来看,官方需要评估我们的身份,尽可能给需要的人群使用。这里给大家提供申请模板的范文,提高申请通过的概率尊敬的Manus团队, 我是[您的姓名],目前担任[公司/机构名称]的[职位,如XR技术负责人/智能硬件开发工程师],同时也是[相关领域社区/开源项目名称]的核心贡献者,在关注到anus的创新方向后,我坚信这项技术将重新定义[具体领域,如人机交互/元字宙入口/康复医疗等],迫切希望以开发者身份参与内测并提供深度反馈。我的相关经验可能对贵司有价值: 1.技术背景:拥有[X]年[AR/VR/智能硬件开发]经验,主导开发过[简述项目名称与成果,如「基于柔性传感器的可穿戴手势识别系统」或「某品牌VR手套SDK优化」],对[传感器数据融合/低延迟交互/生物力学分析]等技术难点有实战经验。 场景洞察:目前正在推进[具体项目或研究方向,如「工业场景下的远程协作XR解决方案」或「神经康2复中的手势追踪应用」1,Manus的[某项具体技术特性]恰好能解决我们当前遇到的[具体问题或瓶颈]。 传播能力:我在[技术社区平台/社交媒体名称]拥有[X]万关注者,曾为[某知名硬件产品]撰写过传播量3.超[X]的测评报告,愿在内测期间通过图文/视频形式记录体验过程。我希望在测试中重点关注: ·硬件在[高精度手势识别/长时间佩戴舒适性/多环境适应性]等维度的表现·SDK与[Unity/Unreal/自研引擎]的兼容性及API设计合理性·为贵方提供[中英双语测试报告/竞品对比分析/开发者社区答疑]等额外支持附件中附上我的[个人技术博客链接/Github主页/代表性项日案例],如需进一步沟通,可随时通过[电话/邮箱]联系。期待能与Manus共同推动行业边界! 顺颂商祺, [您的全名] [联系方式] [个人网站/领英主页] 另外考虑到官方发布会的喜爱,建议优先使用英文的申请Dear Manus Team, I am [Your Name], currently serving as [Your Position, e.g., XR Technology Lead/Smart Hardware Development Engineer] at [Company/Institution Name], and I am also a core contributor to [Relevant Community/Open-Source Project Name]. After learning about Manus's innovative direction, I am convinced that this technology will redefine [Specific Field, e.g., Human-Computer Interaction/Metaverse Access/Rehabilitation Medicine, etc.]. I am eager to participate in the beta testing as a developer and provide in-depth feedback. My relevant experience may be valuable to your team: 1. **Technical Background**: With [X] years of experience in [AR/VR/Smart Hardware Development], I have led the development of [Brief Project Name and Achievements, e.g., "Wearable Gesture Recognition System Based on Flexible Sensors" or "SDK Optimization for a Brand's VR Gloves"]. I have hands-on experience tackling technical challenges such as [Sensor Data Fusion/Low-Latency Interaction/Biomechanical Analysis]. 2. **Scenario Insights**: I am currently advancing [Specific Project or Research Direction, e.g., "XR Remote Collaboration Solution for Industrial Scenarios" or "Gesture Tracking Applications in Neurorehabilitation"]. Manus's [Specific Technical Feature] could precisely address the [Specific Problem or Bottleneck] we are facing. 3. **Communication Capabilities**: I have [X] thousand followers on [Technical Community Platform/Social Media Name] and have authored a review report for [A Well-Known Hardware Product] with over [X] views. I am willing to document my testing experience through articles/videos during the beta period. I hope to focus on the following during the testing: - Hardware performance in areas such as [High-Precision Gesture Recognition/Long-Term Wear Comfort/Multi-Environment Adaptability]. - SDK compatibility with [Unity/Unreal/Proprietary Engine] and the rationality of API design. - Providing additional support such as [Bilingual Test Reports (Chinese/English)/Competitive Analysis/Developer Community Q&A]. Attached are my [Personal Tech Blog Link/Github Profile/Representative Project Cases]. If further discussion is needed, feel free to contact me via [Phone/Email]. I look forward to working with Manus to push the boundaries of the industry! Best regards, [Your Full Name] [Contact Information] [Personal Website/LinkedIn Profile] 账号申请完,就能登录开启Manus之旅了
-
Manus 比起传统的AI Agent厉害在哪里?为什么能继deepseek之后引起这么大轰动?
-
【案例共创】ESC基于RAGFlow和DeepSeek构建本地问答知识库一、案例介绍在人工智能技术飞速发展的当下,企业知识库智能化正成为提升运营效率的核心路径。DeepSeek 几乎家喻户晓,而 RAGFlow 是一个基于深入文档理解的开源RAG(检索增强生成)引擎。当与LLMs集成时,它能够提供真实的问题回答功能,并由来自各种复杂格式数据的有理有据的引用支持。本次我们基于ESC使用 Docker 部署RAGFlow,并使用 ollama 部署 DeepSeek R1 模型和 bge-m3 嵌入模型,体验 RAGFlow 的知识库、对话、Agent等功能,通过RAGFlow的智能文档解析与DeepSeek大语言模型的精准推理能力,构建具备多源异构数据处理、语义深度理解及动态知识更新特征的问答知识库、Agent。二、案例用时本案例总时长预计120分钟。三、案例流程 说明:通过ECS中安装dokcer部署ragflow通过ECS中docker部署ollama来运行deepseek通过配置ragflow来调用deepseek-r1模型能力用过通过公网ip访问ECS从而体验ragflow+deepseek四、资源总览云资源消耗/时时长ECS(含公网IP、磁盘等)0.9885120min合计:1.977元五、实践步骤0. 购买ECS配置如下:bash计费模式: 按需计费区域: 西南-贵阳一可用区: 随机分配CPU架构:x86计算实例规格:通用计算增强型 | x1e.4u.16g | 4vCPUs | 16GiB镜像: 公共镜像-Ubuntu 24.04 server 64bit(10GiB)磁盘: 通用型SSD 50G弹性公网IP:现在购买-全动态BGP-按带宽计算-5Mbit/s-随实例释放云服务器名称:ecs-ragflow密码:RagFlow@123使用时长:设定删除时间为 8 小时之后购买数量: 1清单链接:https://www.huaweicloud.com/pricing/calculator.html?shareListId=267c3c60fc6411efa933bd915e6892f51、安装 RAGFlow1.1 安装 Docker CE 和 Docker Compose打开终端,新建 install-docker.sh:bash# 查看系统uname -alsb_release -a# 准备安装 dockercd ~pwdmkdir RAGFlowcd RAGFlowvi install-docker.sh写入以下脚本到 install-docker.shbash#!/bin/bash# 定义日志文件路径LOGFILE="/var/docker-install.log"# 将标准输出和错误输出重定向到日志文件,同时显示到终端exec > >(tee -a "$LOGFILE") 2>&1# 设置DEBUG模式下的时间戳输出格式trap '{ set +x; } 2>/dev/null; echo -n "[$(date -Is)] "; set -x' DEBUG# 下载并安装 docker CE 和 docker composeecho "开始安装 Docker CE 和 Docker Compose..."# 添加Docker官方GPG密钥curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -echo "已添加 Docker GPG 密钥"# 添加Docker软件源echo "" | sudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"echo "已添加 Docker 软件源"# 更新软件包列表echo "正在更新软件包列表..."echo "y" | sudo apt-get update# 安装Docker CE和Docker Composeecho "正在安装 Docker CE 和 Docker Compose..."echo "y" | sudo apt-get install docker-ce docker-composeecho "Docker 安装完成"# 配置docker镜像仓库为华为云镜像echo "正在配置华为云镜像源..."sudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.json# 重启docker服务使配置生效echo "正在重启 Docker 服务..."sudo systemctl restart dockerecho "Docker 配置完成"接着运行 docker 安装脚本:bashsudo bash ./install-docker.sh我们查看版本发现 docker-compse 版本有点低,可能会影响后续的安装,因此尝试升级 docker-composebashdocker -vdocker-compse -v升级 docker-compose:bash# 先看看 docker-compose 的路径whereis docker-compose# 备份一下sudo mv /usr/bin/docker-compose /usr/bin/docker-compose.bak# 下载对应系统的 docker-composewget https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -O docker-compose# 如果速度慢可以尝试使用加速源,如 https://hub.gitmirror.com/、https://github.moeyy.xyz/、https://ghfast.top/# wget https://hub.gitmirror.com/https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -O docker-compose# 也可以自行去 github 下载: https://github.com/docker/compose/releases# 替换 docker-composesudo cp ./docker-compose /usr/bin/docker-compose# 加权限sudo chmod +x /usr/bin/docker-compose# 验证docker-compose -v1.2 安装 RAGFlow先设置一下最大虚拟内存。vm.max_map_count该值设置进程可能拥有的内存映射区域的最大数量。它的默认值是65530。虽然大多数应用程序需要的映射少于一千个,但减小此值可能会导致异常行为,并且当进程达到限制时,系统将抛出内存不足错误。RAGFlow v0.17.0使用Elasticsearch或Infinity进行多次调用。正确设置vm.max_map_count的值对于Elasticsearch组件的正常运行至关重要。bash# 检查vm.max_map_count的值sysctl vm.max_map_count# 如果小于 262144 则至少设置为 262144sudo sysctl -w vm.max_map_count=262144接着安装 RAGFlowbash# 下载源码git clone https://github.com/infiniflow/ragflow.git# 如果下载比较慢请尝试使用镜像加速,如:# git clone https://ghfast.top/https://github.com/infiniflow/ragflow.gitcd ragflow/docker# 切换最新稳定分支 (截止 20205-03-08 为 0.17.0)git checkout -f v0.17.0git branch我们可以修改 .env 启用全量版本(非必须,可无须修改直接使用 slim 版本),并设置 docker 镜像源:bashsudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.jsonRAGFlow镜像标签镜像大小(GB)是否包含嵌入模型和Python包是否稳定v0.17.0≈9✔️稳定版本v0.17.0-slim≈2❌稳定版本nightly≈9✔️nightly 构建不稳定nightly-slim≈2❌nightly 构建不稳定接着通过 docker-compose 启动 RAGFlow,全量的镜像约 9G,安装稍微慢些,需要耐心等待大约10分钟bash# 拉取镜像并启动(默认不包含 embedding 模型, 可以修改 .env 配置,选为华为云镜像v0.17.0 )# vi .env 找到对应位置进行修改docker-compose -f docker-compose.yml up -d# 如果minio拉取不顺,请尝试切换镜像源,需修改 docker-compose-base.yml 的:quay.io 为 quay.m.daocloud.io# 查看日志docker-compose logs -f ragflow-server# 查看端口情况netstat -nptl2. 访问本地 RAGFlow并配置模型RAGFlow是一个RAG引擎,需要与大模型服务一起搭配使用,实现本地、无幻觉的问答功能。RAGFlow支持大多数主流LLMs。2.1 访问本地RAGFlow 并注册账号登录如本次案例中 ecs-ragflow 的 ip 为1.95.184.111 则访问: http://1.95.184.111/login ,注册账号即可使用 RAGFlow。登录之后的主界面如下:⚠️本地模型为选配,同样可以使用其他大模型API服务,比如 Mass、硅基流动等2.2 通过 Docker 安装 ollama首先我们设置docker镜像源,重启docker之后,通过docker拉取ollama镜像并运行bash# 设置 docker 镜像源sudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.jsonsudo systemctl restart dockersudo docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama2.3 安装 DeepSeek-R1 模型和 bge-m3 鉴于网络下载速度比较慢,我们拉取相对较小的 deepseek-r1:1.5b 和嵌入模型 bge-m3 (预计25分钟,具体看网络状况)bash# 拉取 deepseek-r1:1.5bsudo docker exec ollama ollama pull deepseek-r1:1.5b# 拉取 bge-m3sudo docker exec ollama ollama pull bge-m32.4 配置模型虽然RAGFlow和Ollama都是跑在同一台机器上,但由于分别使用了docker-compose和docker来部署,可能会导致网络不通的情况,那我们可以通过暴露 11434 ollama的端口来提高大模型服务。于是,我们在模型提供商选择Ollam之后分别配置了嵌入模型 bge-m3 和聊天模型deepseek-r1:1.5b。接着并在设置--系统模型设置中配置好聊天模型和嵌入模型。3. 简单使用接下来,我们简单体验一下RAGFlow 提供的功能,分别是知识库、聊天、搜索、Agent。3.1 知识库功能体验点击知识库,我们创建了一个名为ModelArts助手的知识库,传入了几个pdf文件作为本地知识库。在RAGFlow中知识库被称为数据集,我们可以上次多个文件作为数据集,并通过不通的解析方法将文档进行处理如切片、Q/A等。解析成功的文档可以在后续功能中作为知识库引入。3.2 聊天功能体验我们创建了ModelArts助手的助理,可以对助理进行配置如基本信息、关键词分析、模型参数设置等,并选取知识库作为回答语料。我们一个“如何快速入门”的简单问题开始,AI助理根据挂载的知识给了相关的回答。3.3 搜索功能体验在RAGFlow中,还有搜索功能,类似于传统的搜索引擎给出结果并添加了智能回答和思维导图。3.4 Agent功能体验最后我们来体验Agent功能,这里我们使用的是预置的 text2sql。Agent 会提供一个工作流编排界面,并提供运行测试功能,我们发现Agent也是可以作为单独的页面嵌入到其他网站,简单地要Agent给出“用户转化率”,它基于 deepseek-r1 模型,因此也有思考能力,最终它生成了一段完整的 SQL 语句。至此,案例实践就结束了,记得释放资源哦!记得释放资源哦!记得释放资源哦!我正在参加【案例共创】第2期 构建开发场景最佳实践/体验评测,创作案例文章cid:link_0
-
杭州宇树科技4足机器人的技术难点在哪?好几年前不是都有机器狗了
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签