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

【人工智能深度学习应用】妙笔API最佳实践

AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品,专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识,能够生成高质量的专业内容,能覆盖各行业常见的文体类型,写作文体丰富多样,包括时政稿件、时事评论、视频脚本、报告、请示、通知、方案、复函等。AI妙笔通过人工智能技术提升创作效率,帮助用户节省时间和精力,并提供准确、专业的内容,满足不同行业组织的需求。

本文提供妙笔写作链路 API的几个最佳实践,帮助您快速入门并开发您自己的业务应用。

前提条件

  • 已开通服务

  • 获取WorkSpaceId 获取Workspace ID

  • 引入妙笔SDK 注意获取最新SDK版本

<dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-aimiaobi20230801</artifactId><version>1.0.11</version>
</dependency>

1、实现直接生成文章

基于妙笔提供的API,本节通过直接生成文章场景来帮助您熟悉API的使用。

生成调用demo如下:

package com.aliyun.sdk.service.aimiaobi20230801;import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingResponseBody;import com.google.gson.Gson;
import darabonba.core.ResponseIterable;
import darabonba.core.ResponseIterator;
import darabonba.core.client.ClientOverrideConfiguration;import java.util.ArrayList;import java.util.List;/*** packageName com.dayouz.lightapp** @author dayouz* @version JDK 8* @className runStyleWriting* @date 2024/8/13* @description 直接写作demo*/
public class RunWritingTest {public static void main(String[] args) {StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(Constant.accessKeyId).accessKeySecret(Constant.accessKeySecret).build());AsyncClient client = AsyncClient.builder().region("cn-beijing").credentialsProvider(provider).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride("aimiaobi.cn-beijing.aliyuncs.com")).build();//写作时的文体、篇幅、输出语言等控制参数List<RunWritingRequest.Tags> tags = new ArrayList<>();//构建语言为中文tags.add(RunWritingRequest.Tags.builder().tag("language").keyword("zh-CN").build());//构建文章篇幅字数300字左右tags.add(RunWritingRequest.Tags.builder().tag("gcNumberSizeTag").keyword("300字").build());//构建生成文章数量为1篇tags.add(RunWritingRequest.Tags.builder().tag("gcNumber").keyword("1").build());//构建写作文体为新闻评论tags.add(RunWritingRequest.Tags.builder().tag("writingStyle").keyword("新闻评论").build());RunWritingRequest request = RunWritingRequest.builder().workspaceId(Constant.workspaceId).prompt("写一篇关于国足对战日本0:7 失败的报道").writingConfig(RunWritingRequest.WritingConfig.builder()//设置传媒领域的写作.domain("media")//设置为自动补充素材,通过互联网检索.useSearch(true)//设置写作时的文体、篇幅、输出语言等控制参数.tags(tags).build()).build();ResponseIterable<RunWritingResponseBody> x = client.runWritingWithResponseIterable(request);ResponseIterator<RunWritingResponseBody> iterator = x.iterator();while (iterator.hasNext()) {System.out.println("----event----");RunWritingResponseBody event = iterator.next();System.out.println(new Gson().toJson(event));}System.out.println("ALL***********************");System.out.println("请求成功的请求头值:");System.out.println(x.getStatusCode());System.out.println(x.getHeaders());}
}

2、分步骤创作文章

package org.example.miaobi;import com.alibaba.fastjson2.JSONObject;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.AsyncClient;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunStepByStepWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunStepByStepWritingResponseBody;
import darabonba.core.ResponseIterable;
import darabonba.core.client.ClientOverrideConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;@Slf4j
public class RunStepByStepWritingTest {public static AsyncClient asyncClient() {//accessKeyIdString accessKeyId = System.getenv("accessKeyId");//accessKeySecretString accessKeySecret = System.getenv("accessKeySecret");//域名:aimiaobi.cn-hangzhou.aliyuncs.comString domain = System.getenv("domain");return AsyncClient.builder().credentialsProvider(StaticCredentialProvider.create(Credential.builder().accessKeyId(accessKeyId).accessKeySecret(accessKeySecret).build())).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride(domain)).build();}@Testpublic void runStepByStepWriting() {AsyncClient asyncClient = asyncClient();String workspaceId = System.getenv("WorkspaceId");String prompt = "中美关系如何破局";//大纲生成OutlineGenerateResult result = runOutlineGenerateResult(asyncClient, workspaceId, prompt);//判断是否成功失败if (result.latestResponse == null || result.latestResponse.getHeader().getErrorCode() != null || result.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runOutlineGenerateResult error:{}", JSONObject.toJSONString(result.latestResponse));return;}log.info("latestResponse:{}", JSONObject.toJSONString(result.latestResponse));log.info("searchQuery:{}", result.searchQuery);log.info("articles:{}", result.articles != null ? result.articles.stream().map(x -> {return String.format("%s:%s", x.getTitle(), x.getUrl());}).collect(Collectors.joining(",")) : null);log.info("miniDoc:{}", JSONObject.toJSONString(result.miniDoc));log.info("outlines:{}", JSONObject.toJSONString(result.outlines));List<String> miniDoc = result.miniDoc;List<String> outlines = result.outlines;//生成摘编SummarizationResult summarizationResult = runSummarizationGenerate(outlines, asyncClient, workspaceId, miniDoc, prompt);//判断是否成功失败if (summarizationResult.latestResponse == null || summarizationResult.latestResponse.getHeader().getErrorCode() != null || summarizationResult.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runSummarizationGenerate|error:{}", JSONObject.toJSONString(summarizationResult.latestResponse));return;}List<RunStepByStepWritingRequest.Outlines> outlineList = outlines.stream().map(x -> {return RunStepByStepWritingRequest.Outlines.builder().outline(x).build();}).collect(Collectors.toList());//生成文章RunWritingResult runWritingResult = runWriting(asyncClient, workspaceId, prompt, miniDoc, outlineList, summarizationResult.cachedSummarization);//判断是否成功失败if (runWritingResult.latestResponse == null || runWritingResult.latestResponse.getHeader().getErrorCode() != null || runWritingResult.latestResponse.getHeader().getErrorMessage() != null) {log.error("runStepByStepWriting|runSummarizationGenerate|error:{}", JSONObject.toJSONString(runWritingResult.latestResponse));return;}RunStepByStepWritingResponseBody.Output output = runWritingResult.latestResponse.getPayload().getOutput();//最终输出的正文String text = output.getText();log.info("最终输出的正文:{}", text);}public static class RunWritingResult {public final RunStepByStepWritingResponseBody latestResponse;public RunWritingResult(RunStepByStepWritingResponseBody latestResponse) {this.latestResponse = latestResponse;}}private static RunWritingResult runWriting(AsyncClient asyncClient, String workspaceId, String prompt, List<String> miniDoc, List<RunStepByStepWritingRequest.Outlines> outlineList, List<String> cachedSummarization) {ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).referenceData(RunStepByStepWritingRequest.ReferenceData.builder().miniDoc(miniDoc).outlines(outlineList).summarization(cachedSummarization).build()).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("Writing").build()).build());RunStepByStepWritingResponseBody latestResponse = null;//写作输出for (RunStepByStepWritingResponseBody item : iterable) {log.info("item:{}", JSONObject.toJSONString(item));latestResponse = item;}return new RunWritingResult(latestResponse);}public static class SummarizationResult {public final List<String> cachedSummarization;public final RunStepByStepWritingResponseBody latestResponse;public SummarizationResult(List<String> cachedSummarization, RunStepByStepWritingResponseBody latestResponse) {this.cachedSummarization = cachedSummarization;this.latestResponse = latestResponse;}}private static SummarizationResult runSummarizationGenerate(List<String> outlines,AsyncClient asyncClient,String workspaceId,List<String> miniDoc,String prompt) {List<RunStepByStepWritingRequest.Outlines> outlineList = outlines.stream().map(x -> {return RunStepByStepWritingRequest.Outlines.builder().outline(x).build();}).collect(Collectors.toList());ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).referenceData(RunStepByStepWritingRequest.ReferenceData.builder().miniDoc(miniDoc).outlines(outlineList).build()).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("MiniDocSummary").build()).build());List<String> cachedSummarization = null;RunStepByStepWritingResponseBody latestResponse = null;for (RunStepByStepWritingResponseBody responseBody : iterable) {latestResponse = responseBody;RunStepByStepWritingResponseBody.Output output = responseBody.getPayload().getOutput();if (output != null && output.getExtraOutput() != null && output.getExtraOutput().getSummarization() != null) {cachedSummarization = output.getExtraOutput().getSummarization();}}return new SummarizationResult(cachedSummarization, latestResponse);}private static OutlineGenerateResult runOutlineGenerateResult(AsyncClient asyncClient, String workspaceId, String prompt) {//生成大纲ResponseIterable<RunStepByStepWritingResponseBody> iterable = asyncClient.runStepByStepWritingWithResponseIterable(RunStepByStepWritingRequest.builder().workspaceId(workspaceId).prompt(prompt).writingConfig(RunStepByStepWritingRequest.WritingConfig.builder().step("OutlineGenerate").build()).build());//检索的QueryString searchQuery = null;//检索的文章List<RunStepByStepWritingResponseBody.Articles> articles = null;//排序好的文章切片List<String> miniDoc = null;//生成的大纲List<String> outlines = null;RunStepByStepWritingResponseBody latestResponse = null;for (RunStepByStepWritingResponseBody response : iterable) {latestResponse = response;if (articles == null) {articles = response.getPayload().getOutput().getArticles();}if (miniDoc == null) {miniDoc = response.getPayload().getOutput().getMiniDoc();}//检索后的queryif (searchQuery == null) {searchQuery = response.getPayload().getOutput().getSearchQuery();}//大纲生成结束if ("task-outline-end".equals(response.getHeader().getEvent())) {outlines = Arrays.asList(response.getPayload().getOutput().getText().split("\n"));}}return new OutlineGenerateResult(searchQuery, articles, miniDoc, outlines, latestResponse);}private static class OutlineGenerateResult {public final String searchQuery;public final List<RunStepByStepWritingResponseBody.Articles> articles;public final List<String> miniDoc;public final List<String> outlines;public final RunStepByStepWritingResponseBody latestResponse;public OutlineGenerateResult(String searchQuery, List<RunStepByStepWritingResponseBody.Articles> articles, List<String> miniDoc, List<String> outlines, RunStepByStepWritingResponseBody latestResponse) {this.searchQuery = searchQuery;this.articles = articles;this.miniDoc = miniDoc;this.outlines = outlines;this.latestResponse = latestResponse;}}
}

3、AI工具箱

AI工具箱包括内容续写、摘要生成、标题生成、内容缩写、内容扩写、关键词抽取等功能,最新实时能力可参考妙笔写作页面的AI工具箱。本节通过实现摘要生成场景来帮助您熟悉API的使用。

生成调用demo如下:

package com.aliyun.sdk.service.aimiaobi20230801;import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.gateway.pop.Configuration;
import com.aliyun.sdk.gateway.pop.auth.SignatureVersion;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunSummaryGenerateRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunSummaryGenerateResponseBody;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingRequest;
import com.aliyun.sdk.service.aimiaobi20230801.models.RunWritingResponseBody;
import com.google.gson.Gson;
import darabonba.core.ResponseIterable;
import darabonba.core.ResponseIterator;
import darabonba.core.client.ClientOverrideConfiguration;import java.util.ArrayList;
import java.util.List;/*** packageName com.dayouz.lightapp** @author dayouz* @version JDK 8* @className runStyleWriting* @date 2024/8/13* @description 摘要生成Demo*/
public class RunSummaryGenerateTest {public static void main(String[] args) {StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(Constant.accessKeyId).accessKeySecret(Constant.accessKeySecret).build());AsyncClient client = AsyncClient.builder().region("cn-beijing").credentialsProvider(provider).serviceConfiguration(Configuration.create().setSignatureVersion(SignatureVersion.V3)).overrideConfiguration(ClientOverrideConfiguration.create().setProtocol("HTTPS").setEndpointOverride("aimiaobi.cn-beijing.aliyuncs.com")).build();//写作时的文体、篇幅、输出语言等控制参数List<RunWritingRequest.Tags> tags = new ArrayList<>();//构建语言tags.add(RunWritingRequest.Tags.builder().tag("language").keyword("zh-CN").build());//构建文章篇幅tags.add(RunWritingRequest.Tags.builder().tag("gcNumberSizeTag").keyword("300字").build());//构建生成文章数量tags.add(RunWritingRequest.Tags.builder().tag("gcNumber").keyword("2").build());//构建写作文体tags.add(RunWritingRequest.Tags.builder().tag("writingStyle").keyword("新闻评论").build());RunSummaryGenerateRequest request = RunSummaryGenerateRequest.builder().workspaceId(Constant.workspaceId).prompt("请为上述内容生成一段摘要,字数在100~200字以内。").content("云服务器ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。").build();ResponseIterable<RunSummaryGenerateResponseBody> x = client.runSummaryGenerateWithResponseIterable(request);ResponseIterator<RunSummaryGenerateResponseBody> iterator = x.iterator();while (iterator.hasNext()) {System.out.println("----event----");RunSummaryGenerateResponseBody event = iterator.next();System.out.println(new Gson().toJson(event));}System.out.println("ALL***********************");System.out.println("请求成功的请求头值:");System.out.println(x.getStatusCode());System.out.println(x.getHeaders());}
}

相关文章:

【人工智能深度学习应用】妙笔API最佳实践

AI妙笔是一款以文本创作为主、多模态为辅的生成式创作大模型产品&#xff0c;专门为传媒、政务等特定的行业和组织提供行业化的内容创作辅助。它具备深度的行业知识&#xff0c;能够生成高质量的专业内容&#xff0c;能覆盖各行业常见的文体类型&#xff0c;写作文体丰富多样&a…...

SOMEIP_ETS_150: SD_Send_triggerEventUINT8Multicast_Eventgroup_6

测试目的&#xff1a; 验证DUT在Tester订阅事件组后&#xff0c;能够响应Tester触发的triggerEventUINT8Multicast方法&#xff0c;并将TestEventUINT8Multicast事件发送到订阅请求中端点选项指定的IP地址和端口。 描述 本测试用例旨在确保DUT能够正确处理事件组的订阅请求&…...

【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和常规型数字格式的区别

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000009 案列 EXCEL单元格数字格式。文本型数字格式和…...

Vxe UI vue vxe-table vxe-text-ellipsis 如何实现单元格多行文本超出、多行文本溢出省略

Vxe UI vue vxe-table 如何实现单元格多行文本超出、多行文本溢出省略 代码 配合 vxe-text-ellipsis 组件实现多行文本溢出省略 <template><div><vxe-grid v-bind"gridOptions"><template #defaultAddress"{ row }"><vxe-te…...

FFmpeg源码:avio_feof函数分析

AVIOContext结构体和其相关的函数分析&#xff1a; FFmpeg源码&#xff1a;avio_r8、avio_rl16、avio_rl24、avio_rl32、avio_rl64函数分析 FFmpeg源码&#xff1a;read_packet_wrapper、fill_buffer函数分析 FFmpeg源码&#xff1a;avio_read函数分析 FFmpeg源码&#xff…...

各省-城镇化率(2001-2022年)

数据收集各省-城镇化率&#xff08;2001-2022年&#xff09;.zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89465885 相关指标&#xff1a; 包括省份、年份、年末总人口数(万人)、年末城镇人口数(万人)、城镇化率等。 数据集构建&#xff1a; 数据集通…...

飞创龙门双驱XYZ直线模组高精度应用实例

飞创龙门双驱XYZ直线模组集超精密定位、高动态响应和灵活配置于一体&#xff0c;适用于电子制造行业&#xff08;点胶、组装、检测&#xff09;、半导体圆晶加工、芯片封装、激光切割、激光焊接、数控机床、精密检测及科研实验等&#xff0c;满足高精度、高动态的三维定位需求&…...

Prompt 初级版:构建高效对话的基础指南

Prompt 初级版&#xff1a;构建高效对话的基础指南 文章目录 Prompt 初级版&#xff1a;构建高效对话的基础指南一 “标准”提示二 角色提示三 多范例提示四 组合提示五 规范化提示 本文介绍了提示词的基础概念与不同类型&#xff0c;帮助用户更好地理解如何在对话中构建有效的…...

餐饮重点企业在AI领域的布局,看方大的AI实践

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 AI已经被应用在餐饮餐厨行业的哪些方面&am…...

Axure PR 9 开关切换 设计交互

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来探讨Axure开关按钮设计与交互技巧​。 创建切换开关所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.将“圆形”元件拖到画布上&#xff0c;在样式窗格中将高度和宽度设置为35&#xff0c;线段宽度…...

ruoyi-python 若依python版本部署及新增模块

ruoyi spring版本支持一键导出前后端代码&#xff0c;且b站上有很多教程&#xff0c;但是发现python版本的教程并不多&#xff0c;于是自己尝试创建一个简易的CRUD模块 1.各版本bug 主要尝试了1.1.2版本和vue2的版本&#xff0c;链接如下&#xff1a; v1.1.2 vue2 两个版本…...

【理论】负载均衡

目录 1. 定义2. 主要作用3. 实现方法4. 实现原理 1. 定义 负载均衡&#xff08;Load Balancing&#xff09;将网络流量、请求等输入分发到后端服务器&#xff0c;为后端服务器提供负载均衡&#xff0c;实现高可用和容错。 2. 主要作用 1. 高并发 通过将请求均匀分配到多个服务…...

流行前端框架Vue.js详细学习要点

Vue.js是一款流行的JavaScript前端框架&#xff0c;用于构建用户界面&#xff0c;特别是在构建交互式Web应用程序时表现出色。以下是Vue.js详细学习的一些要点&#xff1a; 1. Vue.js基础 定义与特点&#xff1a;Vue.js是一款渐进式JavaScript框架&#xff0c;提供响应式数据…...

Java.数据结构.TreeMap

一、什么是TreeMap TreeMap是Java集合框架中的一部分&#xff0c;并且基于红黑树数据结构。这说明TreeMap能够高效地执行键值对的存储、检索、排序等操作。 二、TreeMap的特点 有序性&#xff1a;TreeMap会根据键的自然顺序进行排序&#xff0c;当然&#xff0c;你也可以通过…...

什么是托管安全信息和事件管理 SIEM?

什么是 SIEM&#xff1f; 安全信息和事件管理 ( SIEM ) 解决方案最初是一种集中式日志聚合解决方案。SIEM 解决方案会从整个组织网络中的系统收集日志数据&#xff0c;使组织能够从单一集中位置监控其网络。 随着时间的推移&#xff0c;SIEM解决方案已发展成为一个完整的威胁…...

vscode安装及c++配置编译

1、VScode下载 VS Code官网下载地址&#xff1a;Visual Studio Code - Code Editing. Redefined。 2、安装中文插件 搜索chinese&#xff0c;点击install下载安装中文插件。 3、VS Code配置C/C开发环境 3.1、MinGW-w64下载 VS Code是一个高级的编辑器&#xff0c;只能用来写代…...

JavaScript使用渐变来美化对象!

我们的目标是渐变&#xff01;渐变&#xff01; 首先了解&#xff0c;渐变分为线性渐变和径向渐变&#xff0c;线性渐变可以是从左上角到右下角的渐变&#xff0c;径向渐变是从中心向外的渐变。 JavaScript中实现渐变可以使用addColorStop的方法&#xff0c;例如创建一个线性渐…...

Linux之实战命令24:od应用实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

【CKA】一、基于角色的访问控制-RBAC

1、基于角色的访问控制-RBAC 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 这道题就三条命令&#xff0c;建议直接背熟就行。 也可以查看帮助 kubectl create clusterrole -h kubectl create serviceaccount -h kubectl create rolebinding -h 注意&#xff1a; 1、资…...

【华为HCIP实战课程三】动态路由OSPF的NBMA环境建立邻居及排错,网络工程师

一、NBMA环境下的OSPF邻居建立问题 上节我们介绍了NBMA环境下OSPF邻居建立需要手动指定邻居,因为NBMA环境是不支持广播/组播的 上一节AR1的配置: ospf 1 peer 10.1.1.4 //手动指定邻居的接口地址,而不是RID peer 10.1.1.5 area 0.0.0.0 手动指定OSPF邻居后抓包查看OSP…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...