-
在对话中,AI会因为遵守规范( [ERROR] 任务终止与工具调用强制规范),导致反复执行最后的总结任务,目前最多达到了三次。规范内容如下:🚨 [ERROR] 任务终止与工具调用强制规范(必须严格遵守) 当你尚未完成用户任务时: ➤ 必须主动调用合适的工具继续执行,不得停止、不得仅输出结论或空内容。 当你确信任务已完成时: ➤ 必须先提供清晰、完整的任务总结(包括关键结果或行动回顾), ➤ 然后在总结的最后一行末尾添加 🎯 以正式结束任务。 [ERROR] 严禁以下行为: ❌ 单独返回 🎯; ❌ 在无总结的情况下输出 🎯; ❌ 未调用工具却声称任务完成。 ⚠️ 违反上述任一规则将被视为 [ERROR] —— 请始终确保:总结 + 🎯 = 合法终止,否则继续使用工具推进。在第一次修改完规范后,ai从反复进行三次总结下降到了两次在第二次修改完规范后,ai的回复变成了:进行两次总结变成了不等我给出回复,又开始理解规范了第三次对话开始前,我手动结束了对话
-
一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例基于华为开发者空间+CodeArts Doer+华为云MaaS平台商用大模型Tokens,完成一个春节祝福语生成应用的开发1.2 适用对象个人开发者高校学生1.2 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts Doer代码智能体;使用CodeArts Doer代码智能体,自动生成春节祝福语应用;用户使用浏览器体验春节祝福语生成应用,浏览器接收到用户输入的prompt发送给华为云MaaS平台使用tokens调用大模型服务,大模型返回结果给浏览器显示给用户资源总览本案例预计花费1元。体验完成后请及时释放资源。资源名称规格单价(元)时长(分钟)华为开发者空间 - 云开发环境(容器)2vCPUs 4GiB免费30CodeArts代码智能体通用体验版免费30华为开发者空间 - DeepSeek-R1/V3千万Tokens代金券DeepSeek-R1-64K/DeepSeek-V3-64K1元30项目背景今天已经是农历小年夜了算是,明天就是除夕了,后天就是大年初一了,免不了朋友之间需要发送一些贺词之类的,那么现在AI这么发达有没有可能对于文学不是这么精通的我们,让AI帮我们写出一些与众不同的春节贺词呢,于是就想到了这么一个应用。实现思路最初的思路:通过MAAS调用deepseek模型随机生成对联,用户根据需要选择年份,系统会根据年份判断当年的农历年以及生肖生成对应生肖农历年主题的贺词祝福语,用户也可以根据不同场景例如用来发朋友圈,用来发微博,用来发贺词之类的告诉应用需要多少长度的贺词。应用也提供了三种不同风格的贺词让用户选择需要生成哪类风格的贺词。风格这块参考前一天做过的春联应用,分为现代创新类的、传统类的、古色古香类的三种风格,至于这三类风格的特点就交给AI去识别进行编写代码了。智能体实现的模型方面选择了最新的GLM-5进行体验,试下来效果还是非常满意的,虽然看不出和以前的GLM-4.7有什么区别,但是毕竟是新版本的,最近也比较火,那就用了。体验后的修改思路:后续在体验测试过程中思考到让智能体继续优化代码,改善结果显示区的风格,更加的仿真宣纸的视觉。第一次生成的时候右下角有一个新春大吉的印章,那就索性让智能体把这个印章也优化一下。最后的完善:突然想到如果都用书法体,不一定每个人都喜欢,于是又灵机一动让智能体再帮忙修改一下代码,让用户可以根据自己的需要选择需要的字体,有宋体、楷体、书法类的字体、草书。个人感觉应该覆盖了大部分的需求了。现在有了智能体后续要添加新支持的字体也是一个很方便的事情。除夕修改:考虑到有些用户为了视觉效果需要把生成的效果保存成图片,所以让智能体帮忙添加了一个保存成图片的按钮,实现把生成的结果保存成图片。顺便增加了一个微软雅黑的字体,增加外字体后为了视觉效果把所有的个性化选项都设置为下拉列表,这样看上去界面整洁一点。另外发现有时候生成的内容包含markdown语法和emoji信息,这个也让智能体帮忙去掉。这样生成出来的结果感觉更符合标准。最后思考了一下把原有的书法体从草书般的书法体改为有点正楷的书法体,同时去掉了楷体,感觉其实并不是很好看。初一修改:增加了印章自定义内容的功能以及增加一个拜年,考虑到有时候拜年可能不需要很长,简短精炼一点就好二、环境和资源准备2.1. VS Code远程连接云开发环境参考案例《华为开发者空间 - 云开发环境(容器)IDE插件远程连接操作指导》使用VS Code的Huawei Developer Space 插件,远程连接华为开发者空间云开发环境。2.2. VS Code安装CodeArts Doer代码智能体点击Extensions(插件)图标,搜索CodeArts Doer for Coding,点击Install(安装)安装插件:安装完成后,点击CodeArts Doer插件图标,点击HUAWEI ID login:点击Open(打开),打开外部网站:输入华为账号和密码,登录CodeArts Doer代码智能体CodeArts Doer代码智能体登录成功:首次使用CodeArts Doer代码智能体,会进入开通页面。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。返回VS Code测试CodeArts Doer代码智能体,输入问题:你好,请介绍自己!2.3. 设置Agent模式点击Agent,再点击右面的设置齿轮图标:全选所有设置点击返回后,即可使用CodeArts Doer代码智能体。2.4. 领取华为云MaaS平台商用大模型Tokens福利登录华为开发者空间,参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中的“二、 领取MaaS平台商用大模型Tokens”章节内容,领取MaaS平台DeepSeek-V3商用大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通商用模型服务,最后获取到模型的API地址、模型名称和API Key三、构建一个春节祝福语生成应用1.CodeArts Doer生成代码输入以下指令:使用python生成一个通过web页面可视化的春节祝福语生成应用,AI部分使用ModelArts Studio的API实现,为了系统安全考虑,API地址、model参数、API KEY的值都取环境变量,后期用户如果需要变更API也直接修改环境变量就可以实现变更,具体参数如下: API地址:取环境变量$API_URL的值 model参数:取环境变量$MODEL_NAME的值 API KEY:取环境变量$API_KEY的值 界面设计: 分为左面和右面,左面为个性化定制区,右面为效果显示区。效果显示区的风格设计的古色古香风格,最好有一个类似于宣纸一样的背景,祝福语生成在宣纸风格的画面上,显得更加的逼真。生成的祝福语的字体也使用类似于书法的字体显示。字体颜色使用黑色。 系统要实现的功能: 1.个性定制区设置一个文本框给用户输入年份,系统需要根据年份推断出今年农历是什么年,生肖是什么,后续的祝福词需要根据这个信息进行个性化生成。 2.个性定制区设置一个祝福语类别,主要有朋友圈,微博,新春贺词。主要区别朋友圈的话就不用很长用来发微信朋友圈的字数即可,微博的话,限制在140字以内。新春贺词的话主要用来海报之类的,这个可以写的字数多一点,内容丰富一点 3.个性定制区设置一个祝福语风格,主要有现代创新风格,古色古香风格,传统风格。 4.系统根据用户在个性定制区设置个性化定制传送给AI进行春节祝福语生成,生成完成后在效果显示区显示生成的祝福语。 5.设置一个复制按钮,用户可以把生成的春节祝福语复制到剪贴板粘贴到其他应用中。 程序设计完成后帮忙设置环境变量用来运行春节祝福语生成应用 $API_URL的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API地址 $MODEL_NAME的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的模型名称 $API_KEY的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API_KEY 环境变量设置在run.sh中使用export进行设置,不要使用文件存储相关key之类的信息。 新建一个文件夹chunjie用于存放生成的代码注:【2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API地址】这一段文字需要替换为上一节步骤中获取到的信息,并不是prompt里这么输入输入完成prompt后点击发送按钮,CodeArts Doer代码智能体就会自动创建项目文件并生成代码,这个过程中等待智能体生成好代码就好,整个过程根据项目大小大约需要几分钟到十几分钟都有可能,耐心等待就好。正好昨天上线了GLM-5的模型,今天正好来体验一下GLM-5的生成效果如何。项目结构chunjie/ ├── app.py # Flask 主应用 ├── lunar_utils.py # 农历和生肖计算工具 ├── requirements.txt # Python 依赖 ├── run.sh # 启动脚本 ├── static/ │ ├── css/ │ │ └── style.css # 样式文件(古色古香风格) │ └── js/ │ └── app.js # 前端交互逻辑 └── templates/ └── index.html # 主页面模板程序默认已经在run.sh文件中写入了环境变量,后续如需修改API配置,只需修改环境变量后重启服务即可:手动设置环境变量export API_URL="新的API地址" export MODEL_NAME="新的模型名称" export API_KEY="新的API密钥" 2.运行生成的代码运行代码:打开TERMINAL窗口,进入项目目录先安装依赖pip install -r requirements.txt运行代码python app.py点击Open in Browser(在浏览器中打开):主界面:体验过程生成一个马年古色古香风格的新春贺词生成一个马年现代创新风格的新春贺词生成一个马年传统风格的新春贺词进阶修改Prompt修改chunjie文件夹下的代码,做以下修改: 1.内容显示区的字体更改为更加古色古香的书法字体 2.内容显示区的背景修改为更加逼真的有立体风格的宣纸风格 3.内容显示区右下角的新春吉祥印章能否换成更加逼真的印章风格 4.应用页面整体跟着窗口自动缩放 应该已经有部分修改好了,已经修改过的就不用修改了把未完成的改好就好后续又想增加一个关键词又让智能体进行了一个修改在左面个性化定制区增加一个关键词,如果关键词内有内容,AI生成的新春贺词需要围绕关键词进行生成,如果关键词用户设为空,AI根据其他个性化设置的要求进行生成。修改后的主界面以“华为开发者”为关键词生成一个现代创新风格的新春贺词的效果增加一个让用户选择祝福语字体的选择prompt检查chunjie文件夹中的代码,做如下调整: 1.在页面左面定制的区域增加一个字体选择,主要提供书法字体、楷体、宋体、草书这几个字体的选择方便用户个性化定制右面结果显示区域显示的字体样式。 2.其他内容均不用修改修改后的样式可以看到有一个地方可以选择字体了,下面还是继续前面的定制化要素生成楷体的春节祝福语生成好后用户如果想要重新切换字体,也不用重新生成,直接重新选择字体,右面显示区域会自动变更显示的字体,这个还是很方便的。下面尝试把前面生成的春节贺词切换到草书看看效果如何除夕修改修改后的主界面生成一个给开发者小伙伴们的新春贺词完美完成这个应用的开发年初一修改增加了印章定制化功能以及多了一个拜年,这样就可以生成简短精炼的拜年语使用到的prompt检查chunjie文件夹下的代码,类型里面添加一个拜年词,拜年词的特色简短但是语言精巧。另外修改一下页面右下角印章的字体为个性定制里面的书法字体。尝试设置一个文本框用于个性化定制印章上面的字,但是不管用户怎么定制印章上字的方向和风格不变,不过印章需要能够根据用户的字数自动调整大小均匀分布不影响美观度修改后的效果和生成一个拜年语至此,基于开发者空间-云开发环境(容器)+ CodeArts Doer代码智能体+华为云MaaS平台商用大模型Tokens完成春节贺词生成的应用开发就全部完成了
-
当前AI的回复速度明显慢于刚开始和之前,希望能解决这个问题!不允许上传视频,差评!!!
-
聊天频繁卡在这个界面是(Working on it, please wait...)什么情况,怎么解决,每次都要重新开启一个对话,但是很快又会继续这样希望可以给一个解决方案,目前已经一直这样十几分钟了,最后会显示:调用下游服务异常, 错误信息: 200 OK from POST https://devagent-backend.cn-north-4.myhuaweicloud.com:8443/ChatAgentService/v1/chat/chat, but response failed with cause: io.netty.channel.unix.Errors$NativeIoException: recvAddress(..) failed: Connection reset by peerTrace_id: 012ac9c6a58c4db78b142500494a186b希望解决!!!GLM-4.7GLM-5DeepSeek-V3.2这三个模型都存在这个问题。
-
使用vscode开发工具,去学习当前工程项目结构 ,Working on it, please wait...一直在加载中,
-
Pycharm+CodeArts测试问题时,提示请求失败是什么原因?
-
2026马年贺新春,使用华为云码道开发新春赛博游戏体验效果展示:使用设备: macbook m3 16G编程环境:aarch64编程格式:html 第一步:下载华为云码道(CodeArts)代码智能体,完成安装cid:link_0 第二步:使用华为云码道(CodeArts)代码智能体,进行开发登录 华为云码道(CodeArts)代码智能体IDE,开启代码智能体插件使用任意模型,输入提示词(这里用的是GLM-4.7模型) 提示词内容:帮我生成一个马年的新春小游戏,主题为喜庆的新年气息,符合中国审美。(这边我让他生成新春小游戏,没有具体告诉它是什么游戏)第三步:生成完成后点击➕号保存为一个新项目 到这步就可以运行我们的新项目了,并且可以在右边的工作台看到新建的项目代码 第四步:运行测试demo 这样我们就使用辅助编程完成了一个简易有趣的小项目了
-
新年新气象✨!提前给大家拜个早年,祝各位新的一年事事顺遂、一马当先~最近 CodeArts 火速适配了 GLM5.0,我立刻趁热体验一波,借着马年的喜庆做了个简单的 H5 小游戏 Demo。整体体验下来,除了 AI 前期回答稍慢一点,后续响应都很丝滑,而且语法功能基本零异常,代码一次性跑通,接下来就只剩产品逻辑的细节优化啦。 ① 简述:《马上冲刺蓄力赛》是一款以马年为核心主题的轻量化 H5 休闲小游戏。玩家通过快速点击加速按钮为卡通小马蓄力,点击速度越快,小马冲刺的速度就越快,最终冲刺距离越远得分越高。游戏融入了新年视觉元素与 “马” 主题吉祥成语(如动态漂浮的成语文字、萌趣生肖马形象,每匹小马都绑定了专属的马年成语),操作门槛低、即时反馈强,兼具趣味性与竞技感;通关后还能生成个人冲刺成绩单分享,既贴合 “一马当先、马到成功” 的马年美好寓意,也适配碎片化游玩和社交传播的需求。 ② 实现思路:AI 提问思路:借助 H5 开发一款 “马上冲刺蓄力赛” 小游戏,核心玩法为点击屏幕加速按钮触发小马冲刺,点击频率越快,小马冲刺速度越高;游戏内设置五匹小马,玩家可自主选择初始坐骑,每匹小马都配有唯一的专属标签 —— 与马相关的吉祥成语(如 “马上发财”“一马当先” 等);最终根据小马冲刺的距离结算分数,支持生成 “冲刺排行榜”,并可分享个人最佳成绩。AI 优化思路:初期 AI 生成的 emoji 小马形象出现方向错误(马尾朝向终点),我通过指令让 AI 对相关 Dom 节点做水平翻转处理,修正后小马的前进方向与视觉形象完全吻合;发现小马绑定的专属成语在冲刺交互中缺乏直观的视觉表达,因此新增了仿 “敲木鱼・功德 + 1” 的动态效果 —— 冲刺过程中会触发对应成语的漂浮动画,让成语元素更好地融入游戏体验。 ③效果: 代码优化了一下,加入新春主题元素:④代码地址:https://gitcode.com/N9_xx/CodeArts_Demos/blob/main/html/马上冲刺.html【因链接检验不通过,特此以文本的形式贴出】
-
案例介绍CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本文基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速开发马年运势预测小游戏,旨在展示如何利用智能化开发工具,快速实现一个有趣的运势预测小游戏,为用户提供个性化的马年运势预测服务。1.2 适用对象前端开发爱好者和初学者希望快速开发小游戏的开发者对运势预测类应用感兴趣的开发者想了解华为开发者空间和CodeArts Doer的开发者高校学生和教育机构1.3 案例时间本案例总时长预计30分钟。1.4 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts Doer代码智能体;在VS Code中,利用CodeArts Doer的"智能体模式",通过Prompt指令引导,快速开发马年运势预测小游戏;实现用户信息输入、运势算法、结果展示等功能模块;运行小游戏并测试其功能,验证运势预测的准确性和趣味性。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费30CodeArts服务免费体验版免费30VS Code免费下载免费30二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)进入网页端的开发者空间中。按照如下步骤创建容器开发环境。默认为从空白开始创建,开发者可自行选择对应语言的开发环境。选择后会生成一个默认的名称,用户也可自行定义。CPU默认为鲲鹏系列,不可更改。规格可选择2c4g,4c8g,8c16g,16c32g,真的是非常非常良心了!高级配置中镜像名称其实指的就是基础环境配置的镜像,保持All in One即可。环境变量可视用户要求自定义。选择完成后,我们点击创建。回到个人空间中,我们可以看到已经创建成功了。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行。开机成功后,点击Open in Current Window,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts Doer代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,我们仍然可以选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。选择同意批准登录。回到VS Code端中进行测试,看到正常回复,至此,全部环境准备工作完成。三、基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速开发马年运势预测小游戏3.1 需求分析与架构设计我们先把思路丢给CodeArts Doer,让其帮我生成一个需求分析和架构设计框架,然后自己改动后内容如下:**技术细节**: - 技术栈选择:HTML/CSS/JavaScript作为前端开发语言,使用Vue.js或React构建单页应用,Node.js作为后端服务(可选) - 运势算法:基于用户输入的信息(如姓名、出生日期),结合马年的生肖特点和传统运势理论,生成运势预测结果 - 数据存储:使用本地存储(localStorage)或小型数据库(如SQLite)存储用户信息和运势结果 - 部署方案:使用Docker容器化部署,支持快速上线和扩展 **功能模块划分**: - 用户信息输入模块:负责收集用户的姓名、出生日期等信息 - 运势算法模块:负责基于用户信息生成马年运势预测结果 - 结果展示模块:负责将运势预测结果以可视化方式展示给用户 - 分享功能模块:支持用户将运势结果分享到社交媒体 - 后台管理模块:负责管理运势算法和内容更新(可选) **关键指标定义**: - 开发时间:从项目初始化到上线的总时间≤30分钟 - 系统响应时间:页面加载时间≤2秒 - 用户体验:用户满意度评分≥4.5分(满分5分) - 功能覆盖率:功能需求的实现比例≥95% **详细内容说明**: - 用户信息输入模块:提供友好的输入界面,支持日期选择器、下拉菜单等交互组件 - 运势算法模块:实现灵活的运势算法,支持不同类型的运势预测(事业、财运、感情、健康等) - 结果展示模块:使用生动的视觉设计,展示运势结果,包括文字描述、图标、颜色等 - 分享功能模块:集成社交媒体分享接口,支持一键分享 - 后台管理模块:提供简单的后台界面,方便更新运势内容和算法 针对于其中一些细节,我们可以再次细化CodeArts Doer会基于此给出详细的前端模块和后端模块的树形结构图前端模块如下:src/ ├── components/ # 组件目录 │ ├── UserInput.vue # 用户输入组件 │ ├── FortuneResult.vue # 运势结果展示组件 │ ├── ShareDialog.vue # 分享对话框组件 │ └── HistoryList.vue # 历史记录组件 ├── views/ # 页面视图 │ ├── Home.vue # 首页 │ ├── Result.vue # 结果页 │ └── History.vue # 历史页 ├── services/ # 服务层 │ ├── fortuneService.js # 运势计算服务 │ └── apiService.js # API服务 ├── utils/ # 工具类 │ ├── chineseZodiac.js # 生肖计算 │ └── fortuneAlgorithm.js # 运势算法 └── store/ # 状态管理 └── index.js # Pinia store后端模块如下:server/ ├── routes/ # 路由 │ ├── fortune.js # 运势相关路由 │ └── user.js # 用户相关路由 ├── services/ # 服务层 │ ├── fortuneService.js # 运势计算服务 │ └── userService.js # 用户服务 ├── models/ # 数据模型 │ ├── User.js # 用户模型 │ └── Fortune.js # 运势记录模型 ├── middleware/ # 中间件 │ ├── auth.js # 认证中间件 │ └── validator.js # 验证中间件 └── config/ # 配置 └── database.js # 数据库配置整体框架图如下:3.2 基于CodeArts Doer快速开发实现到了这一步,我们继续在智能体模式下给出prompt:上述框架无误,请你按照上述内容帮我实现前后端构建!可以看到,此时已经开始进行项目构建了,我们稍等一会儿~等到生成完成后,我们可以看到文件目录如下所示:但是这时我们不了解项目结构,怎么启动呢?问题不大,我们给出如下prompt:请你帮我启动web服务,我要看看效果!此时CodeArts Doer就会开始自动安装环境依赖,最终自行执行启动操作等到项目启动完成之后,我们本地访问效果如下:我们随意填入一个信息,点击开始预测:生成结果如下:我们点击分享运势,还可以下载成图片分享给朋友~四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践:https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例基于华为开发者空间+CodeArts Doer+华为云MaaS平台商用大模型Tokens,完成一个对联生成应用的开发1.2 适用对象个人开发者高校学生1.2 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts Doer代码智能体;使用CodeArts Doer代码智能体,自动生成对联生成应用;用户使用浏览器体验对联生成应用,浏览器接收到用户输入的prompt发送给华为云MaaS平台使用tokens调用大模型服务,大模型返回结果给浏览器显示给用户资源总览本案例预计花费1元。体验完成后请及时释放资源。资源名称规格单价(元)时长(分钟)华为开发者空间 - 云开发环境(容器)2vCPUs 4GiB免费30CodeArts代码智能体通用体验版免费30华为开发者空间 - DeepSeek-R1/V3千万Tokens代金券DeepSeek-R1-64K/DeepSeek-V3-64K1元30项目背景马上就是农历新年了,有些地方有贴春联的习俗,所以就想到利用AI生成春联。现在AI这么发达,AI生成的春联可能要比我们能想到的春联用词要出色不少,于是就想尝试一下这么一个应用。实现思路最初的思路:通过MAAS调用deepseek模型随机生成对联,用户无需输入任何东西,只要点一个生成对联就可以生成,代码中涉及到的api地址、模型、key信息都不直接写在代码中,通过一个脚本给系统添加环境变量方法实现,代码中只需要读取系统环境变量就可以完成赋值。为了迎合春节效果,界面仿真的使用对联的效果,这样用户看起来也舒服。体验后觉得可以改善的思路:考虑到有些用户可能想个性化定制对联,那么我们继续让智能体进行代码分析并且修改符合我们的要求,这样完成后的对联生成应用也算是比较完善了。除夕优化:在做新春贺词应用时候的灵感,对联生成应用能否也增加一个保存成图片的按钮,一样给智能体prompt让智能体帮忙修改,顺便把随机生成和生成对联这两个按钮合在一起了。二、环境和资源准备2.1. VS Code远程连接云开发环境参考案例《华为开发者空间 - 云开发环境(容器)IDE插件远程连接操作指导》使用VS Code的Huawei Developer Space 插件,远程连接华为开发者空间云开发环境。2.2. VS Code安装CodeArts Doer代码智能体点击Extensions(插件)图标,搜索CodeArts Doer for Coding,点击Install(安装)安装插件:安装完成后,点击CodeArts Doer插件图标,点击HUAWEI ID login:点击Open(打开),打开外部网站:输入华为账号和密码,登录CodeArts Doer代码智能体CodeArts Doer代码智能体登录成功:首次使用CodeArts Doer代码智能体,会进入开通页面。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。返回VS Code测试CodeArts Doer代码智能体,输入问题:你好,请介绍自己!2.3. 设置Agent模式点击Agent,再点击右面的设置齿轮图标:全选所有设置点击返回后,即可使用CodeArts Doer代码智能体。2.4. 领取华为云MaaS平台商用大模型Tokens福利登录华为开发者空间,参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中的“二、 领取MaaS平台商用大模型Tokens”章节内容,领取MaaS平台DeepSeek-V3商用大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通商用模型服务,最后获取到模型的API地址、模型名称和API Key三、构建一个对联生成应用1.CodeArts Doer生成代码输入以下指令:使用python生成一个通过web页面可视化的对联生成系统,AI部分使用ModelArts Studio的API实现,为了系统安全考虑,API地址、model参数、API KEY的值同时取环境变量,后期用户如果需要变更API也直接修改环境变量就可以实现变更,具体参数如下: API地址:取环境变量$API_URL的值 model参数:取环境变量$MODEL_NAME的值 API KEY:取环境变量$API_KEY的值 系统要实现的功能: 1.用户无需输入设置一个按钮生成对联,系统自动调用AI生成对联。 2.系统先在后台判断生成的对联是否符合要求,不符合的重新调用AI生成 3.界面设置成仿真的对联显示风格,对联上显示字体也仿真现实对联的设计 程序设计完成后帮忙设置环境变量用来运行对联生成系统 $API_URL的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API地址; $MODEL_NAME的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的模型名称 $API_KEY的值:需替换为“2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API_KEY 新建一个文件夹duilian用于存放生成的代码注:【2.4 领取华为云MaaS平台商用大模型Tokens福利”最后获取到的API地址】这一段文字需要替换为上一节步骤中获取到的信息,并不是prompt里这么输入输入完成prompt后点击发送按钮,CodeArts Doer代码智能体就会自动创建项目文件并生成代码,这个过程中等待智能体生成好代码就好,整个过程根据项目大小大约需要几分钟到十几分钟都有可能,耐心等待就好。正好昨天上线了GLM-5的模型,今天正好来体验一下GLM-5的生成效果如何。项目结构/workspace/duilian/ ├── app.py # Flask后端服务 ├── requirements.txt # Python依赖 ├── run.sh # 启动脚本 ├── templates/ │ └── index.html # 前端页面 └── static/ ├── css/ │ └── style.css # 仿真对联样式 └── js/ └── main.js # 前端交互逻辑程序默认已经在run.sh文件中写入了环境变量,后续如需修改API配置,只需修改环境变量后重启服务即可:手动设置环境变量export API_URL="新的API地址" export MODEL_NAME="新的模型名称" export API_KEY="新的API密钥" 2.运行生成的代码运行代码:打开TERMINAL窗口,进入项目目录先安装依赖pip install -r requirements.txt运行代码python app.py点击Open in Browser(在浏览器中打开):主界面:体验过程点击生成对联看下生成的效果可以发现能够正常生成对联,但是总感觉不是很完美,接下去还可以让智能体继续帮我们修改代码不断完善,回到智能体中继续发送新的prompt,输入好后点发送。运行后发现生成的对联上面都会有"联:"这个字样,这个好像不太对,建议修改一下不显示这个字样。另外对联的字体颜色建议修改成黑色,这样看上去视觉效果会更好一点这边需要注意一下如果使用GLM-5模型作为使用模型的话,他每分钟发送的token会有限制,如果出现下图提示,稍微等一会点恢复就可以继续执行了。全部修改完成后智能体会告诉用户修改了那些地方继续重新执行应用查看一下效果python app.py可以发现字体已经修改为了黑色,接下去试试看生成对联的效果运行后也能自动生成对联进阶修改刚才让智能体编写的是一个随机的对联生成应用,那么现在如果需要个性化定制对联,那么我们继续让智能体进行代码分析并且修改符合我们的要求新的prompt如下分析duilian文件夹下代码,进行修改满足以下需求 1.修改页面布局,左面为输入关键词,对联风格之类的个性化定制区,右面为对面的显示结果区域,显示结果区域风格保持现有的风格和字体颜色信息 2.个性化定制区域需要能让用户输入关键词、对联风格,对联风格分为传统典雅和现代创新两种。用户输入好信息后点击生成对联 3.除了用户可以个性化生成对联以外,再增加一个随机生成的按钮,用于AI随机性生成对联智能体修改好后一样会给出一个修改报告体验进阶应用随机生成的效果现代创新风格的效果传统典雅风格的效果除夕修改后的效果至此,基于开发者空间-云开发环境(容器)+ CodeArts Doer代码智能体+华为云MaaS平台商用大模型Tokens完成对联生成的应用开发就全部完成了
-
1 【盖楼有礼】华为云码道春节智能编码活动 获奖名单如下:*1、>>点击填写获奖用户收货地址<<(重要,4月24日前完成填写,逾期视为放弃奖励)*2、活动公示时间:2026年4月10日—4月24日(含),若有疑问请在该时间段反馈。一、幸运楼层奖昵称华为云账号礼品备注蓝**蜕变hw59**7726华为云50元礼包 mu**hemu**zhe华为云50元礼包 Al**sthw_00861**50065881_01华为云50元礼包同时获得深度体验官奖,请联系版主挑选希望获得的奖项奖品yd_295**4544hw_008618**0839210_01华为云50元礼包同时获得优质内容奖,请联系版主挑选希望获得的奖项奖品yd_268**0402hw**29630华为云50元礼包 二、优质内容奖昵称华为云账号礼品备注Je**Dinghw9**99586华为云定制卫衣 坚**派br**ze_luckly华为云定制卫衣 周周**妙编程zhj**hbz华为云定制卫衣 L**g_q153**393684华为云定制卫衣 yd_2**164544hw_0**18030839210_01华为云定制卫衣同时获得优质内容奖,请联系版主挑选希望获得的奖项奖品白**明not**gnodo华为云定制卫衣 三、深度体验官奖 昵称华为云账号礼品 L**g_q1532**93684云宝盲盒 Al**sthw_008**3750065881_01云宝盲盒同时获得幸运楼层奖,请联系版主挑选希望获得的奖项奖品 恭喜以上获奖用户,礼品会发到获奖收集问卷的收货地址,请注意查收。感谢大家对华为云码道的关注和支持~ 欢迎各位开发者们在云声平台提出更多优化建议 春节将至,华为云码道(CodeArts)代码智能体将为广大开发者带来一场充满年味的 AI 编程体验之旅! 无论你是想生成创意拜年帖、自动撰写祝酒词,还是打造新年运势预测小程序……现在,用华为云码道(CodeArts)代码智能体轻松生成代码,快速实现你的春节灵感! 分享你的作品,赢取华为云50元礼包、定制卫衣、云宝盲盒及云资源代金券.....,让我们一起用代码迎接新春!【活动时间】即日起 — 2026年3月31日 18:00 ,获奖名单将在活动结束后7个工作日内公布。【参与方式】第一步:下载华为云码道(CodeArts)代码智能体,完成安装第二步:使用华为云码道(CodeArts)代码智能体,进行开发登录 华为云码道(CodeArts)代码智能体IDE,开启代码智能体插件使用任意模型,生成与春节主题相关的小应用代码(如拜年贴生成器、祝酒词助手、新年运势预测程序等)完成开发并保存截图第三步:回复本帖参与“盖楼有礼”在本帖下方回复:① 作品简短描述② 关键代码/实现思路(可选)③ 华为云账号+作品截图(必须包含界面及运行效果、华为云账号中心界面、代码界面)界面及运行效果截图参考华为云账号中心截图参考代码界面参考(光标移到红框位置)案例参考:案例一:基于华为云码道(CodeArts)代码智能体,生成《丙午马年·专属签名生成器》小程序案例二:基于华为开发者空间云开发环境(容器)+ CodeArts代码智能体 + MaaS,构建AI春节祝福语生成器应用案例三:基于华为开发者空间云开发环境(容器)+ CodeArts代码智能体 + MaaS,构建AI对联生成器 第四步(可选):发布独立案例帖,冲击优质内容奖在 CodeArts代码智能体专区 单独发帖,标题格式:【春节码道编程】+ 你的作品名称帖子内容建议包括:项目背景、实现过程、华为云码道(CodeArts)代码智能体使用体验、完整代码片段、效果展示第五步(可选):在官网云声·建议平台,反馈产品优化建议,冲击深度体验官奖将声音反馈的截图上传至评论区,需显示华为云账号 奖项设置1. 幸运楼层奖(40名)获奖规则:按活动要求在本帖回复并符合格式的楼层中,以下楼层获奖:8, 18, 28, 38, 48, 58, 68, 78, 88, 98, 108, 118, 128, 138, 148, 158, 168, 178, 188, 198…(每满10楼递增,直至满额)奖品:华为云50元礼包2. 优质内容奖(10名)获奖规则:按活动要求回复本帖 并单独发帖 分享完整案例,由社区根据内容完整性、创意性、技术实现评分奖品:华为云定制卫衣3. 深度体验官奖(10名)获奖规则:在官网云声·建议平台提出有价值的产品建议或优化思路奖品:云宝盲盒4. 随机惊喜奖(不定)获奖规则:优秀的创意将有机会获得100~200元不等的云资源代金券奖品:云资源代金券 注意事项:1、本活动每个ID不得连续刷楼,每天最多发3楼,多刷无效。2、有效楼层是指按照要求回复的楼层,必须完成产品体验等任务,无效楼层的奖项直接取消。3、同一华为云账户可多次参与,但仅限获奖一次(任选盖楼奖、优质内容奖、深度体验官奖其中之一)。4、为了您顺利获取奖品,请关注站内私信,并加入本活动微信群,在活动结束后,将在14个工作日内私信领奖事宜。5、发帖内容需遵守华为云社区规范,华为员工参与无效,违规将取消资格。 作品要求主题需围绕 春节、拜年、祝福、新年预测、年俗文化 等相关场景必须使用 华为云码道(CodeArts)代码智能体生成全部或部分代码,并在截图中体现必须提供华为云账号,将账号放置作品后侧以证明作品形式不限:Web 应用、小程序、Python 脚本、H5 页面等均可代码需可运行,无明显错误,符合基础功能描述 活动咨询如有疑问,可在本帖留言或私信版主@CodeArts代码智能体,我们将在工作日24小时内回复也可添加华为云码道新春活动产品体验交流群进行交流这个春节,让华为云码道(CodeArts)代码智能体为你“写代码”,你只管发挥创意!无论是新手还是资深开发者,都能在 AI 辅助下快速打造节日应用。快来回复展示你的作品,带走华为云好礼,用技术为新年添一份智能年味!🎈 祝所有开发者:马年大吉,代码无Bug,新年焕新技!参与活动请直接在本帖下方回复(记得带上截图和描述哦~) 以下是一些新春主题的创意方向,希望能激发您的灵感:方向创意点子示例马年特色祝福“马到成功”事业运势分析器、生成带有骏马动画的个性化电子贺卡、结合生辰信息的趣味的各类生成器等。新春习俗智能化AI春联/福字生成器(可嵌入马字意象)、智能年夜饭菜谱规划器(推荐“马”上如意吉祥菜)、家族线上“赛马”趣味小游戏(比拼知识或反应)。年度规划与展望个人年度计划“千里马”进度管理助手、AI辅助的“一马当先”学习路线规划器、马年主题的年度总结报告自动生成模板。实用工具“马上出行”春节旅行规划助手、智能走亲戚话题库与礼品推荐器、聚会游戏“成语接龙(含马字)”智能出题与裁判程序。
-
CodeArts什么时候支持GLM5 ?
yd_240009242
发表于2026-02-13 10:32:57
2026-02-13 10:32:57
最后回复
CodeArts小助手-蚂蚁
2026-02-13 10:44:10
108 1 -
我在win10的VSCode的CodeArts代码智能体插件,登录了,用了一会,大概几小时,然后就发现被登出了!好多次了很影响体验。你们遇到吗?
-
如下图:CodeArts Agent的智能体提问窗口不小心关掉了,怎么重新打开?
-
案例介绍今天领导要做一个工作,把批量摘取word表格内容为excel的,word有几百个,摘取内容为根据word最后总结各项,取上面章节与总结各项对应的表格,一个word里摘取的表格也有几十上百个,问有没有会写程序的,灵光一闪我写的不好但是有CodeArts 代码智能体,本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,基于 Python 语言,快速开发一款批量摘取 Word 表格内容到 Excel 的程序。该程序可自动遍历指定文件夹下的所有 Word 文档,识别并提取文档中的所有表格数据,按统一格式汇总到 Excel 文件中,减少人工操作。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,基于 Python 语言,快速开发一款批量摘取 Word 表格内容到 Excel 的程序。该程序可自动遍历指定文件夹下的所有 Word 文档,识别并提取文档中的所有表格数据,按统一格式汇总到 Excel 文件中,大幅减少人工操作。1.2 适用对象行政 / 财务 / 人事等需要批量处理文档表格的办公人员初级 Python 开发者(零基础可上手)中小企业数据整理岗工作人员需要自动化办公提效的职场人群1.3 案例时间本案例总时长预计120分钟。1.4 案例流程说明:在 CodeArts 代码智能体中输入精准 Prompt,生成核心提取程序代码。分析需求,编写Prompt提示词调试代码,适配不同格式的 Word 表格(合并单元格、不规则行列等)。运行程序,批量处理 Word 文档并验证 Excel 汇总结果。1.5 资源总览本案例预计花费1.85元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费60CodeArts服务免费体验版免费60VS Code免费下载免费60二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)在CLOUD DEV ENV(CONTAINER)页签,点击创建云开发环境,创建云开发环境。输入云开发环境名称:banjin(名称可以自拟),然后回车。注:必填项,可包含数字、字母、下划线,不能以数字开头,长度不超过15个字符。容器镜像选择All in One,然后回车。注:必填项,根据其预置工具不同,公共模板包含All In One、Go、Java、Python、Node等云开发环境(容器)模板,开发者可根据实际情况进行选择。选择规格,云开发环境(容器)提供了四个配置规格,分别为2vCPUs 4Gib、4vCPUs 8Gib、8vCPUs 16Gib、16vCPUs 32Gib。配置环境变量,若无则直接回车。注:选填项,多个键值对之间使用英文分号分隔,如:key1=value1;key2=value2;变量名称只能由字母、数字和下划线组成,且只能以字母或下划线开头,变量名称与变量值长度不能超过128个字符;最多可添加50个环境变量。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行启动容器环境开机成功后,点击在当前窗口链接,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,选择ssh仍然选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。此时CodeArts代码智能体还不能直接使用,需要进行登录,点击华为账号登录,弹出窗口提示:是否打开外部网站,点打开。浏览器自动打开“批准登录”确认页面。若此时未登录账号,则跳转华为账号登录。若账号已登录,则选中并点登录。注:若为首次使用CodeArts代码智能体,会进入开通页面。需要勾选**“我已阅读并同意”后,单击“立即开通”**,等待套餐开通完成。至此,全部环境准备工作完成。2.6 配置智能体模式在CodeArts代码智能体对话框下侧点Agent模式,在弹出的菜单最后侧点设置按钮。在设置界面,点“自动批准”右侧的已启用。进入授权所有自动化操作界面,分别勾选读取文件和目录、编辑文件、执行命令、更新代办、执行task工具、使用浏览器。三、基于华为开发者空间+CodeArts代码智能体高效构建自动化代码审计助手3.1 需求分析与 Prompt 指令设计核心需求梳理:从第六章《输入输出表证单书》里提取各个项然后在第五章查找对应的表格,提取到excel1、批量读取指定文件夹下所有.docx 格式 Word 文档,自动跳过无表格、损坏的文档;2、精准提取每个 Word 文档中的所有表格,处理合并单元格(填充合并后空值);3、文件内容中定位标题为《输入输出表证单书》的章节取所有项名称对应项;4、定位文件中《五、业务处理流程及规则》板块下的《受理》子章节查找对应列表;5、将提取的表格汇总至 Excel:每个 Word 的表格单独占一个工作表,工作表名格式为 “文档名_表格序号”;6、显示处理进度,生成日志记录(成功 / 失败的文档、表格数量、错误原因);7、代码添加详细注释,便于新手修改和调试。编辑一个prompt指令帮我用python写有个程序,通过doc文件来取出文件内《输入输出表证单书》里对应《输入》和《输出》项里名称,然后在《五、业务处理流程及规则》里《受理》下,在内容里查找上面对应项名称加上“数据项处理规则”名称,然后取下方的表格,例如”《异常监控指标清单》“在《五、业务处理流程及规则》里《受理》下内容中,查找 ”《异常监控指标清单》数据项处理规则“ ,不要查找表格中的名称列,在内容里查找然后取下方的表格,查找当前目录下的doc文件优化下prompt提示词请使用Python开发一个程序,满足以下核心需求,代码需具备可运行性、鲁棒性,并添加详细注释:### 核心功能要求1. 文件读取:遍历当前运行目录下的所有.doc格式文件(若需兼容.docx也可同时支持),跳过无相关内容的文件;2. 第一步提取名称: - 从文件内容中定位标题为《输入输出表证单书》的板块; - 精准提取该板块下《输入》项和《输出》项中所有的名称(如:《异常监控指标清单》,保存为名称列表;3. 第二步查找并提取表格: - 定位文件中《五、业务处理流程及规则》板块下的《受理》子板块; - 仅在《受理》板块的**纯文本内容**中(不查找表格内的名称列),依次查找第一步提取的每个名称 + “数据项处理规则”的完整字符串(如《异常监控指标清单》数据项处理规则); - 找到匹配字符串后,提取该字符串**正下方**对应的表格数据(保留表格行列结构);4. 结果输出:将提取的表格数据按“文件名-名称-表格数据”的结构汇总,支持保存为Excel文件(或CSV),并生成处理日志(记录成功/失败的文件及原因)。### 技术要求1. 处理.doc文件优先使用python-docx2txt、pywin32(win32com)等成熟库,确保能解析老版本.doc格式;2. 增加异常处理:跳过损坏的doc文件、无目标板块/内容的文件,程序不中断;3. 兼容常见格式问题:如标题换行、空格、特殊符号(()《》)、板块层级缩进不一致等;4. 代码注释清晰,关键步骤(如板块定位、名称匹配、表格提取)需单独封装函数,便于调试和修改;5. 输出结果需保留表格原有行列结构,空单元格填充为空字符串,避免数据错位。3.2 代码构建我们进入智能体模式下,执行如上提示词,可以看到,智能体开始自动构建任务步骤,全程不需要我们操作,根须需求的难易程度等待时间长度不等。等待 10几分钟后代码完成,来尝试运行一下代码python extract_io_data.py可以看到数据都串行了我们交给 CodeArts智能体帮我们修复中间多次测试程序异CodeArts智能体修复记录不再记录3.3 运行生成的代码体验成果运行最终代码体验成果python extract_io_data.py这里已经按照需求提取了word里的表格生成了对应的excel3.4 封装代码python代码需要准备python环境安装各种依赖,在win下使用比较不辨,来封装一个可执行文件便于使用和分享这里输入提示词:帮我把程序打包成exe测试生成的可执行exe,更方便的提取excel结果了 生成代码:#!/usr/bin/env python# -*- coding: utf-8 -*-"""提取doc文件中的输入输出表证单书名称和对应的数据项处理规则表格输出到Excel文件"""import osimport refrom tika import parserimport openpyxlfrom openpyxl.styles import Font, Alignment, Border, Side, PatternFilldef find_section_start(lines, section_name): """查找章节起始位置""" for i, line in enumerate(lines): if section_name in line: return i return -1def find_subsection_start(lines, start_idx, subsection_name): """从指定位置开始查找子章节起始位置""" for i in range(start_idx, len(lines)): if subsection_name in lines[i]: return i return -1def extract_io_names(lines): """提取《输入输出表证单书》中《输入和输出》项的名称(包括括号内容)""" io_names = [] # 查找"六、输入输出表证单书"章节 section_start = find_section_start(lines, "六、输入输出表证单书") if section_start == -1: print("未找到'六、输入输出表证单书'章节") return io_names # 查找"七、"章节(六、章节的结束位置) section_end = -1 for i in range(section_start + 1, len(lines)): if lines[i].strip().startswith('七、'): section_end = i break if section_end == -1: section_end = min(section_start + 100, len(lines)) # 查找"(一)输入"部分 input_start = find_subsection_start(lines, section_start, "(一)输入") # 查找"(二)输出"部分 output_start = find_subsection_start(lines, section_start, "(二)输出") # 在六、章节和七、章节之间提取所有名称 for i in range(section_start, section_end): line = lines[i].strip() # 匹配两种格式: # 1. 《名称》 # 2. 《名称》(中文括号内容) # 3. 《名称(中文括号内容)》 # 先尝试匹配《名称》(中文括号内容)格式 # 注意:中文括号是()不是() # 使用字符串处理而不是正则表达式 found_paren_format = False if '《' in line and '》' in line and '(' in line and ')' in line: # 检查是否有《...》(...)的格式 start_idx = line.find('《') while start_idx != -1: end_idx = line.find('》', start_idx) if end_idx != -1: # 检查》后面是否有( after_bookmark = line[end_idx + 1:].strip() if after_bookmark.startswith('('): # 找到完整的《名称》(内容)格式 paren_end = after_bookmark.find(')') if paren_end != -1: name = line[start_idx:end_idx + 1] + after_bookmark[:paren_end + 1] # 排除表头 if name not in ["《输入和输出》", "《输入》", "《输出》"]: if name not in [n[0] for n in io_names]: # 判断是输入还是输出 if output_start != -1 and i >= output_start: io_names.append((name, '输出')) elif input_start != -1 and i >= input_start: io_names.append((name, '输入')) found_paren_format = True start_idx = line.find('《', end_idx + 1) if end_idx != -1 else -1 # 如果没有匹配到括号格式,再尝试匹配《...》格式 if not found_paren_format: start_idx = line.find('《') while start_idx != -1: end_idx = line.find('》', start_idx) if end_idx != -1: name = line[start_idx:end_idx + 1] # 排除表头 if name not in ["《输入和输出》", "《输入》", "《输出》"]: if name not in [n[0] for n in io_names]: # 判断是输入还是输出 if output_start != -1 and i >= output_start: io_names.append((name, '输出')) elif input_start != -1 and i >= input_start: io_names.append((name, '输入')) start_idx = line.find('《', end_idx + 1) if end_idx != -1 else -1 return io_namesdef extract_table_below(lines, start_idx): """提取从指定位置开始的表格内容""" table_data = [] i = start_idx # 找到表格开始(查找表头) header_found = False while i < min(start_idx + 2000, len(lines)): # 增加表格提取范围到2000行 line = lines[i] # 检查是否是表格表头(包含序号、数据项名称等关键字) if not header_found: # 检查这一行或接下来的几行是否包含表头信息 if '序号' in line: # 检查接下来的几行是否是表头 is_header = False j = i header_lines = [] while j < min(i + 10, len(lines)): stripped = lines[j].strip() if stripped and ('序号' in stripped or '数据项名称' in stripped or '数据项代码' in stripped or '处理方式' in stripped or '采集规则' in stripped or '备注' in stripped): header_lines.append(stripped) is_header = True j += 1 elif stripped.startswith('\t'): # 可能是表头的后续行 header_lines.append(stripped) j += 1 else: break if is_header and len(header_lines) >= 3: header_found = True i = j continue # 如果表头已找到,开始收集表格行 if header_found: # 检查是否表格结束(遇到新的章节或新的数据项处理规则标题) stripped = line.strip() # 检查是否遇到新的数据项处理规则标题 if '数据项处理规则' in stripped and '《' in stripped: # 检查这一行是否是数据项处理规则的标题(通常是单独一行) # 如果是,则停止提取 if stripped.startswith('《'): break # 检查是否遇到数字开头的段落(如"1.")且不是纯数字 # 只匹配中文句点,不匹配英文句点 if re.match(r'^\d+[.、]', stripped) and not stripped.isdigit(): break # 检查是否遇到新的主章节(七、八、九、十等) if re.match(r'^[七八九十]+、', stripped): break # 跳过空行 if not stripped: i += 1 continue # 将每一行都作为一个单独的元素添加到表格数据中 table_data.append([stripped]) i += 1 return table_datadef find_data_item_processing_rule(lines, io_name): """ 在《五、业务处理流程及规则》中《受理》下查找对应项名称+数据项处理规则, 然后提取下方的表格 """ # 查找"五、业务处理流程及规则"章节 section_start = find_section_start(lines, "五、业务处理流程及规则") if section_start == -1: return None # 查找"(二)受理"部分 accept_start = find_subsection_start(lines, section_start, "(二)受理") if accept_start == -1: return None # 查找受理部分的结束位置(下一个主章节或六、章节) accept_end = -1 for i in range(accept_start + 1, len(lines)): if lines[i].strip().startswith('(三)') or lines[i].strip().startswith('六、'): accept_end = i break if accept_end == -1: accept_end = min(accept_start + 20000, len(lines)) # 增加搜索范围 # 构造要查找的字符串 search_text = io_name + "数据项处理规则" # 在受理部分查找该字符串 for i in range(accept_start, accept_end): if search_text in lines[i]: # 找到了,提取下方的表格 table_data = extract_table_below(lines, i + 1) return { 'name': io_name, 'found_at': i, 'table': table_data } return Nonedef export_to_excel(io_names, results, output_file): """将结果导出到Excel文件""" # 创建工作簿 wb = openpyxl.Workbook() wb.remove(wb.active) # 删除默认的sheet # 创建样式 header_font = Font(name='微软雅黑', size=11, bold=True, color='FFFFFF') header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid') header_alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) data_font = Font(name='微软雅黑', size=10) data_alignment = Alignment(horizontal='left', vertical='center', wrap_text=True) thin_border = Border( left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin') ) # Sheet1: 输入输出表证单书列表 ws1 = wb.create_sheet('输入输出表证单书', 0) # 设置表头 headers1 = ['序号', '类型', '名称', '是否有数据项处理规则'] ws1.append(headers1) # 设置表头样式 for col in range(1, len(headers1) + 1): cell = ws1.cell(1, col) cell.font = header_font cell.fill = header_fill cell.alignment = header_alignment cell.border = thin_border # 填充数据 for idx, (name, io_type) in enumerate(io_names, 1): # 检查是否有数据项处理规则 has_rule = any(r['name'] == name for r in results) rule_status = '是' if has_rule else '否' ws1.append([idx, io_type, name, rule_status]) # 设置数据样式 for col in range(1, len(headers1) + 1): cell = ws1.cell(idx + 1, col) cell.font = data_font cell.alignment = data_alignment cell.border = thin_border # 调整列宽 ws1.column_dimensions['A'].width = 8 ws1.column_dimensions['B'].width = 10 ws1.column_dimensions['C'].width = 50 ws1.column_dimensions['D'].width = 20 # Sheet2: 数据项处理规则详细表格 ws2 = wb.create_sheet('数据项处理规则', 1) # 设置表头 headers2 = ['表单名称', '序号', '数据项名称', '数据项代码', '处理方式', '采集规则', '备注'] ws2.append(headers2) # 设置表头样式 for col in range(1, len(headers2) + 1): cell = ws2.cell(1, col) cell.font = header_font cell.fill = header_fill cell.alignment = header_alignment cell.border = thin_border # 填充数据 row_num = 2 for result in results: if result['table']: # 跳过表头行(如果存在) table_rows = result['table'] if len(table_rows) > 0 and '序号' in str(table_rows[0]): table_rows = table_rows[1:] # 先将所有行展平成一个列表,跳过空行 all_values = [] for row in table_rows: for val in row: if val: # 跳过空值 all_values.append(val) # 按照数据项格式重新组织 # 格式:序号, 数据项名称, 数据项代码, 处理方式, 采集规则, 备注 # 但是有些数据项可能没有备注或数据项代码,所以需要动态判断 i = 0 while i < len(all_values): # 初始化所有字段为空 seq_num = '' data_name = '' data_code = '' process_mode = '' collect_rule = '' remark = '' # 检查第一个值是否是序号 if all_values[i].isdigit(): # 这是序号行 seq_num = all_values[i] i += 1 # 接下来应该是数据项名称(非数字) if i < len(all_values) and not all_values[i].isdigit(): data_name = all_values[i] i += 1 # 接下来可能是数据项代码(以06开头)或处理方式 if i < len(all_values): if all_values[i].startswith('06'): data_code = all_values[i] i += 1 # 数据项代码之后应该是处理方式 if i < len(all_values) and not all_values[i].isdigit(): process_mode = all_values[i] i += 1 # 处理方式之后应该是采集规则 if i < len(all_values) and not all_values[i].isdigit(): collect_rule = all_values[i] i += 1 # 采集规则之后可能是备注 if i < len(all_values) and not all_values[i].isdigit(): remark = all_values[i] i += 1 else: # 没有数据项代码,直接是处理方式 process_mode = all_values[i] i += 1 # 处理方式之后应该是采集规则 if i < len(all_values) and not all_values[i].isdigit(): collect_rule = all_values[i] i += 1 # 采集规则之后可能是备注 if i < len(all_values) and not all_values[i].isdigit(): remark = all_values[i] i += 1 # 在表单名称中添加"数据项处理规则" form_name = result['name'] if '数据项处理规则' not in form_name: form_name = form_name + "数据项处理规则" ws2.append([form_name, seq_num, data_name, data_code, process_mode, collect_rule, remark]) # 设置数据样式 for col in range(1, len(headers2) + 1): cell = ws2.cell(row_num, col) cell.font = data_font cell.alignment = data_alignment cell.border = thin_border row_num += 1 else: # 不是序号,跳过 i += 1 # 调整列宽 ws2.column_dimensions['A'].width = 40 ws2.column_dimensions['B'].width = 8 ws2.column_dimensions['C'].width = 25 ws2.column_dimensions['D'].width = 18 ws2.column_dimensions['E'].width = 12 ws2.column_dimensions['F'].width = 15 ws2.column_dimensions['G'].width = 40 # 保存文件 wb.save(output_file) print("结果已导出到Excel文件: " + output_file)def main(): """主函数""" # 查找当前目录下的doc文件 current_dir = os.getcwd() doc_files = [f for f in os.listdir(current_dir) if f.endswith('.doc')] if not doc_files: print("当前目录 " + current_dir + " 下没有找到.doc文件") return print("找到以下.doc文件:") for doc_file in doc_files: print(" - " + doc_file) # 处理每个doc文件 for doc_file in doc_files: doc_path = os.path.join(current_dir, doc_file) print("\n正在处理文件: " + doc_file) try: # 使用tika解析doc文件 parsed = parser.from_file(doc_path) content = parsed['content'] lines = content.split('\n') # 步骤1:提取《输入输出表证单书》中《输入和输出》项的名称 print("\n步骤1:提取输入输出表证单书中的名称...") io_names = extract_io_names(lines) print("共找到 " + str(len(io_names)) + " 个名称:") for name, io_type in io_names: print(" - " + name + " (" + io_type + ")") # 步骤2和3:查找数据项处理规则并提取表格(包括输入和输出) print("\n步骤2-3:查找数据项处理规则并提取表格...") results = [] for name, io_type in io_names: result = find_data_item_processing_rule(lines, name) if result: results.append(result) print(" [OK] 找到 " + name + " 的数据项处理规则表格,共 " + str(len(result['table'])) + " 行") else: print(" [X] 未找到 " + name + " 的数据项处理规则表格") # 步骤4:将结果输出到Excel文件 print("\n步骤4:将结果输出到Excel文件...") output_excel = os.path.splitext(doc_file)[0] + "_提取结果.xlsx" export_to_excel(io_names, results, output_excel) # 同时也输出到文本文件 #output_txt = os.path.splitext(doc_file)[0] + "_提取结果.txt" # with open(output_txt, 'w', encoding='utf-8') as f: # f.write("文件: " + doc_file + "\n") # f.write("=" * 80 + "\n\n") # # f.write("一、输入输出表证单书中的名称(共" + str(len(io_names)) + "个)\n") # f.write("-" * 80 + "\n") # for name, io_type in io_names: # f.write(name + " (" + io_type + ")\n") # # f.write("\n二、数据项处理规则表格(共" + str(len(results)) + "个)\n") # f.write("-" * 80 + "\n\n") # # for result in results: # f.write("名称: " + result['name'] + "\n") # f.write("-" * 40 + "\n") # # if result['table']: # f.write("表格内容(共" + str(len(result['table'])) + "行):\n") # for row in result['table']: # f.write("\t".join(row) + "\n") # else: # f.write("(未找到表格)\n") # # f.write("\n" + "=" * 80 + "\n\n") # # print("结果已保存到: " + output_txt) except Exception as e: print("处理文件 " + doc_file + " 时出错: " + str(e)) import traceback traceback.print_exc()if __name__ == "__main__": main() 至此用例全部结束感触我只能算是个业余爱好的开发者,曾经写一个程序要个程序需要各种查,各种翻文档来强记语法,像当前的这个程序我可能需要好几天才能开发出来,在CodeArts代码智能体下,两三个小时只需要验证结果就行了,异常只需要交给CodeArts代码智能体就可以,希望要善待开发者 我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践cid:link_0
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第三期2026/08/21 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;念擎-华为云AI开发者运营案例开发专家
本期直播内容:AI六层能力首次详细解读 + 新一代华为云开发者空间亮相 + 校园案例直播带练
回顾中
热门标签