-
大模型靠概率来回答问题,那么怎么保证回答的准确?
-
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实现智能代码生成助手 --金融领域代码自动化实践
-
一、技术融合价值与背景华为云与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
上滑加载中
推荐直播
-
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步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签