【AI大模型】对接LLM API

在这里插入图片描述

本章节主要介绍四种大语言模型(ChatGPTAPI、文心一言、讯飞星火、智谱 GLM)的 API 申请指引和 Python 版本的原生 API 调用方法。

文心一言:当前无赠送新用户 tokens 的活动,推荐已有文心 tokens 额度用户和付费用户使用;
智谱 GLM:新用户赠送 tokens,推荐免费用户使用。
ChatGPT:推荐可科学上网的读者使用;

一、文心一言

在这里插入图片描述

哎哟喂,说起这文心一言啊,它可是百度在2023年3月27日那天闪亮登场的中文大模型新秀,简直就是咱们国内大语言模型界的一股清流,代表中的代表嘛!不过呢,你也知道,中文语料那玩意儿,质量参差不齐,再加上咱们国内计算资源和技术上的那么点小瓶颈,文心一言跟那国际大咖ChatGPT比起来,整体性能上还得再努把力,虽说差距有,但在咱们自家地盘——中文语境下,它可是表现得相当不俗,挺让人骄傲的。

文心一言心里头揣着的梦可大了,它不光想搞点文学创作啊、多模态生成啊这些高大上的事儿,还立志要在中文界把ChatGPT给比下去,那雄心壮志,杠杠的!但话说回来,要想真刀真枪地干赢ChatGPT,百度这路还长着呢,得一步一步来。不过呢,话说回来,在咱们这生成式AI监管严得跟啥似的国内环境里,文心一言作为首批获准面向大众开放的AI应用,那可是有它独特的商业优势的,毕竟ChatGPT那哥们儿,现在还只能藏着掖着呢。

百度也是贴心,知道大伙儿想用这好东西,直接给文心一言整了个API接口,还顺带着推出了文心千帆这么个企业级大语言模型服务平台,一站式解决你的大模型开发难题,连带着百度那一套完整的开发流程都打包送上了。你说对于那些自个儿搞不定大模型落地的中小企业啊、传统企业啊,文心千帆简直就是救星般的存在嘛!当然啦,咱们这教程嘛,就专注于怎么通过文心千帆平台去调用文心一言的API,至于其他那些高大上的企业级服务,咱们今儿个就先不扯那么远了。

2.1 千帆 SDK

2.1.1 API 申请指引

  1. 获取密钥
  • 百度智能云千帆大模型平台提供了多种语言的千帆 SDK,开发者可使用 SDK,快捷地开发功能,提升开发效率。
  • 在使用千帆 SDK 之前,需要先获取文心一言调用密钥,在代码中需要配置自己的密钥才能实现对模型的调用,下面我们以 Python SDK为例,介绍通过千帆 SDK 调用文心模型的流程。
  • 首先需要有一个经过实名认证的百度账号,每一个账户可以创建若干个应用,每个应用会对应一个 API_Key 和 Secret_Key。
  1. 进入文心千帆服务平台,点击上述应用接入按钮,创建一个调用文心大模型的应用。
    接着点击去创建按钮,进入应用创建界面:
    简单输入基本信息,选择默认配置,创建应用即可。
    创建完成后,我们可以在控制台看到创建的应用的 API Key、Secret Key。

  2. 需要注意的是,千帆目前只有 Prompt模板、Yi-34B-Chat 和 Fuyu-8B公有云在线调用体验服务这三个服务是免费调用的,如果你想体验其他的模型服务,需要在计费管理处开通相应模型的付费服务才能体验。我们将这里获取到的 API Key、Secret Key 填写至 .env 文件的 QIANFAN_AK 和 QIANFAN_SK 参数。

  3. 如果你使用的是安全认证的参数校验,需要在百度智能云控制台-用户账户-安全认证页,查看 Access Key、Secret Key,并将获取到的参数相应的填写到 .env 文件的 QIANFAN_ACCESS_KEY、QIANFAN_SECRET_KEY。

然后执行以下代码,将密钥加载到环境变量中。

from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())

2.1.2 调用文心千帆 API

百度文心同样支持在传入参数的 messages 字段中配置 user、assistant 两个成员角色的 prompt,但与 OpenAI 的 prompt 格式不同的是,模型人设是通过另一个参数 system 字段传入的,而不是在 messages 字段中。

下面我们使用 SDK,封装一个 get_completion 函数供后续使用。

再次提醒读者:如果账户中没有免费的或者购买的额度,在执行下述代码调用文心 ERNIE-Bot 时,会有如下报错:error code: 17, err msg: Open api daily request limit reached。

点击模型服务可以查看千帆支持的全部模型列表。

import qianfandef gen_wenxin_messages(prompt):'''构造文心模型请求参数 messages请求参数:prompt: 对应的用户提示词'''messages = [{"role": "user", "content": prompt}]return messagesdef get_completion(prompt, model="ERNIE-Bot", temperature=0.01):'''获取文心模型调用结果请求参数:prompt: 对应的提示词model: 调用的模型,默认为 ERNIE-Bot,也可以按需选择 ERNIE-Bot-4 等其他模型temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能设置为 0。温度系数越低,输出内容越一致。'''chat_comp = qianfan.ChatCompletion()message = gen_wenxin_messages(prompt)resp = chat_comp.do(messages=message, model=model,temperature = temperature,system="你是一名个人助理-小鲸鱼")return resp["result"]

如果你有文心系列模型 ERNIE-Bot 的使用额度,则可直接运行如下函数:

get_completion("你好,介绍一下你自己")
[INFO] [04-18 08:40:05] openapi_requestor.py:316 [t:8597525056]: requesting llm api endpoint: /chat/completions
'你好!我是小鲸鱼,你的个人助理。我致力于为你提供准确、及时的信息和帮助,解答你的问题,并尽力满足你的需求。无论你需要什么帮助,我都会尽力提供帮助和支持。'

百度千帆提供了多种模型接口供调用,其中,上述我们使用的 ERNIE-Bot 模型的对话 chat 接口,也就是常说的百度文心大模型。此处简要介绍文心大模型接口的常用参数:

messages,即调用的 prompt。文心的 messages 配置与 ChatGPT 有一定区别,其不支持 max_token 参数,由模型自行控制最大 token 数,messages 中的 content 总长度、functions 和 system 字段总内容不能超过 20480 个字符,且不能超过 5120 tokens,否则模型就会自行对前文依次遗忘。文心的 messages 有以下几点要求:① 一个成员为单轮对话,多个成员为多轮对话;② 最后一个 message 为当前对话,前面的 message 为历史对话;③ 成员数目必须为奇数,message 中的 role 必须依次是 user、assistant。注:这里介绍的是 ERNIE-Bot 模型的字符数和 tokens 限制,而参数限制因模型而异,请在文心千帆官网查看对应模型的参数说明。
stream,是否使用流式传输。
temperature,温度系数,默认 0.8,文心的 temperature 参数要求范围为 (0, 1.0],不能设置为 0。

2.2 ERNIE SDK

2.2.1 API 申请指引
这里将使用 ERNIE SDK 中的 ERNIE Bot 来调用文心一言。ERNIE Bot 为开发者提供了便捷易用的接口,使其能够轻松调用文心大模型的强大功能,涵盖了文本创作、通用对话、语义向量以及AI作图等多个基础功能。ERNIE SDK 并不像 千帆 SDK 那样支持各种大语言模型, 而是只支持百度自家的文心大模型。目前 ERNIE Bot 支持的模型有:

ernie-3.5               文心大模型(ernie-3.5)
ernie-lite              文心大模型(ernie-lite)
ernie-4.0               文心大模型(ernie-4.0)
ernie-longtext          文心大模型(ernie-longtext)
ernie-speed             文心大模型(ernie-speed)
ernie-speed-128k        文心大模型(ernie-speed-128k)
ernie-tiny-8k           文心大模型(ernie-tiny-8k)
ernie-char-8k           文心大模型(ernie-char-8k)
ernie-text-embedding    文心百中语义模型
ernie-vilg-v2           文心一格模型

在使用 ERNIE SDK 之前,需要先获取 AI Studio 后端的认证鉴权(access token),在代码中需要配置自己的密钥才能实现对模型的调用,下面我们以 Ernie Bot为例,介绍通过 ERNIE Bot 调用文心模型的流程。
首先需要在AI Studio星河社区注册并登录账号(新用户会送100万token的免费额度,为期3个月)。
点击 访问令牌 获取账户的 access token,复制 access token 并且以此形式 EB_ACCESS_TOKEN=“…” 保存到 .env 文件中。
然后执行以下代码,将密钥加载到环境变量中。

from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())

2.2.2 调用 Ernie Bot API

import erniebot
import oserniebot.api_type = "aistudio"
erniebot.access_token = os.environ.get("EB_ACCESS_TOKEN")def gen_wenxin_messages(prompt):'''构造文心模型请求参数 messages请求参数:prompt: 对应的用户提示词'''messages = [{"role": "user", "content": prompt}]return messagesdef get_completion(prompt, model="ernie-3.5", temperature=0.01):'''获取文心模型调用结果请求参数:prompt: 对应的提示词model: 调用的模型temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能设置为 0。温度系数越低,输出内容越一致。'''chat_comp = erniebot.ChatCompletion()message = gen_wenxin_messages(prompt)resp = chat_comp.create(messages=message, model=model,temperature = temperature,system="你是一名个人助理")return resp["result"]
get_completion("你好,介绍一下你自己")
'你好!我是一名个人助理,我的主要任务是帮助你完成日常任务、提供信息、解答问题,并尽力提升你的工作效率和生活质量。无论你需要什么帮助,我都会尽力提供支持。'

二、智谱 GLM

在这里插入图片描述

智谱 AI 是由清华大学计算机系技术成果转化而来的公司,致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型 GLM-130B,并构建了高精度通用知识图谱,形成数据与知识双轮驱动的认知引擎,基于此模型打造了 ChatGLM(chatglm.cn)。

ChatGLM 系列模型,包括 ChatGLM-130B、ChatGLM-6B 和 ChatGLM2-6B(ChatGLM-6B 的升级版本)模型,支持相对复杂的自然语言指令,并且能够解决困难的推理类问题。其中,ChatGLM-6B 模型来自 Huggingface 上的下载量已经超过 300w(截至 2023 年 6 月 24 日统计数据),该模型在 Hugging Face (HF) 全球大模型下载榜中连续 12 天位居第一名,在国内外的开源社区中产生了较大的影响。

4.1 API 申请指引

首先进入到 智谱AI开放平台,点击开始使用或者开发工作台进行注册:

新注册的用户可以免费领取有效期 1 个月的 100w token 的体验包,进行个人实名认证后,还可以额外领取 400w token 体验包。智谱 AI 提供了 GLM-4 和 GLM-3-Turbo 这两种不同模型的体验入口,可以点击立即体验按钮直接体验。

智谱 AI 控制台

对于需要使用 API key 来搭建应用的话,需要点击右侧的查看 API key按钮,就会进入到我们个人的 API 管理列表中。在该界面,就可以看到我们获取到的 API 所对应的应用名字和 API key 了。

首先进入到 智谱AI开放平台,点击开始使用或者开发工作台进行注册:
在这里插入图片描述
新注册的用户可以免费领取有效期 1 个月的 100w token 的体验包,进行个人实名认证后,还可以额外领取 400w token 体验包。智谱 AI 提供了 GLM-4 和 GLM-3-Turbo 这两种不同模型的体验入口,可以点击立即体验按钮直接体验。
在这里插入图片描述
对于需要使用 API key 来搭建应用的话,需要点击右侧的查看 API key按钮,就会进入到我们个人的 API 管理列表中。在该界面,就可以看到我们获取到的 API 所对应的应用名字和 API key 了。
在这里插入图片描述
我们可以点击 添加新的 API key 并输入对应的名字即可生成新的 API key。

4.2 调用智谱 GLM API

智谱 AI 提供了 SDK 和原生 HTTP 来实现模型 API 的调用,建议使用 SDK 进行调用以获得更好的编程体验。
首先我们需要配置密钥信息,将前面获取到的 API key 设置到 .env 文件中的 ZHIPUAI_API_KEY 参数,然后运行以下代码加载配置信息。

import os
from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())

智谱的调用传参和其他类似,也需要传入一个 messages 列表,列表中包括 role 和 prompt。我们封装如下的 get_completion 函数,供后续使用。

from zhipuai import ZhipuAIclient = ZhipuAI(api_key=os.environ["ZHIPUAI_API_KEY"]
)def gen_glm_params(prompt):'''构造 GLM 模型请求参数 messages请求参数:prompt: 对应的用户提示词'''messages = [{"role": "user", "content": prompt}]return messagesdef get_completion(prompt, model="glm-4", temperature=0.95):'''获取 GLM 模型调用结果请求参数:prompt: 对应的提示词model: 调用的模型,默认为 glm-4,也可以按需选择 glm-3-turbo 等其他模型temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~1.0,且不能设置为 0。温度系数越低,输出内容越一致。'''messages = gen_glm_params(prompt)response = client.chat.completions.create(model=model,messages=messages,temperature=temperature)if len(response.choices) > 0:return response.choices[0].message.contentreturn "generate answer error"
get_completion("你好")
你好!有什么可以帮助你的吗?如果有任何问题或需要咨询的事情,请随时告诉我。'

这里对传入 zhipuai 的参数进行简单介绍:

messages (list),调用对话模型时,将当前对话信息列表作为提示输入给模型;按照 {“role”: “user”, “content”: “你好”} 的键值对形式进行传参;总长度超过模型最长输入限制后会自动截断,需按时间由旧到新排序

temperature (float),采样温度,控制输出的随机性,必须为正数取值范围是:(0.0, 1.0),不能等于 0,默认值为 0.95。值越大,会使输出更随机,更具创造性;值越小,输出会更加稳定或确定

top_p (float),用温度取样的另一种方法,称为核取样。取值范围是:(0.0, 1.0) 开区间,不能等于 0 或 1,默认值为 0.7。模型考虑具有 top_p 概率质量 tokens 的结果。例如:0.1 意味着模型解码器只考虑从前 10% 的概率的候选集中取 tokens

request_id (string),由用户端传参,需保证唯一性;用于区分每次请求的唯一标识,用户端不传时平台会默认生成

建议您根据应用场景调整 top_p 或 temperature 参数,但不要同时调整两个参数

三、ChatGPT

在这里插入图片描述

ChatGPT,这款在2022年11月横空出世的大语言模型(Large Language Model,简称LLM)界的璀璨明星,无疑成为了当下最为炙手可热的科技话题。其问世之际,恰如一股强劲的旋风,不仅席卷了整个科技圈,更在年底时分,以一己之力掀起了LLM领域的狂澜,让无数人为之侧目。时至今日,尽管OpenAI已推出了性能更为卓越的GPT-4,作为LLM性能巅峰的象征,但ChatGPT依旧以其庞大的用户基数、持续高涨的使用热度以及不可小觑的发展潜力,稳坐LLM领域的头把交椅。在不少非专业人士的心目中,ChatGPT几乎已成为了LLM的代名词,其影响力可见一斑。

OpenAI在推出ChatGPT这一免费Web端产品的同时,还慷慨地提供了多样化的ChatGPT API接口,旨在让广大开发者能够轻松地将LLM的强大功能融入自己的服务之中。无论是通过Python编程语言的便捷调用,还是利用Request请求的灵活接入,开发者都能根据自身需求,选择适合的模型版本进行集成。其中,ChatGPT-3.5与GPT-4作为两大主流选择,各自拥有其独特的魅力与优势。而值得一提的是,即便是同一模型,如ChatGPT-3.5,也细分为多个上下文版本,以满足不同场景下的需求。比如,既有那最为经典的4K上下文长度版本,为追求稳定与效率的开发者所青睐;也有那后来居上的16K上下文长度的gpt-turbo-16k-0613版本,以其更为广阔的视野与更强的处理能力,赢得了不少追求极致体验的用户的心。

如此种种,无不彰显出OpenAI在LLM领域的深厚底蕴与创新能力,同时也让ChatGPT这一产品更加贴近人类写作的自然与复杂,避免了AI生成内容时常见的单调与机械。通过引入复杂的句子结构、详细的描述、重复但多样化的表达、口语化的用词以及偶尔的逻辑跳跃,ChatGPT的文本输出更加贴近人类思维与表达习惯,让人难以分辨其背后的真正作者究竟是人类还是AI。

1.1 API 申请指引
获取并配置 OpenAI API key
OpenAI API 调用服务是付费的,每一个开发者都需要首先获取并配置 OpenAI API key,才能在自己构建的应用中访问 ChatGPT。我们将在这部分简述如何获取并配置 OpenAI API key。

在获取 OpenAI API key 之前我们需要在OpenAI 官网注册一个账号。这里假设我们已经有了 OpenAI 账号,在OpenAI 官网登录,登录后如下图所示:
在这里插入图片描述
我们选择 API,然后点击左侧边栏的 API keys,如下图所示:

在这里插入图片描述
点击 Create new secret key 按钮创建 OpenAI API key ,我们将创建好的 OpenAI API key 复制以此形式 OPENAI_API_KEY=“sk-…” 保存到 .env 文件中,并将 .env 文件保存在项目根目录下。

下面是读取 .env 文件的代码:

import os
from dotenv import load_dotenv, find_dotenv# 读取本地/项目的环境变量。# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中  
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())# 如果你需要通过代理端口访问,还需要做如下配置
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
os.environ["HTTP_PROXY"] = 'http://127.0.0.1:7890'

3.1 调用 OpenAI API

调用 ChatGPT 需要使用 ChatCompletion API,该 API 提供了 ChatGPT 系列模型的调用,包括 ChatGPT-3.5,GPT-4 等。
ChatCompletion API 调用方法如下:

from openai import OpenAIclient = OpenAI(# This is the default and can be omittedapi_key=os.environ.get("OPENAI_API_KEY"),
)# 导入所需库
# 注意,此处我们假设你已根据上文配置了 OpenAI API Key,如没有将访问失败
completion = client.chat.completions.create(# 调用模型:ChatGPT-3.5model="gpt-3.5-turbo",# messages 是对话列表messages=[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Hello!"}]
)

调用该 API 会返回一个 ChatCompletion 对象,其中包括了回答文本、创建时间、id 等属性。我们一般需要的是回答文本,也就是回答对象中的 content 信息。

completion
ChatCompletion(id='chatcmpl-9FA5aO72SD9X0XTpc1HCNZkSFCf7C', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='Hello! How can I assist you today?', role='assistant', function_call=None, tool_calls=None))], created=1713400730, model='gpt-3.5-turbo-0125', object='chat.completion', system_fingerprint='fp_c2295e73ad', usage=CompletionUsage(completion_tokens=9, prompt_tokens=19, total_tokens=28))
print(completion.choices[0].message.content)
Hello! How can I assist you today?

此处我们详细介绍调用 API 常会用到的几个参数:

· model,即调用的模型,一般取值包括“gpt-3.5-turbo”(ChatGPT-3.5)、“gpt-3.5-turbo-16k-0613”(ChatGPT-3.5 16K 版本)、“gpt-4”(ChatGPT-4)。注意,不同模型的成本是不一样的。· messages,即我们的 prompt。ChatCompletion 的 messages 需要传入一个列表,列表中包括多个不同角色的 prompt。我们可以选择的角色一般包括 system:即前文中提到的 system prompt;user:用户输入的 prompt;assistant:助手,一般是模型历史回复,作为提供给模型的参考内容。· temperature,温度。即前文中提到的 Temperature 系数。· max_tokens,最大 token 数,即模型输出的最大 token 数。OpenAI 计算 token 数是合并计算 Prompt 和 Completion 的总 token 数,要求总 token 数不能超过模型上限(如默认模型 token 上限为 4096)。因此,如果输入的 prompt 较长,需要设置较大的 max_token 值,否则会报错超出限制长度。

OpenAI 提供了充分的自定义空间,支持我们通过自定义 prompt 来提升模型回答效果,如下是一个简单的封装 OpenAI 接口的函数,支持我们直接传入 prompt 并获得模型的输出:

from openai import OpenAIclient = OpenAI(# This is the default and can be omittedapi_key=os.environ.get("OPENAI_API_KEY"),
)def gen_gpt_messages(prompt):'''构造 GPT 模型请求参数 messages请求参数:prompt: 对应的用户提示词'''messages = [{"role": "user", "content": prompt}]return messagesdef get_completion(prompt, model="gpt-3.5-turbo", temperature = 0):'''获取 GPT 模型调用结果请求参数:prompt: 对应的提示词model: 调用的模型,默认为 gpt-3.5-turbo,也可以按需选择 gpt-4 等其他模型temperature: 模型输出的温度系数,控制输出的随机程度,取值范围是 0~2。温度系数越低,输出内容越一致。'''response = client.chat.completions.create(model=model,messages=gen_gpt_messages(prompt),temperature=temperature,)if len(response.choices) > 0:return response.choices[0].message.contentreturn "generate answer error"
get_completion("你好")
'你好!有什么可以帮助你的吗?'

在上述函数中,我们封装了 messages 的细节,仅使用 user prompt 来实现调用。在简单场景中,该函数足够满足使用需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542692.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

果断收藏!2024年最好用的七款高效论文写作神器

在2024年,随着人工智能技术的飞速发展,AI论文写作工具成为学术研究和写作领域的一大助力。这些工具不仅能够显著提高写作效率,还能帮助学者和学生节省时间,减少熬夜,同时保证论文质量。以下是七款高效且值得收藏的AI论…

Python_控制循环语句

if语句单分支结构的语法形式如下&#xff1a; 【操作】输入一个数字&#xff0c;小于10&#xff0c;则打印这个数字(if_test01.py)&#xff1a; num input("输入一个数字&#xff1a;") if int(num)<10: print("小于10的数&#xff1a;"num)条件表达式…

2024年华为杯数学建模E题-高速公路应急车道启用建模-基于YOLO8的数据处理代码参考(无偿分享)

利用YOLO模型进行高速公路交通流量分析 识别效果&#xff1a; 免责声明 本文所提供的信息和内容仅供参考。尽管我尽力确保所提供信息的准确性和可靠性&#xff0c;但我们不对其完整性、准确性或及时性作出任何保证。使用本文信息所造成的任何直接或间接损失&#xff0c;本人…

资源创建方式-Job

Job: 容器按照持续运行的时间可分为两类&#xff0c;服务类容器&#xff0c;和工作类容器 服务类容器通常持续提供服务&#xff0c;需要一直运行&#xff0c;比如HTTP,Server&#xff0c;Daemon等&#xff0c; 工作类容器则是一次性任务&#xff0c;比如批处理程序&#xff0…

stm32单片机个人学习笔记7(TIM定时中断)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…

数值计算 --- 平方根倒数快速算法(中)

平方根倒数快速算法 --- 向Greg Walsh致敬&#xff01; 1&#xff0c;平方根倒数快速算法是如何选择初值的?WTF中的神秘数字究竟是怎么来的&#xff1f; 花开两朵&#xff0c;各表一枝。在前面的介绍中&#xff0c;我们已经知道了这段代码的作者在函数的最后使用了NR-iteratio…

Python办公自动化教程(003):PDF的加密

【1】代码 from PyPDF2 import PdfReader, PdfWriter# 读取PDF文件 pdf_reader PdfReader(./file/Python教程_1.pdf) pdf_writer PdfWriter()# 对第1页进行加密 page pdf_reader.pages[0]pdf_writer.add_page(page) # 设置密码 pdf_writer.encrypt(3535)with open(./file/P…

mybatis 配置文件完成增删改查(四) :多条件 动态sql查询

文章目录 就是你在接收数据时&#xff0c;有的查询条件不写&#xff0c;也能从查到相应的stauts也可能为空恒等式标签 代替where关键字 就是你在接收数据时&#xff0c;有的查询条件不写&#xff0c;也能从查到相应的 注意是写字段名 还是 属性名 companyName不写也能查出满足…

亚马逊IP关联揭秘:发生ip关联如何处理

在亚马逊这一全球领先的电商平台上&#xff0c;IP关联是一个不可忽视的问题&#xff0c;尤其是对于多账号运营的卖家而言。本文将深入解析亚马逊IP关联的含义、影响以及应对策略&#xff0c;帮助卖家更好地理解和应对这一问题。 什么是亚马逊IP关联&#xff1f; 亚马逊IP关联…

9.22算法题数组篇

数组的遍历 485.最大连续1的个数 题解 class Solution {public int findMaxConsecutiveOnes(int[] nums) {int maxcount0,count0;for (int i 0;i<nums.length;i){if(nums[i]1){count;}else{maxcountMath.max(maxcount,count);count0;}}maxcountMath.max(maxcount,count);r…

2024AI做PPT软件如何重塑演示文稿的创作

现在AI技术的发展已经可以帮我们写作、绘画&#xff0c;最近我发现了不少ai做ppt的工具&#xff01;不体验不知道&#xff0c;原来合理使用AI工具可以有效的帮我们进行一些办公文件的编写&#xff0c;提高了不少工作效率。如果你也有这方面的需求就接着往下看吧。 1.笔灵AIPPT…

linux-----进程控制

提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、fork()函数 返回值&#xff1a;子进程返回0&#xff0c;父进程返回子进程的id,出错就返回-1. fork创建子进程&#xff0c;如果父子一方发生写入时&#xff0c;就会发生写实拷贝&#xff0c;操作系统就…

【AD24报错】PCB调整线宽后提示 Width Constraint: Track ### on Top Layer的解决方案

【AD24报错】PCB调整线宽提示Width Constraint: Track&#xff08;##mil, ##mil&#xff09;&#xff08;##mil, ##mil&#xff09;on Top Layer的解决方案 一、Width Constraint问题复现二、有关于Width Constraint的解决方案三、可能导致 Width Constraint 报错的其他因素&am…

C++初阶:STL详解(六)——list的介绍和使用

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 前面我们已经了解了strin…

c++----io流

提示&#xff1a;以下 是本篇文章正文内容&#xff0c;下面案例可供参考 1.标准io流 (1)数据的循环输入 对于内置类型&#xff1a;cin和cout直接使用&#xff0c;c已经重载了 (2)对于自定义类型&#xff1a; 需要我们自己对类型进行重载 2.文件io流 ifstream ifile(只输入…

机器学习中结构风险最小化的正则化项用途及原理详解

一、概述 数学和工程领域&#xff0c;正则(Regularize)意味着使某物标准化或规范化&#xff0c;在机器学习领域指的是使模型的行为更加规范化&#xff0c;以避免极端或过于复杂的模型。 正则化项&#xff08;Regularization Term&#xff09;是机器学习模型中用于控制模型复杂…

力扣72-编辑距离(Java详细题解)

题目链接&#xff1a;力扣72-编辑距离 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每一个dp…

鸿蒙OpenHarmony【轻量系统内核扩展组件(动态加载)】子系统开发

基本概念 在硬件资源有限的小设备中&#xff0c;需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素&#xff0c;同时考虑到多平台的通用性&#xff0c;LiteOS-M选择业界标准的ELF加载方案&#xff0c;方便拓展算法生态。LiteOS-M提供类…

微信小程序认证流程

官方描述&#xff1a; 微信接口服务&#xff1a;即微信服务器。 具体的流程如下&#xff1a; 1.前端调用wx.login()获取登录凭证code 2.前端请求后端进行认证&#xff0c;发送code 3.后端请求微信获取openid 4.后端生成认证成功凭证返回给前端。 说明 调用 wx.login() 获…

【二等奖论文】2024年华为杯研赛C题54页成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取论文的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a;https://qm.qq.com/q/Nr0POlQGc2https://qm.qq.com/q/Nr0POlQGc2 摘 要&#xff1a; 随着国民经济发…