Python Notes 1 - introduction with the OpenAI API Development
Official document:https://platform.openai.com/docs/api-reference/chat/create
1. Use APIfox to call APIs
2.Use PyCharm to call APIs
2.1-1 WIN OS.Configure the Enviorment variable
#HK代理环境,不需要科学上网(价格便宜、有安全风险,适合个人开发调试)
setx OPENAI_BASE_URL "https://api.openai-hk.com/v1"
setx OPENAI_API_KEY "hk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"#官方环境,需要科学上网(价格高、安全可靠,适合个人企业生产部署)
setx OPENAI_BASE_URL "https://api.openai.com/v1"
setx OPENAI_API_KEY "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Temporaily use the API through HK proxy.
Check if environment variable is configured successfully.
import osprint(os.getenv('OPENAI_BASE_URL'))
2.1-2 MAC OS Configure the Environment variable
#HK代理环境,不需要科学上网
export OPENAI_BASE_URL='https://api.openai-hk.com/v1'
export OPENAI_API_KEY='hk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'#官方环境,需要科学上网
export OPENAI_BASE_URL='https://api.openai.com/v1'
export OPENAI_API_KEY='sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
if Mac os is unable to read the configured environment variables,u need to modify the .zshrc file.
Refer to the URL below.
MacOS环境变量source生效但重启后又失效 - 程序员小艺 - 博客园
2.2 Call an API using PyCharm
2.2.1.as APIfox(HTTPClient):Make a POST request to call the API,similar to how it's done in APIfox.
import requests
import json
import osurl = os.getenv('OPENAI_BASE_URL') + "/chat/completions"
# print(os.getenv('OPENAI_BASE_URL'))
payload = json.dumps({"model": "gpt-4o","messages": [{"role": "system", "content": "assistant"},{"role": "user", "content": "Hello"}]
})
headers = {'Content-Type': 'application/json','Authorization': 'Bearer ' + os.getenv('OPENAI_API_KEY'),
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
2.2.2 Use the offical SDK to call the API
First,domwload the OpenAI package using the console and import it.
# pip install openai==1.40.3
Call the API using the SDK
from openai import OpenAI
# pip install openai==1.40.3
import os
# 从环境变量中读取OPENAI_BASE_URL
print(os.getenv('OPENAI_BASE_URL'))
# 初始化 OpenAI 服务。
client = OpenAI()
completion = client.chat.completions.create(model="gpt-4o",messages=[{"role": "system", "content": "assistant"},{"role": "user", "content": "Hello"}]
)
print(completion.choices[0].message.content)
There was a problem when running the code
Traceback (most recent call last):
File "D:\BaiduNetdiskDownload\AIapp\sub\1_AI及LLM基础\day02_OpenAI 开发\day2-demo\sdk_call.py", line 7, in <module>
clien = OpenAI()
File "C:\Users\Administrator\PycharmProjects\PythonProject\.venv_learn\Lib\site-packages\openai\_client.py", line 123, in __init__
super().__init__(
~~~~~~~~~~~~~~~~^
version=__version__,
^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
_strict_response_validation=_strict_response_validation,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Administrator\PycharmProjects\PythonProject\.venv_learn\Lib\site-packages\openai\_base_client.py", line 843, in __init__
self._client = http_client or SyncHttpxClientWrapper(
~~~~~~~~~~~~~~~~~~~~~~^
base_url=base_url,
^^^^^^^^^^^^^^^^^^
...<5 lines>...
follow_redirects=True,
^^^^^^^^^^^^^^^^^^^^^^
)
^
File "C:\Users\Administrator\PycharmProjects\PythonProject\.venv_learn\Lib\site-packages\openai\_base_client.py", line 741, in __init__
super().__init__(**kwargs)
~~~~~~~~~~~~~~~~^^^^^^^^^^
TypeError: Client.__init__() got an unexpected keyword argument 'proxies'
The error could be caused by an outdated SDK versiong,trying to update SDK version
pip install --upgrade openai
After updating the SKD ,the code now runs successfully.
SDK provide a more convenient interface;under the hood,they rely on the request libary for making HTTP request
2.3 Call the embedding(嵌入 向量数据库) API in Python
embedding transforms prompt words into vector representations(向量表示)
2.3.1 request(HTTP)
One advantage of using the request library is that it provides access to the full response,including headers,status code and body.
import requests
import json
import osurl = os.getenv('OPENAI_BASE_URL') + "/embeddings"payload = json.dumps({"model": "text-embedding-ada-002","input": "cat"
})
headers = {'Content-Type': 'application/json','Authorization': 'Bearer ' + os.getenv('OPENAI_API_KEY'),
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
2.3.2 SDK
Meanwhile,SDK typically provide only pre-processed or pre-packaged object,which may limit access to the raw response date(原始数据). Tip:press Ctrl+B jump to the method
from openai import OpenAI# 初始化 OpenAI 服务。
client = OpenAI()# 调用嵌入 API
def get_embedding(text, model="text-embedding-ada-002"):response = client.embeddings.create(input=text,model=model)return response.data[0].embedding# 示例文本
text = "Hello, world!"# 获取嵌入向量
embedding = get_embedding(text)print("Embedding vector:", embedding)
2.4 Call the vision-endabled GPT4o using a local/online image
2.4.1 request local image
use # to comment code
import os
import base64 #use base64 transform image
import requestsdef encode_image(image_path):with open(image_path, "rb") as image_file:return base64.b64encode(image_file.read()).decode('utf-8')# Path to your image
image_path = "../images/cat.jpeg"# Getting the base64 string
base64_image = encode_image(image_path)headers = {"Content-Type": "application/json","Authorization": f"Bearer " + os.getenv('OPENAI_API_KEY')
}payload = {"model": "gpt-4o","messages": [{"role": "user","content": [{"type": "text","text": "这张照片里有什么?"},{"type": "image_url","image_url": {"url": f"data:image/jpeg;base64,{base64_image}"#input base64 format to url}}]}],"max_tokens": 300
}response = requests.post(os.getenv('OPENAI_BASE_URL') + "/chat/completions", headers=headers, json=payload)print(response.json())
2.4.2 SDK online
from openai import OpenAIclient = OpenAI()
response = client.chat.completions.create(model="gpt-4o",messages=[{"role": "user","content": [{"type": "text", "text": "这张照片里有什么?"},{"type": "image_url","image_url": {"url": "https://p7.itc.cn/q_70/images03/20220805/7a369d8407144b11bfd598091095c959.jpeg",#"url": f"data:image/jpeg;base64,{base64_image}"},},],}],max_tokens=50,
)
print(response.choices[0])
2.5 Respond whit the specified Json schema
JSON is well-suited for converting data into objects
from openai import OpenAIclient = OpenAI()response = client.chat.completions.create(model="gpt-4o",response_format={"type": "json_object"},#ensure respond is JSON schcemamessages=[{"role": "system", "content": "你是一个助手,请用中文输出JSON"},{"role": "user", "content": "帮我写一个冒泡算法?"}]
)
print(response.choices[0].message.content)
before not using JSON schema(more suitable for page display or user reading
after using JSON schema
2.6 Seed for reproducible output(重现输出)
As the seed value adcreases,the differences become more pronounced(obvious明显)
from openai import OpenAI
client = OpenAI()for i in range(3):response = client.chat.completions.create(model="gpt-4o",# 对于三个请求中的每一个,使用相同的 seed 参数 42,同时将所有其他参数保持相同,我们便能够生成更一致的结果。seed=2, #种子temperature=0.7,max_tokens=50,messages=[{"role": "system", "content": "你是一个生成故事机器人"},{"role": "user", "content": "告诉我一个关于宇宙是如何开始的故事?"}])print(f'故事版本{i + 1}:' + response.choices[0].message.content)del response #this statement is not necessary and can be omitted
seed = 2
seed = 40
2.7 Count tokens
Count tokens in the development console for looped chat.
Need to install the tiktoken libary
pip install --upgrade tiktoken
from openai import OpenAI
# pip install --upgrade tiktoken
#tiktoken 用来统计token使用
import tiktoken#package for count tokenclient = OpenAI()
# 初始化 tiktoken 编码器
encoder = tiktoken.encoding_for_model("gpt-4")def count_tokens(text):encoder.encode(text)# 将输入的文本text转换为对应的token列表。具体来说,它使用tiktoken库中的编码器将文本进行编码,以便后续处理。tokens = encoder.encode(text)# 统计文本中的 token 数量return len(tokens)def main():# 初始化聊天记录messages = [{"role": "system", "content": "You are a helpful assistant."}]print("开始聊天吧!输入 'exit' 退出。")total_tokens = 0while True:# 获取用户输入user_input = input("用户: ")if user_input.lower() == 'exit':break# 添加用户消息到聊天记录messages.append({"role": "user", "content": user_input})# 统计用户输入的 token 数量并累加user_tokens = count_tokens(user_input)total_tokens += user_tokens# 调用 GPT-4 模型response = client.chat.completions.create(model="gpt-4",messages=messages,max_tokens=150,temperature=0.7,top_p=1,n=1)# 获取助手的回复assistant_message = response.choices[0].message.content.strip()# 添加助手的回复到聊天记录messages.append({"role": "assistant", "content": assistant_message})# 统计助手回复的 token 数量并累加assistant_tokens = count_tokens(assistant_message)total_tokens += assistant_tokens# 输出用户输入和助手的回复print(f"助手: {assistant_message}")# 输出当前聊天记录的总 token 数量print(f"用户tokens数: {user_tokens},助手tokens数: {assistant_tokens},总token数: {total_tokens}")if __name__ == "__main__":#Only when the module is run as the main program directlymain()
2.8 Consol chat loop with session length management based on maximum token limit
from openai import OpenAI
# pip install tiktoken
import tiktokenclient = OpenAI()# 这是 API 请求和响应的总 token 数量限制。对于 GPT-4 模型,这个值通常是 4096。
MAX_TOKENS = 8 # 设置最大 token 数量
# 这是我们预留给模型响应的 token 数量。我们需要在计算对话的最大 token 数量时减去这个值,以确保有足够的空间来容纳模型的响应。
MAX_RESPONSE_TOKENS = 6 # 设置响应中预留的最大 token 数量
encoder = tiktoken.encoding_for_model("gpt-4")
def count_tokens(text):encoder.encode(text)# 将输入的文本text转换为对应的token列表。具体来说,它使用tiktoken库中的编码器将文本进行编码,以便后续处理。tokens = encoder.encode(text)# 统计文本中的 token 数量return len(tokens)
# 假设 MAX_TOKENS 是 4096,而 MAX_RESPONSE_TOKENS 是 500,那么:
# 我们希望对话历史的 token 数量不要超过 3596 (4096 - 500)。
# 这样,当我们发送对话历史给 API 时,仍然有 500 个 token 的空间用于模型生成的响应。
def manage_token_limit(messages):current_tokens = count_tokens(messages)if current_tokens > (MAX_TOKENS - MAX_RESPONSE_TOKENS):print(f"当前会话 token 数量: {current_tokens}, 超过最大 token 数量: {MAX_TOKENS - MAX_RESPONSE_TOKENS}")return Falsereturn Truedef get_gpt_response(messages):"""获取 GPT-4 的响应"""response = client.chat.completions.create(model="gpt-4",messages=messages)return response.choices[0].message.content.strip()def main():print("Chat with GPT-4. Type 'exit' to end the conversation.")while True:messages = []#this statement must be inside the while loop to ensure that the variable is reset on each iteration(每次迭代)user_input = input("用户: ")if user_input.lower() == 'exit':breakmessages.append({"role": "user", "content": user_input})# 管理用户输入以确保总 token 数量不超过限制if not manage_token_limit(user_input):continueresponse = get_gpt_response(messages)print(f"GPT: {response}")#The role of 'f' is to format string for input variablesmessages.append({"role": "assistant", "content": response})if __name__ == "__main__":main()
相关文章:
Python Notes 1 - introduction with the OpenAI API Development
Official document:https://platform.openai.com/docs/api-reference/chat/create 1. Use APIfox to call APIs 2.Use PyCharm to call APIs 2.1-1 WIN OS.Configure the Enviorment variable #HK代理环境,不需要科学上网(价格便宜、有安全风险&#…...
MySQL图形化界面工具--DataGrip
之前介绍了在命令行进行操作,但是不够直观,本次介绍图形化界面工具–DataGrip。 安装DataGrip 官网链接:官网下载链接 常规的软件安装流程。 参考链接:DataGrip安装 使用DataGrip 添加数据源: 第一次使用最下面会…...
WPF+Prism View与ViewModel绑定
1、开发环境,Win10VS2022.NET8Prism.DryIoc(9.0.537)或Prism.Unity。 2、通过NuGet安装Prism.DryIoc(9.0.537)或Prism.Unity。 2.1、创建ViewModels文件夹用于存放ViewModel文件、创建Views文件夹存放View文件。 将…...
关于Zotero
1、文献数据库: Zotero的安装 Zotero安装使用_zotero只能安装在c盘吗-CSDN博客 2、如何使用zotero插件 我刚下载的时候就结合使用的是下面的这两个博主的分享,感觉暂时是足够的。 Zotero入🚪基础 - 小红书 Green Frog申请easyscholar密钥…...
Luma AI 简单几步生成视频
简单几步生成视频 登录我们的 AceDataPlatform 网站,按照下图所示即可生成高质量的视频,同时,我们也提供了简单易用的 API 方便集成调用,可以查看 Luma API了解详情 技术介绍 我们使用了 Luma 的技术,实现了上面的图…...
从索尼爱立信手机打印短信的简单方法
昨天,我买了一部新手机来代替我的旧索尼爱立信Xperia,但手机上有很多珍贵的短信,是我男朋友发来的,我不想失去它们。然后我尝试打印它们,但我无法从我的索尼爱立信手机中取出它们。您有什么从索尼爱立信手机打印短信的…...
深入浅出梯度下降算法:快速抵达函数最小值的方法
引言 梯度是机器学习和优化领域中不可或缺的概念,它为我们提供了理解和调整多维空间中函数行为的工具。本文将详细介绍梯度的定义、性质,并通过具体的一元和多元函数案例展示如何使用梯度下降算法找到最佳参数。 一、梯度的基础知识 1.1 定义与计算 梯…...
OPC DA激活报错
报错提示: 解决办法: 查看Missing license keys,根据提示破解...
PyTorch到C++再到 CUDA 的调用链(C++ ATen 层) :以torch._amp_update_scale_调用为例
今天在看pytorch源码,遇到的问题,记录一下 。 source:/lib/python3.10/site-packages/torch/amp/grad_scaler.py torch._amp_update_scale_(_scale,_growth_tracker,found_inf_combined,self._growth_factor,self._backoff_factor,self._growth_interva…...
yolov5核查数据标注漏报和误报
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、误报二、漏报三、源码总结 前言 本文主要用于记录数据标注和模型预测之间的漏报和误报思想及其源码 提示:以下是本篇文章正文内容,…...
C# 设计模式概况
什么是设计模式 大家熟知的GOF23种设计模式,源自《Design Patterns: Elements of Reusable Object-Oriented Software》一书,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著,四人组Gang of Four简称GOF。总结了在面向…...
STM32 NOR FLASH(SPI FLASH)驱动移植(2)
2)FLASH 读取函数 /* * brief 读取 SPI FLASH * note 在指定地址开始读取指定长度的数据 * param pbuf : 数据存储区 * param addr : 开始读取的地址(最大 32bit) * param datalen : 要读取的字节数(最大 65535) * retval 无 */ void norflash_read(uint8_t *pbuf…...
Redis高可用集群部署
根据集群分析和持久化优化方式,这里用docker部署redis分片集群模式并设置为aof-rdb共用方式存储 准备 2核4G及以上服务器;安装好docker环境;配置docker镜像仓库(https://www.ecnfo.com:1443),因为下面镜像是从这个镜像仓库下载的{"builder": {"gc"…...
【玩转23种Java设计模式】行为型模式篇:命令模式
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 汇总目录链接&…...
代码随想录算法【Day10】
今日只做一题,剩下的题后面补 232.用栈实现队列 class MyQueue { public:stack<int> stIn;stack<int> stOut;/** Initialize your data structure here. */MyQueue() {}/** Push element x to the back of queue. */void push(int x) {stIn.push(x);}…...
WKWebView打开pdf文件乱码?各种方案整理。
近期有用户反馈使用我们FinClip SDK运行的小程序,在iOS18.0.1的系统上打开部分pdf文件的时候出现了乱码的现象, 低版本的系统打开没有出现乱码的现象,用电脑打开这个pdf文件也是正常的。经过排查,可能是iOS18的系统对WKWebView进行了调整处理…...
Android中创建ViewModel的几种方法
文章目录 1. 使用 `ViewModelProvider`1.1 在 `Activity` 中创建 `ViewModel`1.2 在 `Fragment` 中创建 `ViewModel`2. 使用 `ViewModelFactory`2.1 创建 `ViewModel` 和 `ViewModelFactory`2.2 在 `Activity` 或 `Fragment` 中使用 `ViewModelFactory`3. 使用 `by viewModels(…...
【C语言】_指针运算
目录 1. 指针-整数 2. 指针-指针 2.1 指针-指针含义 2.2 指针-指针运算应用:实现my_strlen函数 3. 指针的关系运算(大小比较) 1. 指针-整数 联系关于指针变量类型关于指针类型和指针-整数相关知识: 原文链接如下࿱…...
多层设计模式:可否设计各层之间公用的数据定义模块?
在多层程序设计模式中,可以设计一个各层之间公用的数据类型定义模块。这种模块通常被称为“公共模块”或“共享模块”,它包含所有层都需要使用的数据类型定义。这有助于确保数据在不同层之间传递时的一致性和准确性。 以下是一些设计这种公用数据类型定…...
深度学习模型格式转换:pytorch2onnx(包含自定义操作符)
将PyTorch模型转换为ONNX(Open Neural Network Exchange)格式是实现模型跨平台部署和优化推理性能的一种常见方法。PyTorch 提供了多种方式来完成这一转换,以下是几种主要的方法: 一、静态模型转换 使用 torch.onnx.export() t…...
CDPHudi实战-集成spark
[一]使用Spark-shell 1-配置hudi Jar包 [rootcdp73-1 ~]# for i in $(seq 1 6); do scp /opt/software/hudi-1.0.0/packaging/hudi-spark-bundle/target/hudi-spark3.4-bundle_2.12-1.0.0.jar cdp73-$i:/opt/cloudera/parcels/CDH/lib/spark3/jars/; done hudi-spark3.4-bu…...
Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s
前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 官方文档…...
汇编语言与接口技术--跑马灯
一、 实验要求 在单片机开发板的LED灯D1~D8上实现跑马灯。LED与单片机引脚连线电路如下图: 单片机芯片选择AT89C51,晶振频率设为12MHz,操作参考单片机开发板使用说明。跑马灯点亮的时间间隔约为1秒。分别用定时器的模式1和模式2实现。(用P83…...
springcloud篇3-docker需熟练掌握的知识点
docker的原理请参考博文《Docker与Kubernetes》。 一、安装docker的指令 1.1 安装yum工具 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken补充:配置镜像源 注意: yum安装是在线联网下载安装,而很多的资源…...
Unity网络通信相关
Socket 通信一张图搞定 谁提供服务谁绑定端口,建立Listener,写Host...
leetcode 173.二叉搜索树迭代器栈绝妙思路
以上算法题中一个比较好的实现思路就是利用栈来进行实现,以下方法三就是利用栈来进行实现的,思路很好,很简练。进行next的时候,先是一直拿到左边的子树,直到null为止,这一步比较好思考一点,下一…...
模电面试——设计题及综合分析题0x01(含答案)
1、已知某温控系统的部分电路如下图(EDP070252),晶体管VT导通时,继电器J吸合,压缩机M运转制冷,VT截止时,J释放,M停止运转。 (1)电源刚接通时,晶体…...
Linux性能优化-系列文章-汇总
前言 Linux性能优化,涉及了CPU,内存,磁盘,网络等很多方面,一方面涉及的知识面广,同时又要在原理方面掌握一定的深度。所以整理总结了Linux性能优化的一系列文章。当处理Linux性能问题的时候,可…...
仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2
在当今这个高效运作、安全第一的物流时代,仓库作为供应链的中心地带,其安全与效率直接关系到企业的命脉。 随着科技的飞速发展,传统叉车作业模式正逐步向智能化、安全化转型,而在这场技术革新中,AI防碰撞系统N2024G-2…...
threejs 安装
参考了threejs官方网站文档安装,上来就是各种报错,最终参考之前大佬发的攻略解决了。过程供大家参考。 官方文档地址如下: three.js docshttps://threejs.org/docs/index.html#manual/en/introduction/Installation 具体参考这篇攻略&#…...
《 C++ 点滴漫谈: 十七 》编译器优化与 C++ volatile:看似简单却不容小觑
摘要 本文深入探讨了 C 中的 volatile 关键字,全面解析其基本概念、典型用途以及在现代编程中的实际意义。通过剖析 volatile 的核心功能,我们了解了它如何避免编译器优化对硬件交互和多线程环境中变量访问的干扰。同时,文章分析了 volatile…...
【Vim Masterclass 笔记05】第 4 章:Vim 的帮助系统与同步练习
文章目录 Section 4:The Vim Help System(Vim 帮助系统)S04L14 Getting Help1 打开帮助系统2 退出帮助系统3 查看具体命令的帮助文档4 查看帮助文档中的主题5 帮助文档间的上翻、下翻6 关于 linewise7 查看光标所在术语名词的帮助文档8 关于退…...
电脑中缺失的nvrtc64_90.dll文件如何修复?
一、文件丢失问题 案例:nvrtc64_90.dll文件缺失 问题分析: nvrtc64_90.dll是NVIDIA CUDA Runtime Compilation库的一部分,通常与NVIDIA的CUDA Toolkit或相关驱动程序一起安装。如果该文件丢失,可能会导致基于CUDA的应用程序&…...
leveldb的DBSequence从哪里来,到哪里去?
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) leveldb数据库的DBSequence从哪里来,到哪里去? 大概的情形是,leveldb的记录初始DBSequence为0,随着记录的增加,记录sequence不断随着增加,并持久化…...
nginx高可用集群搭建
本文介绍nginx高可用集群的搭建。利用keepalived实时检查nginx进程是否存活、keepalived的虚拟ip技术,达到故障转移的目的。终端用户通过访问虚拟ip,感知不到实际发生的故障。架构图如下: 0、环境 Ubuntu:22.04.2 ltsnginx: 1.…...
基于TCP的Qt网络通信
基于TCP的Qt网络通信 项目源码:https://github.com/say-Hai/TcpSocketLearn/tree/QTcpSocket 在标准C没有提供专门用于套接字通信的类,所以只能使用操作系统提供的基于C的API函数,但是Qt就不一样了,它是C的一个框架并且里边提供了…...
MySql---进阶篇(六)---SQL优化
6.1:insert的优化: (1)普通的插入数据 如果我们需要一次性往数据库表中插入多条记录,可以从以下三个方面进行优化。 insert into tb_test values(1,tom); insert into tb_test values(2,cat); insert into tb_test values(3,jerry); 1). 优…...
什么是回归测试?
什么是回归测试? 回归测试被定义为一种软件测试,以确认最近的程序或代码更改没有对现有功能产生不利影响。回归测试只是对已经执行的测试用例的全部或部分选择,重新执行这些用例以确保现有功能正常工作。 进行此测试是为了确保新的代码更改不会对现有…...
详解MySQL SQL删除(超详,7K,含实例与分析)
文章目录 前言1. 删除表中的所有记录基本语法使用场景注意事项运用实例分析说明2. 删除特定记录基本语法使用场景注意事项运用实例分析说明3. 删除单条记录基本语法使用场景注意事项运用实例分析说明4. 删除违反引用完整性的记录基本语法使用场景注意事项运用实例分析说明5. 删…...
lec7-路由与路由器
lec7-路由与路由器 1. 路由器硬件 路由器的硬件部分: 断电失去: RAM断电不失去:NVRAM, Flash, ROMinterface也算是一部分 路由器是特殊组件的计算机 console 口进行具体的调试 辅助口(Auxiliary&…...
知识库召回列表模式揭秘:实现智能信息检索新突破
目录 一、什么是知识库的召回列表模式 召回列表模式的工作流程 典型应用场景 召回列表模式的优势 二、知识库召回列表模式的技术实现细节 1. 数据准备 2. 召回策略 3. 排序策略 4. 结果展示与交互 三、技术架构示例 1. 系统架构 2. 代码示例 四、总结 随着人工智能…...
WCH的CH57X的J-LINK的芯片FLASH烧录文件
WCH的CH57X的J-LINK的芯片FLASH烧录文件,需要在 D:\app\Keil_v5\SEGGER\JLink_V616a目录中JLINKDEVICES.XML文件中修改并增加以下信息。同时,需要加入CH57X.FLM文件 <Device> <ChipInfo Vendor"WCH" Name"CH57X" WorkRAMAddr"…...
Rust 基础入门指南
Rust 基础入门指南 1. Rust 语言概述 Rust 的历史与设计理念 Rust 是由 Mozilla 研究院的 Graydon Hoare 于2010年开始创建的系统编程语言。其设计目标是创建一种安全、并发、实用的编程语言,特别关注内存安全和并发性。 Rust 的核心设计理念包括: …...
Qt|QWidget窗口支持旋转
功能实现:使用QWidget创建的窗口支持窗口旋转功能。 展示的示例中支持由水平方向旋转至垂直方向。至于其它角度旋转的问题,看完这篇文章后应该会很简单能实现的! 开发环境:win VS2019 Qt 5.15.2 在实现之前也有想用使用 QProp…...
docker compose部署kafka集群
先部署zookeeper集群,启动 参考:docker compose部署zookeeper集群-CSDN博客 再部署kafka集群 networks: net: external: true services: kafka1: restart: always image: wurstmeister/kafka:2.13_2.8.1 container_name: kafka1 …...
Spring源码分析之事件机制——观察者模式(三)
目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…...
如何使用axios实现文件上传
文件上传 axios 支持文件上传,通常使用 FormData 对象来封装文件和其他表单数据。 import axios from axios;const formData new FormData(); formData.append(file, fileInput.files[0]); formData.append(description, 文件描述);axios.post(/api/upload, form…...
wx016基于springboot+vue+uniapp的超市购物系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互…...
JeeSite 快速开发平台:全能企业级快速开发解决方案|GitCode 光引计划征文展示
投稿人GitCode ID:thinkgem 光引计划投稿项目介绍 JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用 Beetl、Bootstrap、Admi…...