目录
一、概述
1.1 适用对象
1.2 案例流程
案例流程如下图所示:
1.3 资源总览
二、环境和资源准备
2.1 领取华为云MaaS平台商用大模型Tokens福利
2.2 获取百度地图API密钥
2.3 创建云开发环境
2.4 准备开发环境
三、构建智能旅行手账应用
3.1 部署项目代码
3.2 调试和部署项目代码
1)项目结构说明
2)单元测试
准备测试图片
运行单元测试
3)运行主程序
4)查看结果
四、释放资源
4.1 删除云开发环境
4.2 停止API服务
五、扩展资料说明
5.1 相关技术文档
5.2 扩展功能建议
附录:常见问题
Q1: 图片没有GPS信息怎么办?
Q2: 如何提高生成速度?
Q3: 支持哪些图片格式?
Q4: 如何自定义旅行手账样式?
本文首发自华为云论坛:https://bbs.huaweicloud.com/forum/thread-0212720524598951942-1-1.html
https://bbs.huaweicloud.com/forum/thread-0212720524598951942-1-1.html
一、概述
1.1 适用对象
- AI应用开发者
- Python开发者
- 旅游爱好者
- 想要学习多模态大模型应用的开发者
1.2 案例流程
本案例将使用CodeArts代码智能体生成程序完成以下工作:
案例流程如下图所示:

说明:
1.3 资源总览
本案例预计花费2元(假设照片不超过10张,分析一张手机照片一般需要1.5千tokens)。体验完成后请及时释放资源,避免产生多余的费用。
| 华为云ModelArts API | DeepSeek-R1 | 1 | 30 |
| 华为云ModelArts API | Qwen2.5-VL-72B | 输入:¥0.016 / 千tokens 输出:¥0.048 / 千tokens | 30 |
| 百度地图API | 逆地理编码 + 景点搜索 | 免费额度 | 30 |
| 云开发环境 | Python 3.7+ | 免费 | 30 |
二、环境和资源准备
2.1 领取华为云MaaS平台商用大模型Tokens福利
登录华为开发者空间,参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中的“二、 领取MaaS平台商用大模型Tokens”章节内容,领取MaaS平台DeepSeek-R1商用大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通商用模型服务,最后获取到模型的API地址、模型名称和API Key。


开通商用模型服务,获取以下信息:
- API地址:https://api.modelarts-maas.com/v1/chat/completions
- 视觉模型名称:qwen2.5-vl-72b
- 文本模型名称:DeepSeek-R1
- API Key:您的API密钥
注意:记录API Key、API地址以及模型名称留作后面步骤使用。
2.2 获取百度地图API密钥
访问百度地图开放平台:https://lbsyun.baidu.com/
注册并登录账号
创建应用,获取AK(API Key)

开启"逆地理编码"和"地点检索"服务权限,前者将GPS坐标转换为地址信息,后者查找该地址最可能的旅游景点,从而获得照片所对应的景点信息

注意:记录API Key留作后面步骤使用。
2.3 创建云开发环境
参考案例《基于华为开发者空间 – 云开发环境(容器)搭建CodeArts代码智能体》中的“二、VS Code远程连接云开发环境(容器)”和“三、搭建CodeArts代码智能体”步骤,完成VS Code远程连接云开发环境(容器)并搭建CodeArts代码智能体。
2.4 准备开发环境
本案例使用Python 3.7+,需要安装以下依赖:
pip install Pillow==10.0.0 requests==2.31.0
三、构建智能旅行手账应用
3.1 部署项目代码
在CodeArts代码智能体对话框中输入如下问题,使智能体自动构建智能旅行手账程序:
# 华为云智能旅行手账
# 功能
使用Python语言开发程序,具备以下功能:
1. 读取指定目录中的图片,使用视觉大模型进行图片内容分析,利用文本大模型针对图片内容和图片的地理位置信息、拍摄时间等生成旅游手账。
2. 地理位置信息逆解析采用百度地图API,解析后在该地点找到最近的旅游景点。
3. 旅游手账格式为HTML,语言风格类似小红书的游记。
4. 生成以下单元测试程序,方便调试程序
* 获得图片中地理位置信息并进行逆解析的单元测试程序
* 视觉理解的单元测试程序
* 文本生成的单元测试程序
# 配置
* 数据目录:./data
* 视觉模型配置信息
APIKey: <2.1节获得的API Key>
model: qwen2.5-vl-72b
url: https://api.modelarts-maas.com/v1/chat/completions
* 文本大模型配置信息
APIKey: <2.1节获得的API Key>
model: DeepSeek-R1
url: https://api.modelarts-maas.com/v1/chat/completions
* 百度地图API
APIKey: <2.2节获得的API Key>
此时可以看到,智能体开始自动构建任务步骤:生成开发方案、编写代码与安装依赖,全程不需要我们操作。如遇到智能体提问,可根据实际情况回答或确认。
注意:这里我们让CodeArts代码智能体生成3个单元测试,因为这样复杂的程序,CodeArts代码智能体很难一次性生成正确,采用单元测试程序可以方便对程序中重要的环节进行单独测试,提高调试效率。
3.2 调试和部署项目代码
1)项目结构说明
项目生成后一般会包括以下模块(由于CodeArts代码智能体每次生成的程序都不完全相同,读者得到的结果可能与此处不是完全相同,但是大致应该差不多):
华为云智能旅行手账
├── config.py # 配置文件
├── exif_extractor.py # EXIF数据提取
├── baidu_map_service.py # 百度地图服务
├── vision_service.py # 视觉模型服务
├── text_service.py # 文本生成服务
├── html_generator.py # HTML生成器
├── main.py # 主程序
├── requirements.txt # 依赖包
├── data/ # 图片数据目录
└── tests/ # 单元测试
├── test_location.py # 位置解析测试
├── test_vision.py # 视觉理解测试
└── test_text.py # 文本生成测试
2)单元测试
准备测试图片
- 将旅行照片放入 ./data 目录
- 支持的格式:.jpg, .jpeg, .png, .heic, .webp
- 建议照片包含GPS信息和拍摄时间
运行单元测试
测试位置解析和百度地图服务:
python tests/test_location.py
测试视觉理解功能:
python tests/test_vision.py
测试文本生成功能:
python tests/test_text.py
3个单元测试程序运行过程中如果出现错误,将错误信息发送给CodeArts代码智能体,它会自动完成修复工作。全部单元测试都通过之后,一般主程序也没有什么问题了。
3)运行主程序
输入如下命令执行主程序
python3 main.py
程序将自动:
4)查看结果
生成的HTML文件将保存在当前目录,文件名格式为:travel_journal_YYYYMMDD_HHMMSS.html
在浏览器中打开HTML文件,即可查看精美的旅行手账。下面是部分例子:




四、释放资源
4.1 删除云开发环境
进入云开发环境列表,选择环境容器,点击"删除"按钮。在对话框中确认删除,释放计算资源。
4.2 停止API服务
如果不再需要使用华为云ModelArts API和百度地图API,可以在相应的控制台停止服务,删除API Key,避免产生额外费用。
五、扩展资料说明
5.1 相关技术文档
- 华为云AI开发平台ModelArts文档
- 百度地图API文档: https://lbsyun.baidu.com/faq/api?title=webapi/guide/webservice-geocoding-abroad
- Pillow文档:https://pillow.readthedocs.io/
- Python requests库文档:https://docs.python-requests.org/
5.2 扩展功能建议
附录:常见问题
Q1: 图片没有GPS信息怎么办?
A: 程序会自动检测GPS信息,如果没有GPS,仍然可以生成旅行手账,只是缺少地理位置信息。
Q2: 如何提高生成速度?
A: 可以在配置文件中调整 timeout 参数,或者使用更快的模型版本,比如DeepSeek-V3。
Q3: 支持哪些图片格式?
A: 支持 .jpg, .jpeg, .png, .heic, .webp 等常见图片格式。
Q4: 如何自定义旅行手账样式?
A: 可以修改 html_generator.py 中的CSS样式,自定义页面布局和颜色。
我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践 https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557

