1 概述

1.1 背景介绍

在电子商务领域,售前和售后服务是确保客户满意度和提升品牌忠诚度的重要环节。随着互联网技术的发展和消费者购物习惯的变化,线上购物已成为主流。然而,线上购物也带来了一系列挑战,如商品信息不对称、物流配送问题以及退换货流程复杂等。这些问题直接影响了消费者的购物体验和商家的销售业绩。 通过本案例,可以使开发者掌握如何在ModelArts一键部署模型,和在云主机调用API的实现商品问题功能,从而更熟练的使用AI开发工具。

1.2 适用对象

  • 对AI感兴趣的开发者

1.3 案例时间

本案例总时长预计40分钟。

1.4 案例流程

111111111111111.png{{{width="50%" height="auto"}}}

说明:

① 用户登录ModelArts部署模型; ② 通过CodeArts IDE部署项目代码; ③ 调用ModelArts的API实现问答功能 ; ④ 浏览器中访问项目测试效果。

1.5 资源总览

本案例预计花费总计21.72元,案例完成后请及时释放资源,避免产生多余的费用。

资源名称 规格 单价(元/时) 时长(分钟)
开发者空间-云主机 基础版本 0 40
ModelArts 西南贵阳一区 21.72 40

2 ModelArts部署模型

2.1 部署模型

1. 进入开发者空间,在浏览器中登录华为云,在顶部选择产品-人工智能-AI开发平台ModelArts

be65967154fd921aaffcee49be82c2fa.PNG

2. 进入到ModelArts主页后点击控制台,进入到控制台界面。

10c3f5659c5693af90f33184614ff3eb.PNG

3. 进入后点击右上角AI Gallery,进入AI Gallery社区。

92e3ac5f8627a77afe03a42db65c9356.PNG

4. 点击上方的模型,打开模型列表页面,在其中选取自己所需要的模型,本案例中选择的是Qwen1.5-7B-ascend模型。Qwen1.5是一个语言模型系列,包括不同模型大小的解码器语言模型,支持多语言和长上下文理解,在模型性能、指令跟随及系统信息对齐方面显著优化,提供多种参数规模并开源了量化方案。 371380bd3650c9cb6f33c51cdac10758.PNG

5. 在打开的详情页面,点击部署下的推理服务,打开推理服务设置页面。

bb44621dbd10e93efcafe49432b5e707.PNG

按如下配置设置服务: - 服务名称:qwen1.5 - 安全认证:公开 - 运行设置-计算规格选择:贵阳一

设置完成后,单击**启动部署**,确认订单信息后开始部署。

![080e735714201df92c0123c155cb4d34.PNG](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250325032116.60057913348861892095215264281611:50560324040615:2421:271F2ABA827599889D4F450E5CC539A450B17BB3E0EE13CB6B51E893983378DF.png?customIdMd=6efaf48bceb045d4856f6718260ee2bd)

部署完毕后,返回到[在线推理服务页面](https://pangu.huaweicloud.com/gallery/infer-list.html?ticket=ST-83304151-Li9FJtwRSmJdmIEqKyFvjgkB-sso),点击右侧**接口调用**,获取模型调用API。

![712558410c4ac0e4b90ce6133236456f.PNG](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250325032120.40689462528989157372452819807741:50560324040615:2421:02B79BAC8E164A43E2E49834734CEF394741474C1847DCF1C8251D6F4719BF70.png?customIdMd=aa3672882eeb43869dd1d6d2457bf900)

**注:此页面保留,在后续操作步骤中需要使用到。**

![89eae96fb39371e8fe207da669d7c851.PNG](https://fileserver.developer.huaweicloud.com/FileServer/getFile/spaceguides/000/fe8/1fa/09329602ec000fe81faac006ed7069fa.20250325032124.13172140967427570414737026763908:50560324040615:2421:0C4C03FD82B6FA8539E079AD8412F6E0BED787DC237CF058A7120D5599AE6701.png?customIdMd=e3b194af00274b8b997f18d8627cc356)

2.2 设置X-Aping-AppCode

打开认证管理,点击鉴权管理

83d8827f81a24040b669c78a2a1555e4.PNG

区域选择西南-贵阳一,点击创建AppCode,填写自己的描述,点击确定

保留当前页面,在后续操作中会用到。

f9215a3fc9f6c7e17b7c601ec5a8b90a.PNG

3 部署电商项目

3.1 安装配置MySQL

MySQL是一款高性能关系数据库,电商平台使用MySQL做数据持久化存储。

首先,安装MySQL、启动并查看服务状态。打开终端执行以下的命令:

0ad3f774460e69f66f5bce93c5816abc.PNG

sudo apt update
sudo apt install -y mysql-server-8.0

sudo systemctl start mysql
sudo systemctl status mysql

f60307d65de8df1f0f5d149c0c3494c5.PNG

确认activerunning状态,即可按q退出查看页面。

终端输入以下命令,登录MySQL。

sudo mysql -uroot

dda3a9ec38121cf19f90a646dea6ad1e.PNG

登陆成功后,继续在终端输入以下命令更改默认MySQL密码。

终端出现OK字样表示更改完毕。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password;
alter user root@localhost identified with mysql_native_password by '123456';

f30f3f8e659caae46b6bb6e802cf2dbe.PNG

注意:其中123456为配置的数据库密码,后面登录的时候需要使用。

在终端输入以下命令,进行权限刷新。

flush privileges;

e5701b3889c6a235621535f8f4fedf97.PNG

创建数据库。

CREATE DATABASE \`e-commerce\`;

6d66ffb1f0797c6a28f9446a5de2fe13.PNG

继续输入命令退出MySQL客户端。

quit

退出后输入以下命令重新登陆MySQL,验证密码(密码为上面步骤中输入的)。

sudo mysql -h 127.0.0.1 -uroot -p

输入完命令后按下回车键,然后输入密码,注:输入密码时,密码状态为隐藏状态,输入完毕后直接按回车键就可以

1e3bbdbd659b505f119b117a6abd56b4.PNG

验证成功后,继续输入quit退出MySQL。

3.2 下载项目代码

重新打开一个终端,依次将以下代码复制到终端中获取项目代码。

cd /home/developer/
#前端代码
git clone https://gitcode.com/CaseDeveloper/E-Commerce-QA-Web.git
#后端代码
git clone https://gitcode.com/CaseDeveloper/E-Commerce-Python.git

在启动前端代码时,我们需要将开发者空间中的Node.js进行升级,命令如下:

sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

4b15f5fe9139858d6fbf015657db436d.PNG

如果出现长时间未响应或超时情况,请多尝试几次,安装成功后会出现如上图内容。

成功后重新打开一个终端,执行以下命令。

nvm install 22

47c32f4baae1ab2c543fded5f9c25abc.PNG

3.3 启动项目

1. 打开CodeArts IDE for Python,点击打开工程,选择下载好的前端项目文件夹,点击打开按钮,等待加载完毕。

5e080c332a6af6fd6c4f5e7e8c83467f.PNG

2. 点击下面终端按钮,输入以下命令启动前端项目。

00ff69a8fe4dc046d6ab2a21e77f01a1.PNG

npm install
nvm install 20
npm run dev

出现下图所示表示启动成功:

0e00734ef5d8c9bb7f578d5cdd2c469f.PNG

4 电商平台问答助手功能实现

4.1 API调用

点击右上角文件->打开项目

44e5ccfd746e881d4e7a45c46764dde9.PNG

点击E-Commerce-Python->打开->新窗口

737d10cae2a2a67d0883d98a504c1211.PNG

新窗口打开后会出现一个创建虚拟环境,这里按照图示进行配置。

41dfbf475c1a418ca31b84615046a116.PNG

修改utils/ai.py路径下的文件,将RobotAI这个类的代码全部删掉,替换成下面的代码:

bff00d0c2b634c0b06e80f6e106e85b8.PNG

import os
import requests
from typing import Any, Dict, List
import logging

# 设置日志配置
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# API配置
API_URL = "https://gallery.cn-southwest-2.myhuaweicloud.com/v1/gallery/xxxxx"
headers = {
    "Content-Type": "application/json",
    "X-Apig-AppCode": os.getenv("HUAWEI_APP_CODE", "xxxxxx")
}

class RobotAI:
    def __init__(self):
        self.predefined_responses = {
            "你是谁": "我是本商店的智能客服,可以帮助您解答关于本店商品的问题。",
            "你是干什么的": "我是本商店的智能客服,可以帮助您解答关于本店商品的问题。",
            "你能做什么": "我可以帮助您查找商品信息、解答常见的问题等?",
            "你好": "你好!有什么我可以帮助你的吗!",
            "再见": "再见!助您一切顺利。",
            "退出": "再见!助您一切顺利。"
        }

    def query_api(self, prompt: str) -> Dict[str, Any]:
        """
        从智能机器人获取回复

        :param prompt: str. 用户提问
        :return: dict. API响应内容或错误信息
        """
        payload = {
            "prompt": prompt,
            "max_tokens": 100,
            "top_k": -1,
            "top_p": 1,
            "temperature": 0,
            "ignore_eos": False,
            "stream": False
        }
        try:
            logger.info(f"Sending request to {API_URL} with payload: {payload}")
            response = requests.post(API_URL, headers=headers, json=payload)
            response.raise_for_status()
            logger.info(f"Received response: {response.json()}")
            return response.json()
        except requests.exceptions.RequestException as e:
            logger.error(f"请求错误: {e}")
            return {"error": str(e)}

    def handle_user_input(self, user_input: str) -> str:
        """
        处理用户输入并返回适当的回答

        :param user_input: str. 用户输入
        :return: str. 智能客服的回答
        """
        # 检查用户输入是否在预定义的问题中
        if user_input.lower() in self.predefined_responses:
            return self.predefined_responses[user_input.lower()]

        # 调用 API 获取答案
        api_response = self.query_api(user_input)

        # 安全地检查API响应是否有错误
        if "error" in api_response:
            error_message = api_response.get('message', '未知错误')
            logger.error(f"API错误: {error_message}")
            return f"API错误: {error_message}"

        # 直接提取并返回API响应中的文本部分
        text_list = api_response.get("text", [])
        if text_list and isinstance(text_list, list) and len(text_list) > 0:
            return text_list[0]
        else:
            logger.warning("无法从API响应中获取有效回答")
            return '无法获取回答'

def main():
    robot_ai = RobotAI()
    print("欢迎来到智能客服!")

    while True:
        user_input = input("您: ")

        # 处理退出命令
        if user_input.lower() in ["退出", "再见"]:
            print("智能客服:", robot_ai.handle_user_input(user_input))
            break

        response = robot_ai.handle_user_input(user_input)
        print(f"智能客服: {response}")

if __name__ == '__main__':
    main()

替换结果如下图:

将API_URL替换为我们上面2.1步骤中部署的模型地址。

b1d74e92c1c324e915a921d9f29fc78f.PNG

将2.2步骤中获取的APICode复制下来,替换代码中“xxxxx”。

bbf2b70a91833e32b35fc4d35628f2b0.PNG

4.2 修改ai.py文件

在E-Commerce-Python工程左侧目录中依次代开app->api->ai.py文件,对文件进行修改。

将代码中51行代码进行如下替换:

result = robot.query_api(question)

ab6c659b5301fc86ca1634e87efe83ca.PNG

替换完成后将以下命令复制到终端下载所需要的环境。

pip install flask flask-restx flask-sqlalchemy requests pymysql

95d13fcf06f82a0902216e3395abed8e.PNG

下载完毕后在终端输入以下命令运行程序。运行完毕后会生成一个网址ip,按住ctrl键,点击打开。

python3 run.py

11e837267978bfaa02227b9a89a5ab2d.png

5 测试效果

5.1 打开浏览器测试效果

打开前端项目,按住Ctrl键,点击链接进入电商平台。

a2e92d05647c4886901945a9eb8dd5ed.PNG

右上角点击个人->注册,进行账号注册。

650dada723708e60f9b7c2a59fcaeda9.png

输入账号、姓名、密码->点击注册

b18fcfa90ce45d53dd7c9eba6b16f12c.png

点击电商小助手测试效果。

f163b5415710892489df4d4a81b5d2e4.png

测试效果如下:

3fe46ed87140450c9151c0d2e55a63d0.png

6 释放资源

6.1 删除ModelArts资源

在浏览器中打开华为云在线推理服务,点击更多->停止服务,然后点击确定48b34d4442fdb0ac506a8e20977527b6.PNG

08059bf8509230372e08d74b9ba823d3.PNG

点击删除服务,会出现删除服务,点击确定即可。

59ed8d9c86a729bbf10078e2970244f2.PNG

至此,CodeArts IDE调用API实现电商平台问答助手内容全部完成。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐