CodeArts IDE调用API实现电商平台问答助手
CodeArts IDE调用API实现电商平台问答助手
1 概述
1.1 背景介绍
在电子商务领域,售前和售后服务是确保客户满意度和提升品牌忠诚度的重要环节。随着互联网技术的发展和消费者购物习惯的变化,线上购物已成为主流。然而,线上购物也带来了一系列挑战,如商品信息不对称、物流配送问题以及退换货流程复杂等。这些问题直接影响了消费者的购物体验和商家的销售业绩。 通过本案例,可以使开发者掌握如何在ModelArts一键部署模型,和在云主机调用API的实现商品问题功能,从而更熟练的使用AI开发工具。
1.2 适用对象
- 对AI感兴趣的开发者
1.3 案例时间
本案例总时长预计40分钟。
1.4 案例流程
{{{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。

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

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

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

按如下配置设置服务: - 服务名称:qwen1.5 - 安全认证:公开 - 运行设置-计算规格选择:贵阳一
设置完成后,单击**启动部署**,确认订单信息后开始部署。

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

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

2.2 设置X-Aping-AppCode
打开认证管理,点击鉴权管理。

区域选择西南-贵阳一,点击创建AppCode,填写自己的描述,点击确定。
保留当前页面,在后续操作中会用到。

3 部署电商项目
3.1 安装配置MySQL
MySQL是一款高性能关系数据库,电商平台使用MySQL做数据持久化存储。
首先,安装MySQL、启动并查看服务状态。打开终端执行以下的命令:

sudo apt update
sudo apt install -y mysql-server-8.0
sudo systemctl start mysql
sudo systemctl status mysql

确认active为running状态,即可按q退出查看页面。
终端输入以下命令,登录MySQL。
sudo mysql -uroot

登陆成功后,继续在终端输入以下命令更改默认MySQL密码。
终端出现OK字样表示更改完毕。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password;
alter user root@localhost identified with mysql_native_password by '123456';

注意:其中123456为配置的数据库密码,后面登录的时候需要使用。
在终端输入以下命令,进行权限刷新。
flush privileges;

创建数据库。
CREATE DATABASE \`e-commerce\`;

继续输入命令退出MySQL客户端。
quit
退出后输入以下命令重新登陆MySQL,验证密码(密码为上面步骤中输入的)。
sudo mysql -h 127.0.0.1 -uroot -p
输入完命令后按下回车键,然后输入密码,注:输入密码时,密码状态为隐藏状态,输入完毕后直接按回车键就可以。

验证成功后,继续输入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

如果出现长时间未响应或超时情况,请多尝试几次,安装成功后会出现如上图内容。
成功后重新打开一个终端,执行以下命令。
nvm install 22

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

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

npm install
nvm install 20
npm run dev
出现下图所示表示启动成功:

4 电商平台问答助手功能实现
4.1 API调用
点击右上角文件->打开项目。

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

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

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

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步骤中部署的模型地址。

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

4.2 修改ai.py文件
在E-Commerce-Python工程左侧目录中依次代开app->api->ai.py文件,对文件进行修改。
将代码中51行代码进行如下替换:
result = robot.query_api(question)

替换完成后将以下命令复制到终端下载所需要的环境。
pip install flask flask-restx flask-sqlalchemy requests pymysql

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

5 测试效果
5.1 打开浏览器测试效果
打开前端项目,按住Ctrl键,点击链接进入电商平台。

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

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

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

测试效果如下:

6 释放资源
6.1 删除ModelArts资源
在浏览器中打开华为云在线推理服务,点击更多->停止服务,然后点击确定。 

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

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

所有评论(0)