-
自然语言转SQL用传统AI小模型+模式匹配,效果好,还是用大模型效果更好
-
自然语言转SQL有哪些开源的产品,准确率咋样
-
89% 的美国学生承认使用 AI 做作业!你们觉得AI 对教育界而言是好还是不好?
-
大语言模型如果靠的是单词下一个词的概率来回答,那么如果发现回答错误,怎么纠正?
-
大模型靠概率来回答问题,那么怎么保证回答的准确?
-
AI对程序员的利与弊,谈谈你们的看法
-
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
-
基于华为开发者空间使用 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. 据说点赞收藏的小伙伴,下周都会收到涨薪通知单~
-
你们怎么看最近火爆 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实现智能代码生成助手 --金融领域代码自动化实践
上滑加载中
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签