当前位置: 首页 > news >正文

【NEXT】网络编程——上传文件(不限于jpg/png/pdf/txt/doc等),或请求参数值是file类型时,调用在线服务接口

最近在使用华为AI平台ModelArts训练自己的图像识别模型,并部署了在线服务接口。供给客户端(如:鸿蒙APP/元服务)调用。

import核心能力:

import { http } from '@kit.NetworkKit';
import { fileIo } from '@kit.CoreFileKit';

一、先用测试工具调用在线服务接口,是否成功

 

接口接收到传入的图片文件,识别图片内容后成功返回结果。

注意:接口要求输入的参数名是images,值类型是文件file。

二、从手机相册选取一张图片,并复制到沙箱缓存中

/*** 将文件拷贝到缓存中* @param from 原文件地址(拍照/相册)* @param to 目标文件地址(缓存)*/copyFile(from: string, to: string): void {let fFile = fileIo.openSync(from);let tFile = fileIo.openSync(to, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); // 替换或创建文件fileIo.copyFileSync(fFile.fd, tFile.fd);fileIo.closeSync(fFile);fileIo.closeSync(tFile);}

三、读取已复制到缓存中的文件内容

/*** 读取文件内容* @param cacheImgUri:沙箱缓存文件地址* @returns*/readFileContent(cacheImgUri: string): ArrayBuffer {let fFile = fileIo.openSync(cacheImgUri, fileIo.OpenMode.READ_ONLY);let fStat = fileIo.lstatSync(cacheImgUri);let arrayBufFile: ArrayBuffer = new ArrayBuffer(fStat.size); // 文件大小fileIo.readSync(fFile.fd, arrayBufFile);fileIo.fsyncSync(fFile.fd);fileIo.closeSync(fFile);return arrayBufFile;}

四、构建请求体body的内容

/*** 构建请求体body* @param boundary 分隔符* @param fileName 文件名* @param fileContent 文件内容* @returns */buildBodyContent(boundary: string, fileName: string, fileContent: Uint8Array): ArrayBuffer {let txtEncoder = new util.TextEncoder();// 构建请求体前面内容let bodyPre = `--${boundary}\r\n`bodyPre = bodyPre + `Content-Disposition: form-data; name="images"; filename="${fileName}"\r\n`;bodyPre = bodyPre + 'Content-Type: application/octet-stream\r\n';bodyPre = bodyPre + '\r\n';let arrayPre = txtEncoder.encodeInto(bodyPre);// 构建请求体后面内容let bodyAft = '\r\n'bodyAft = bodyAft + `--${boundary}`bodyAft = bodyAft + '--\r\n'let arrayAft = txtEncoder.encodeInto(bodyAft);let body = buffer.concat([arrayPre, fileContent, arrayAft]); // 拼接请求体return body.buffer;}

五、按钮click事件调用aiAnalyseImg方法,发送请求在线服务接口

/*** 调用病虫害模型AI能力分析图片* @param imgUri 原图片地址(拍照/相册)* @returns */async aiAnalyseImg(imgUri: string): Promise<void> {// 华为云ModelArts平台病虫害模型console.debug('正在分析的图片地址:' + imgUri); // 从相册选取的图片地址// 文件名let fileName = imgUri.split('/').pop() as string;let cacheFilePath = `${getContext().cacheDir}/${fileName}`;this.copyFile(imgUri, cacheFilePath);// 从沙箱缓存中读取文件内容let fileContent: Uint8Array = new Uint8Array(this.readFileContent(cacheFilePath));// 构建请求体bodylet boundary: string ='--------' + (await systemDateTime.getCurrentTime(true)).toString();let bodyContent = this.buildBodyContent(boundary, fileName, fileContent);hilog.debug(0x0000, 'aiAnalyseImg', 'hilog输出bodyContent:' + bodyContent);hilog.debug(0x0000, 'aiAnalyseImg', 'hilog输出bodyContent大小:' + bodyContent.byteLength);// 请求地址:modelArts平台在线服务API接口let url: string ='https://b07b6d6054****96d5e4420****e.apig.cn-north-4.huaweicloudapis.com/v1/infers/c91****8-c678-4e73-****-37c****3a';let request = http.createHttp();let reqOpts: http.HttpRequestOptions = { // 设置请求参数method: http.RequestMethod.POST,header: {'X-Apig-AppCode': '40d29da14dbd87abe3484f6fa0e1b07767d5226540459dbf8620a8f7', // 模型平台AppCode'Content-Type': `multipart/form-data;boundary=${boundary}`,'Content-Length': bodyContent.byteLength.toString(),},extraData: bodyContent,};// 发起请求request.request(url, reqOpts).then((resp) => { // 请求成功,解析返回结果// TODO: 解析返回结果hilog.debug(0x0000, 'aiAnalyseImg', 'hilog输出结果:' + JSON.stringify(resp.result));}).catch((err: BusinessError) => {hilog.error(0x0000, 'aiAnalyseImg', 'catch输出错误:' + err.message);})}

注意:

1.构建请求体body中的Content-Type: application/octet-stream  与  header中设置的Content-Type: multipart/form-data

2.header参数中记得设置Content-Length: bodyContent.byteLength.toString()

相关文章:

【NEXT】网络编程——上传文件(不限于jpg/png/pdf/txt/doc等),或请求参数值是file类型时,调用在线服务接口

最近在使用华为AI平台ModelArts训练自己的图像识别模型&#xff0c;并部署了在线服务接口。供给客户端&#xff08;如&#xff1a;鸿蒙APP/元服务&#xff09;调用。 import核心能力&#xff1a; import { http } from kit.NetworkKit; import { fileIo } from kit.CoreFileK…...

【Qt】界面优化

界面优化 设置全局样式样式文件使⽤ Qt Designer 编辑样式选择器设置子控件样式伪类选择器样式属性盒模型设置按钮样式设置复选框样式输入框样式列表样式菜单栏样式 在 Qt 中对界面的优化和 CSS 类似。语法结构如下&#xff1a; 选择器 {属性名: 属性值; }例如&#xff1a; QP…...

机器学习算法在网络安全中的实践

机器学习算法在网络安全中的实践 本文将深入探讨机器学习算法在网络安全领域的应用实践&#xff0c;包括基本概念、常见算法及其应用案例&#xff0c;从而帮助程序员更好地理解和应用这一领域的技术。"> 序言 网络安全一直是信息技术领域的重要议题&#xff0c;随着互联…...

课题介绍:基于惯性与单目视觉信息融合的室内微小型飞行器智能自主导航研究

室内微小型飞行器在国防、物流和监测等领域中应用广泛&#xff0c;但在复杂的非合作环境中实时避障和导航仍面临诸多挑战。由于微小型飞行器的载荷和能源限制&#xff0c;迫切需要开发高效的智能自主导航系统。本项目旨在研究基于惯性导航与单目视觉信息融合的技术&#xff0c;…...

Observability:实现 OpenTelemetry 原生可观察性的商业价值

作者&#xff1a;来自 Elastic David Hope 利用开放标准和简化的数据收集转变组织的可观察性策略。 现代组织面临着前所未有的可观察性挑战。随着系统变得越来越复杂和分散&#xff0c;传统的监控方法难以跟上步伐。由于数据量每两年翻一番&#xff0c;系统跨越多个云和技术&am…...

nginx 报错404

404&#xff1a;服务器无法正常解析页面&#xff0c;大多是配置问题(路径配置错误)、或访问页面不存在 如果你也是用nginx来转接服务的话&#xff0c;那你有可能碰到过这种情况&#xff0c;当你启动服务后&#xff0c;在本地打开页面&#xff0c;发现404&#xff0c;然后你找遍…...

2.2.1 人眼色觉与色度图

文章目录 人眼色觉色度图 人眼色觉 视网膜上的视杆细胞、视锥细胞在人眼色觉中起到重要作用。视杆细胞主要用在弱光暗环境下&#xff0c;其数量远远多于视锥细胞。视锥细胞负责明亮环境的视觉&#xff0c;有L,M,S三种类型的细胞&#xff0c;分别对长、中、短波长敏感&#xff0…...

DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”

当算力博弈升级为网络战争&#xff1a;拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下&#xff0c;网络已然成为人类社会运转的关键基础设施&#xff0c;深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…...

c语言(关键字)

前言&#xff1a; 感谢b站鹏哥c语言 内容&#xff1a; 栈区&#xff08;存放局部变量&#xff09; 堆区 静态区&#xff08;存放静态变量&#xff09; rigister关键字 寄存器&#xff0c;cpu优先从寄存器里边读取数据 #include <stdio.h>//typedef&#xff0c;类型…...

眼见着折叠手机面临崩溃,三星计划增强抗摔能力挽救它

据悉折叠手机开创者三星披露了一份专利&#xff0c;通过在折叠手机屏幕上增加一个抗冲击和遮光层的方式来增强折叠手机的抗摔能力&#xff0c;希望通过这种方式进一步增强折叠手机的可靠性和耐用性&#xff0c;来促进折叠手机的发展。 据悉三星和研发可折叠玻璃的企业的做法是在…...

Excel to form ?一键导入微软表单

一句话痛点 “你的Excel越强大&#xff0c;手动复制到Forms就越痛苦。” 合并单元格崩溃成乱码、下拉菜单变纯文本、条件逻辑消失无踪——这些不是技术问题&#xff0c;而是低效工作模式的死刑判决书。 直击解决方案&#xff1a;3分钟&#xff0c;3步&#xff0c;300%效率 1…...

使用Ollama本地化部署DeepSeek

1、Ollama 简介 Ollama 是一个开源的本地化大模型部署工具&#xff0c;旨在简化大型语言模型&#xff08;LLM&#xff09;的安装、运行和管理。它支持多种模型架构&#xff0c;并提供与 OpenAI 兼容的 API 接口&#xff0c;适合开发者和企业快速搭建私有化 AI 服务。 Ollama …...

【xdoj-离散线上练习】T251(C++)

解题反思&#xff1a; 开始敲代码前想清楚整个思路比什么都重要嘤嘤嘤&#xff01;看到输入m, n和矩阵&#xff0c;注意不能想当然地认为就是高m&#xff0c;宽n的矩阵&#xff0c;细看含义 比如本题给出了树的邻接矩阵&#xff0c;就是n*n的&#xff0c;代码实现中没有用到m这…...

【数据结构】_链表经典算法OJ(力扣/牛客第二弹)

目录 1. 题目1&#xff1a;返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2&#xff1a;链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1&#xff1a;返回倒数第k个节点 1.1 题目链接及描述 题目链接&#xff1a; 面试题 …...

线性代数复习笔记

1. 课程学习 1.1 3Blue1Brown 线性代数 2. 基本术语 eigenvector&#xff08;特征向量&#xff09;&#xff1a;线性变换中方向保持不变的向量 可以视作3D旋转矩阵形成的旋转的轴...

51单片机 01 LED

一、点亮一个LED 在STC-ISP中单片机型号选择 STC89C52RC/LE52RC&#xff1b;如果没有找到hex文件&#xff08;在objects文件夹下&#xff09;&#xff0c;在keil中options for target-output- 勾选 create hex file。 如果要修改编程 &#xff1a;重新编译-下载/编程-单片机重…...

用一个例子详细说明python单例模式

单例模式是一种设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。这在需要控制资源&#xff08;如数据库连接、文件系统等&#xff09;的访问时非常有用。 下面是一个使用Python实现单例模式的例子&#xff1a; class Singleton:…...

QT知识点复习

1.qt核心机制 对象树、信号和槽、事件机制 2.对象树的作用 优化了内存回收机制。子对象实例化的时候&#xff0c;被父对象放对象树上&#xff0c;父对象释放内存&#xff0c;子对象也释放内存 3.信号和槽的作用 实现多个组件之间的通讯 4.信号和槽的几种连接方式 1.UI界面提…...

医学图像分割任务的测试代码

测试集进行测试 import os import torch import numpy as np from torch.utils.data import DataLoader from sklearn.metrics import (precision_score,recall_score,f1_score,roc_curve,auc,confusion_matrix, ) import matplotlib.pyplot as plt from utils import NiiData…...

linux下ollama更换模型路径

Linux下更换Ollama模型下载路径指南   在使用Ollama进行AI模型管理时&#xff0c;有时需要根据实际需求更改模型文件的存储路径。本文将详细介绍如何在Linux系统中更改Ollama模型的下载路径。 一、关闭Ollama服务   在更改模型路径之前&#xff0c;需要先停止Ollama服务。…...

手机上运行AI大模型(Deepseek等)

最近deepseek的大火&#xff0c;让大家掀起新一波的本地部署运行大模型的热潮&#xff0c;特别是deepseek有蒸馏的小参数量版本&#xff0c;电脑上就相当方便了&#xff0c;直接ollamaopen-webui这种类似的组合就可以轻松地实现&#xff0c;只要硬件&#xff0c;如显存&#xf…...

第一性原理:游戏开发成本的思考

利润 营收-成本 营收定价x销量x分成比例 销量 曝光量x 点击率x &#xff08;购买率- 退款率&#xff09; 分成比例 100%- 平台抽成- 税- 引擎费- 发行抽成 成本开发成本运营成本 开发成本 人工外包办公地点租金水电设备折旧 人工成本设计成本开发成本迭代修改成本后续内容…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.11 视图与副本:内存优化的双刃剑

2.11 视图与副本&#xff1a;内存优化的双刃剑 目录 #mermaid-svg-OpelXRXip4Xj1A2e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OpelXRXip4Xj1A2e .error-icon{fill:#552222;}#mermaid-svg-OpelXRXip4Xj1A2e .…...

React 封装高阶组件 做路由权限控制

React 高阶组件是什么 官方解释∶ 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一种基于 React 的组合特性而形成的设计模式。 高阶组件&#xff08;HOC&#xff09;就是一个函数&…...

Python sider-ai-api库 — 访问Claude、llama、ChatGPT、gemini、o1等大模型API

目前国内少有调用ChatGPT、Claude、Gemini等国外大模型API的库。 Python库sider_ai_api 提供了一个完整的解决方案。通过调用 sider.ai 的API&#xff0c;开发者可以实现对这些大模型的访问。 众所周知&#xff0c;sider是一个Chrome&#xff0c;以及Edge的浏览器插件&#xf…...

深入解析 Linux 内核内存管理核心:mm/memory.c

在 Linux 内核的众多组件中,内存管理模块是系统性能和稳定性的关键。mm/memory.c 文件作为内存管理的核心实现,承载着页面故障处理、页面表管理、内存区域映射与取消映射等重要功能。本文将深入探讨 mm/memory.c 的设计思想、关键机制以及其在内核中的作用,帮助读者更好地理…...

git基础使用--3---git安装和基本使用

git基础使用–3–git-安装和基本使用 1. git工具安装 使用git如果不考虑开发工具我们一般需要关注三个点 1.1 git 本地化仓库管理的基础 打开https://git-scm.com/downloads地址下载安装 安装完成后&#xff0c;配置环境变量 配置完打开cmd&#xff0c;输入git --versio…...

Python 网络爬虫实战:从基础到高级爬取技术

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 网络爬虫&#xff08;Web Scraping&#xff09;是一种自动化技术&#xff0c;利用程序从网页中提取数据&#xff0c;广泛…...

【PyQt】学习PyQt进行GUI开发从基础到进阶逐步掌握详细路线图和关键知识点

学习PyQt的必要性 PyQt是开发跨平台GUI应用的强大工具&#xff0c;适合需要构建复杂、高性能界面的开发者。无论是职业发展还是项目需求&#xff0c;学习PyQt都具有重要意义。 1. 跨平台GUI开发 跨平台支持&#xff1a;PyQt基于Qt框架&#xff0c;支持Windows、macOS、Linux…...

Web - CSS3基础语法与盒模型

概述 这篇文章是关于 Web 前端 CSS3 的基础语法与盒模型的讲解。包括 CSS3 层叠性及处理冲突规则、伪元素和新增伪类元素、属性选择器等。还介绍了文本与字体属性&#xff0c;如段落和行相关属性、字体文本属性。最后阐述了盒子模型&#xff0c;如元素隐藏、行内与块元素转换、…...

【开源免费】基于Vue和SpringBoot的公寓报修管理系统(附论文)

本文项目编号 T 186 &#xff0c;文末自助获取源码 \color{red}{T186&#xff0c;文末自助获取源码} T186&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

成绩案例demo

本案例较为简单&#xff0c;用到的知识有 v-model、v-if、v-else、指令修饰符.prevent .number .trim等、computed计算属性、toFixed方法、reduce数组方法。 涉及的功能需求有&#xff1a;渲染、添加、删除、修改、统计总分&#xff0c;求平均分等。 需求效果如下&#xff1a…...

【tiktok 国际版抖抖♬♬ __ac_signature算法】逆向分析

一开始的参数是没有X-Bogus和 __ac_signature的 先是加密请求参数得到乱码。最终得到X-Bogus 然后请求参数添加了X-Bogus之后再去生成__ac_signature __ac_signature的生成需要用到X-Bogus...

【Linux】动静态库

一、库 静态库 .a[Linux]、.lib[windows] 动态库 .so[Linux]、.dll[windows] 二、静态库使用 如果我们要做一个静态库的话&#xff0c;首先我们需要把我们源文件(.c/.cpp)隐藏起来&#xff0c;头文件(.h)必须暴露出来&#xff0c; 1.我们先要把我们所有的.c文件编译成.o文件…...

《手札·开源篇》从开源到商业化:中小企业的低成本数字化转型路径 ——以Odoo为数据中台低成本实现售前售中一体化

某机电设备有限公司数字化转型案例&#xff1a;以Odoo为数据中台实现售前售中一体化 一、企业背景某机电设备有限公司在机电设备领域历经多年发展&#xff0c;业务广泛&#xff0c;涵盖工业自动化设备、电力设备等产品的销售与服务。随着业务版图不断拓展&#xff0c;企业面临…...

携程Android开发面试题及参考答案

在项目中,给别人发的动态点赞功能是如何实现的? 数据库设计:首先要在数据库中为动态表添加一个点赞字段,用于记录点赞数量,同时可能需要一个点赞关系表,记录用户与动态之间的点赞关联,包括点赞时间等信息。界面交互:在 Android 界面上,为点赞按钮设置点击事件监听器。…...

Python-列表

3.1 列表是什么 在Python中&#xff0c;列表是一种非常重要的数据结构&#xff0c;用于存储一系列有序的元素。列表中的每个元素都有一个索引&#xff0c;索引从0开始。列表可以包含任何类型的元素&#xff0c;包括其他列表。 # 创建一个列表my_list [1, 2, 3, four, 5.0]…...

【LeetCode 刷题】回溯算法-子集问题

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为回溯算法子集问题相关的题目解析。 文章目录 78.子集90.子集II 78.子集 题目链接 class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res, path [], []def dfs(start: int) ->…...

31.Word:科技论文的译文审交稿【31】

目录 NO1.2.3​ NO4.5.6 NO7.8样式应用和修改&多级列表​ NO9奇偶页页眉 NO10自动编号&交叉引用 NO11.12 NO1.2.3 另存为/F12&#xff1a;考生文件夹只保留译文内容、格式设置、修订批注&#xff0c;删除其他&#xff1a;删除表格的左列→删除第一行将表格转化成…...

Java序列化详解

1 什么是序列化、反序列化 在Java编程实践中&#xff0c;当我们需要持久化Java对象&#xff0c;比如把Java对象保存到文件里&#xff0c;或是在网络中传输Java对象时&#xff0c;序列化机制就发挥着关键作用。 序列化&#xff1a;指的是把数据结构或对象转变为可存储、可传输的…...

尝试ai生成figma设计

当听到用ai 自动生成figma设计时&#xff0c;不免好奇这个是如何实现的。在查阅了不少资料后&#xff0c;有了一些想法。参考了&#xff1a;在figma上使用脚本自动生成色谱 这篇文章提供的主要思路是&#xff1a;可以通过脚本的方式构建figma设计。如果我们使用ai 生成figma脚本…...

每日一题——包含min函数的栈

包含min函数的栈 题目数据范围&#xff1a;示例C语言代码实现解释1. push(value)2. pop()3. top()4. min() 总结大小堆GPT给的原始代码 题目 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的 min 函数&#xff0c;输入操作时保证 pop、top 和 mi…...

【最后203篇系列】004 -Smarklink

说明 这个用来替代nginx。 最初是希望用nginx进行故障检测和负载均衡&#xff0c;花了很多时间&#xff0c;大致的结论是&#xff1a;nginx可以实现&#xff0c;但是是在商业版里。非得要找替代肯定可以搞出来&#xff0c;但是太麻烦了&#xff08;即使是nginx本身的配置也很烦…...

二分法模板

数组具有二段性&#xff0c;可以分为左右两边合法区和不合法区 如果选择左端点&#xff0c;右边区域不合法&#xff0c;选择 left mid ,right mid - 1; 如果选择右端点&#xff0c;左边区域不合法&#xff0c;选择 left mid 1 ,right mid ; 1.x 的平方根 LCR 072. x 的…...

基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

LabVIEW无人机航线控制系统

介绍了一种无人机航线控制系统&#xff0c;该系统利用LabVIEW软件与MPU6050九轴传感器相结合&#xff0c;实现无人机飞行高度、速度、俯仰角和滚动角的实时监控。系统通过虚拟仪器技术&#xff0c;有效实现了数据的采集、处理及回放&#xff0c;极大提高了无人机航线的控制精度…...

STM32CUBEIDE编译的hex使用flymcu下载后不能运行

测试后确认&#xff0c;不论是1.10版本还是1.16版本&#xff0c;编译生成的hex下载后不能运行&#xff0c;需要更改boot 设置才能开始运行&#xff0c;flymcu下载后已经告知一切正常&#xff0c;跳转到8000 0000处开始运行&#xff0c;实际没有反应&#xff0c;而使用mdk编译生…...

final-关键字

一、final修饰的类不能被继承 当final修饰一个类时&#xff0c;表明这个类不能被其他类继承。例如&#xff0c;在 Java 中&#xff0c;String类就是被final修饰的&#xff0c;这保证了String类的不可变性和安全性&#xff0c;防止其他类通过继承来改变String类的行为。 final…...

在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9

在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装 备注&#xff1a; 适用于单节点 是否支持欧拉&#xff1f;&#xff1f;&#xff1f; 前提条件 本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单…...

deepseek+vscode自动化测试脚本生成

近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…...