《大模型应用开发极简入门》笔记

推荐序

可略过不看。

初识GPT-4和ChatGPT

LLM概述

在这里插入图片描述

NLP的目标是让计算机能够处理自然语言文本,涉及诸多任务:

  • 文本分类:将输入文本归为预定义的类别。
  • 自动翻译:将文本从一种语言自动翻译成另一种语言,包括程序语言。
  • 问题回答:根据给定的文本回答问题。
  • 文本生成:根据给定的输入文本(提示词)生成连贯且相关的输出文本。

n-gram模型:通过使用词频来根据前面的词预测句子中的下一个词,其预测结果是在训练文本中紧随前面的词出现的频率最高的词。有时会生成不连贯的文本,在理解上下文和语法方面仍需改进。

改进n-gram模型的算法:循环神经网络(recurrent neural network,RNN)和长短期记忆(long short-term memory,LSTM)网络,依然存在问题:很难处理长文本序列并记住其上下文。

GPT模型简史:从GPT-1到GPT-4

监督学习:使用大量的手动标记数据。

GPT-1:引入无监督的预训练步骤,使用BookCorpus数据集。

GPT-2:GPT-1的扩展版本,其参数量和训练数据集的规模大约是GPT-1的10倍。公开可用,可从Hugging Face或GitHub下载。

GPT-3:主要区别在于模型的大小和用于训练的数据量,取消微调步骤,

InstructGPT:GPT-3的新版本,通过强化学习和人类反馈进行优化。训练过程主要有两个阶段:监督微调(supervised fine-tuning,SFT)和通过人类反馈进行强化学习(reinforcement learning from human feedback,RLHF)。

Codex:

GPT-4:

LLM用例和产品

如Be My Eyes、可汗学院、Yabble、Waymark、Inworld AI。

AI幻觉

AI会给出错误的,过时的,虚构的信息。

插件和微调

优化GPT模型,提高其能力的两种方式:插件和微调。

GPT模型的局限:没有直接访问互联网的权限,无法获取新信息,其知识仅限于训练数据。

深入了解GPT-4和ChatGPT的API

基本概念

OpenAI API提供的可用模型

OpenAI Playground

OpenAI Playground是一个Web站点,可用来测试OpenAI提供的语言模型,

使用OpenAI Python库

在Windows 11中永久添加或更改环境变量,Windows+R打开运行窗口,键入sysdm.cpl打开系统属性面板,在高级——环境变量里,可使用OpenAI密钥添加一个新的环境变量。

提供命令行实用程序:
openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello world"

使用GPT-4和ChatGPT

借助于tiktoken库(参考GitHub),开发人员能够计算文本字符串中的标记数,进而估算使用成本。

OpenAI提供的可选参数

字段名称类型描述
temperature数值,默认值为1,可接受介于0和2之间的值温度为0意味着对于给定的输入,对模型的调用很可能会返回相同的结果,尽管响应结果会高度一致,但OpenAI不保证确定性输出,温度越高,结果的随机性就越强,LLM通过预测一系列标记来生成回答,根据输入上下文,LLM为每个潜在的标记分配概率,当温度被设置为0时,LLM将始终选择概率最高的标记,较高的温度可产生更多样化、更具创造性的输出
n整型,默认值为1通过设置这个参数,可为给定的输入消息生成多个回答。如果将温度设为0,虽然可得到多个回答,但它们将完全相同或非常相似
stream布尔型,默认值为false允许回答以流的格式呈现,即并非一次性发送整条消息。当回答的内容较长时,可提供更好的用户体验
max_tokens整型指定在聊天中生成的最大标记数。强烈建议将其设置为合适的值以控制成本。如果该参数设置得过大,会被OpenAI忽略:输入和生成的标记总数不能超过模型的上限
tools
response_format
seed

输出参数

字段名称类型描述
choices对象数组包含模型实际响应的教组。默认情况下,该数组只有一个元素,可通过参数n(上表的输入参数)进行更改,该元素包含以下内容。
finish_reason:字符串,回答结束的原因;
index:整型,从choices数组中选择对象的索引;
message:对象,包会一个role和一个content,role始终是assistant,content包括模型生成的文本。通常希望获得这样的字符串:response[‘choices’][0][‘message’][‘content’]
created时间戳生成时的时间戳
id字符串OpenAl内部使用的技术标识符
model字符串所用的模型。这与作为输入设置的模型相同
object字符串对于GPT-4和GPT-3.5模型,这始终应为chat.completion,使用的是ChatCompletion端点
usage字符串提供有关在此查询中使用的标记数的信息,从而提供费用信息。prompt_tokens表示输入中的标记数,completion_tokens:表示输出中的标记数。total_tokens=prompt_tokens+completion_tokens

其他文本补全模型

文本补全和聊天补全。

文本补全使用Completion端点,

字段名称类型描述
model字符串,必埴所用模型ID,与ChatCompletion相同
prompt字符串或数组,默认值是<|endoftext|>生成补全内容的提示词。体现Completion端点与 ChatCompletion端点的主要区别。Completion.create应编码为字符串、字符串数组、标记数组或标记数组的数组。如果没有提供该参数,模型将从新文档的开头生成文本
max_tokens整型最大标记数,默认为16,对于某些用例可能太小,应根据需求进行调整
suffix字符串,默认值是null补全之后的文本。该参数允许添加后缀文本、插入操作

考虑因素

使用API需考虑两个因素:成本和数据隐私。

OpenAI声称不会将作为模型输入的数据用于重新训练;但是,用户的输入将被保留30天,用于监控和使用合规检查目的。即,OpenAI员工和第三方承包商可能会访问你的数据。

个人信息和输入的数据可能会传输到OpenAI在美国的服务器上。

其他

使用GPT-4和ChatGPT构建应用程序

概述

用户提供API密钥时的管理原则:

  • 对于Web应用程序,将API密钥保存在用户设备的内存中,而不要用浏览器存储;
  • 如果选择后端存储API密钥,则需强制采取高安全性的措施,并允许用户自己控制API密钥,包括删除API密钥;
  • 在传输期间和静态存储期间加密API密钥。

使用自己的API密钥,应遵循的最佳实践:

  • 永远不要直接将API密钥写入代码中;
  • 不要将API密钥存储在应用程序的源代码文件中;
  • 不要在用户的浏览器中或个人设备上使用你的API密钥;
  • 设置使用限制,以确保预算可控。

设计原则

没啥好说的,解耦合等架构设计原则。
在这里插入图片描述

漏洞

将用户输入作为提示词发送给LLM的任何面向用户的应用程序都容易受到提示词注入攻击。

建议结合两种方法:

  • 添加分析层来过滤用户输入和模型输出;
  • 意识到提示词注入不可避免,并采取一定的预防措施。

降低受提示词注入攻击的风险的方法:

  • 使用特定规则控制用户输入:具体业务情况设置具体规则;
  • 控制输入长度:控制成本。还能降低风险:输入越短,攻击者找到有效恶意提示词的可能性就越小;
  • 控制输出:验证输出以检测异常情况;
  • 监控和审计:监控应用程序的输入和输出,以便能够在事后检测到攻击。还可对用户进行身份验证,以便检测和阻止恶意账户;
  • 意图分析:分析用户输入以检测提示词注入。

这个问题无法避免,因此需要考虑后果:

  • 指令可能被泄露:确保你的指令不包含任何对攻击者有用的个人数据或信息;
  • 攻击者可能尝试从你的应用程序中提取数据:如果你的应用程序需要操作外部数据源,请确保在设计上不存在任何可能导致提示词注入从而引发数据泄露的方式。

示例项目

获取YouTube字幕:使用第三方库,如youtube-transcript-api,又或者使用Captions Grabber等Web实用工具。

映射—归约:当输入文本超过模型的上限(某个模型不一致,如4096个标记),则需要多次执行请求。
在这里插入图片描述
三个组件:

  • 意图服务:当用户向应用程序提问时,检测用户的意图。应检测出需要使用的数据源,用户所提的问题是否遵守OpenAI的使用规则,是否包含敏感信息。
  • 信息检索服务:将获取意图服务的输出并检索正确的信息。这意味着你已经准备好数据,并且数据在该服务中可用。将比较自己的数据和用户查询之间的嵌入。嵌入将使用OpenAI API生成并存储在向量存储系统中。
  • 响应服务:将使用信息检索服务的输出,并从中生成用户所提问题的答案。

OpenAI提供的Whisper库(参考GitHub)实现从语音到文本的转换功能。

Gradio:构建用户界面的工具,可将ML模型快速转换为可访问的Web界面。

GPT-4和ChatGPT高级技巧

提示工程

一门新兴学科,专注于以最佳实践构建LLM输入,从而尽可能以程序化方式生成目标输出。旨在为生成式AI模型设计和优化提示词,以获得更高质量的模型响应。

在提示词中定义三大要素:角色、上下文和任务。

高级技巧:零样本学习、少样本学习和微调。

TL;DRtoo long; didn't read的缩写,意为太长,没读。据发现,只需在文本末尾添加tl;dr,即可请求模型对文本进行总结。

GPT-4不擅长计算。

思维链,CoT,指使用提示词鼓励模型逐步模仿推理的技术。

零样本思维链策略:zero-shot-CoT strategy。具体地,在提示词的末尾添加让我们逐步思考(Let's think step by step)这样的话,已被证明可使模型解决更复杂的推理问题。

少样本学习:few-shot learning,仅通过提示词中的几个示例就能进行概括并给出有价值的结果。

单样本学习:one-shot learning,只提供一个示例来帮助模型执行任务。优点:更简单、生成速度更快、计算成本(API使用成本)更低。

提示工程中的其他技术:

  • 自洽性(self-consistency)
  • 思维树(tree of thoughts)
  • 推理与行动(ReAct)

改善提示效果的技巧:

  • 指示模型提出更多问题:在提示词的末尾,询问模型是否理解问题并指示模型提出更多问题。
  • 格式化输出:JSON
  • 重复指示:经验表明,重复指示会取得良好的效果,尤其是当提示词很长时。基本思路是,在提示词中多次添加相同的指令,但每次采用不同的表述方式。也可通过负面提示来实现。
  • 使用负面提示:通过指定不希望在输出中看到的内容来引导模型,用于滤除某些类型的回答。
  • 添加长度限制:比如限定200字以内,当然给出的答复可能会稍微超过200字。

微调

使用LangChain和插件增强LLM功能

LangChain

LangChain:专用于开发LLM驱动型应用程序的框架,安装:pip install langchain

关键模块:

  • Models:模型,该模块是由LangChain提供的标准接口,可通过它与各种LLM进行交互。LangChain支持集成OpenAI、Hugging Face、Cohere、GPT4All等提供商提供的不同类型的模型。
  • Prompts:提示词,已成为LLM编程的新标准。该模块包含许多用于管理提示词的工具。
  • Retrieval:该模块让你能够将LLM与你的数据结合使用,之前的叫法是Indexes(索引);
  • Chains:链,通过该模块,LangChain提供了Chain接口。你可以使用该接口创建一个调用序列,将多个模型或提示词组合在一起。
  • Agents:智能体,该模块引入Agent接口。所谓智能体,就是一个可以处理用户输入、做出决策并选择适当工具来完成任务的组件。它以迭代方式工作,采取一系列行动,直到解决问题。
  • Memory(记忆)该模块让你能够在链调用或智能体调用之间维持状态。默认情况下,链和智能体是无状态的。这意味着它们独立地处理每个传入的请求,就像LLM一样。

动态提示词

示例程序:

from langchain.chat_models import ChatOpenAI
from langchain import PromptTemplate, LLMChain
template = """Question: {question}
Let's think step by step.
Answer: """
prompt = PromptTemplate(template=template,
input_variables=["question"])
llm = ChatOpenAI(model_name="gpt-4")
llm_chain = LLMChain(prompt=prompt, llm=llm)
question = """ What is the population of the capital of the country
where the Olympic Games were held in 2016? """
llm_chain.run(question)

智能体及工具

LangChain中有许多预定义的工具,包括谷歌搜索、维基百科搜索、Python REPL、计算器、世界天气预报API等。

智能体安排的步骤如下所述。01.智能体收到来自用户的输入。02.智能体决定要使用的工具(如果有的话)和要输入的文本。03.使用该输入文本调用相应的工具,并从工具中接收输出文本。04.将输出文本输入到智能体的上下文中。05.重复执行步骤2~步骤4,直到智能体决定不再需要使用工具。此时,它将直接回应用户。

from langchain.chat_models import ChatOpenAI
from langchain.agents import load_tools, initialize_agent, AgentType
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
# load_tools函数加载工具
tools = load_tools(["wikipedia", "llm-math"], llm=llm)
# initialize_agent函数创建智能体
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True # 设置为True,可查看智能体的推理过程,并理解它如何做出最终决策
)
question = """What is the square root of the population of the capital
of the Country where the Olympic Games were held in 2016?"""
agent.run(question)

在使用维基百科搜索工具前,需安装相应的Python包:pip install wikipedia

记忆

使用LangChain,可轻松地为链和智能体添加状态以管理记忆。

from langchain import OpenAI, ConversationChain
chatbot_llm = OpenAI(model_name='text-ada-001')
chatbot = ConversationChain(llm=chatbot_llm , verbose=True)
chatbot.predict(input='Hello')

嵌入

通过document_loaders模块,可快速地将文本数据从不同的来源加载到应用程序中。

from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("ExplorersGuide.pdf")
pages = loader.load_and_split()

pip install pypdf安装pypdf包。

from langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()

使用OpenAIEmbeddings前,需安装tiktoken包。

Faiss:向量数据库,主要由Facebook AI团队开发的相似性搜索库。

GPT-4插件

OpenAI的目标是创建一个生态系统,插件可以帮助塑造AI与人类互动的未来。

GPT-4中的插件更专注于第三方服务,而不是LangChain工具。

在开发插件前,必须创建一个API并将其与两个描述性文件关联起来:

  • ai-plugin.json:插件清单文件
  • openapi.yaml:OpenAPI规范

当你开始与GPT-4进行交互时,OpenAI会向GPT-4发送一条隐藏消息,以检查你的插件是否已安装。这条消息会简要介绍你的插件,包括其描述信息、端点和示例。

使用插件的快速入门,参考GitHub,main.py如下:

import json
import quart
import quart_cors
from quart import request# 创建一个Quart App,并配置它允许来自https://chat.openai.com的CORS(cross-origin resource sharing,跨源资源共享)请求
app = quart_cors.cors(quart.Quart(__name__), allow_origin="https://chat.openai.com")
# 跟踪待办事项。如果Python会话重新启动,则不会持久保存
_TODOS = {}@app.post("/todos/<string:username>")
async def add_todo(username):request = await quart.request.get_json(force=True)if username not in _TODOS:_TODOS[username] = []_TODOS[username].append(request["todo"])return quart.Response(response='OK', status=200)@app.get("/todos/<string:username>")
async def get_todos(username):return quart.Response(response=json.dumps(_TODOS.get(username, [])), status=200)@app.delete("/todos/<string:username>")
async def delete_todo(username):request = await quart.request.get_json(force=True)todo_idx = request["todo_idx"]# fail silently, it's a simple pluginif 0 <= todo_idx < len(_TODOS[username]):_TODOS[username].pop(todo_idx)return quart.Response(response='OK', status=200)@app.get("/logo.png")
async def plugin_logo():filename = 'logo.png'return await quart.send_file(filename, mimetype='image/png')@app.get("/.well-known/ai-plugin.json")
async def plugin_manifest():host = request.headers['Host']with open("./.well-known/ai-plugin.json") as f:text = f.read()return quart.Response(text, mimetype="text/json")@app.get("/openapi.yaml")
async def openapi_spec():host = request.headers['Host']with open("openapi.yaml") as f:text = f.read()return quart.Response(text, mimetype="text/yaml")def main():app.run(debug=True, host="0.0.0.0", port=5003)if __name__ == "__main__":main()

解读:

  • Quart是一个Python Web微框架
  • Quart-CORS是一个扩展,可控制CORS

每个插件都需要在API域上有一个ai-plugin.json文件:

{"schema_version": "v1","name_for_human": "TODO List (no auth)","name_for_model": "todo","description_for_human": "Manage your TODO list. You can add, remove and view your TODOs.","description_for_model": "Plugin for managing a TODO list, you can add, remove and view your TODOs.","auth": {"type": "none"},"api": {"type": "openapi","url": "http://localhost:5003/openapi.yaml"},"logo_url": "http://localhost:5003/logo.png","contact_email": "legal@example.com","legal_info_url": "http://example.com/legal"
}

openapi.yaml示例:

openapi: 3.0.1
info:title: TODO Plugindescription: A plugin that allows the user to create and manage a TODO list using ChatGPT. If you do not know the user's username, ask them first before making queries to the plugin. Otherwise, use the username "global".version: 'v1'
servers:- url: http://localhost:5003
paths:/todos/{username}:get:operationId: getTodossummary: Get the list of todosparameters:- in: pathname: usernameschema:type: stringrequired: truedescription: The name of the user.responses:"200":description: OKcontent:application/json:schema:$ref: '#/components/schemas/getTodosResponse'post:operationId: addTodosummary: Add a todo to the listparameters:- in: pathname: usernameschema:type: stringrequired: truedescription: The name of the user.requestBody:required: truecontent:application/json:schema:$ref: '#/components/schemas/addTodoRequest'responses:"200":description: OKdelete:operationId: deleteTodosummary: Delete a todo from the listparameters:- in: pathname: usernameschema:type: stringrequired: truedescription: The name of the user.requestBody:required: truecontent:application/json:schema:$ref: '#/components/schemas/deleteTodoRequest'responses:"200":description: OKcomponents:schemas:getTodosResponse:type: objectproperties:todos:type: arrayitems:type: stringdescription: The list of todos.addTodoRequest:type: objectrequired:- todoproperties:todo:type: stringdescription: The todo to add to the list.required: truedeleteTodoRequest:type: objectrequired:- todo_idxproperties:todo_idx:type: integerdescription: The index of the todo to delete.required: true

https://github.com/openai/plugins-quickstart/blob/main/openapi.yaml

在撰写描述时,必须遵循以下最佳实践:

  • 不要试图影响GPT的情绪、个性或确切回应;
  • 避免指示GPT使用特定的插件,除非用户明确要求使用该类别的服务;
  • 不要为GPT指定特定的触发器来使用插件,因为它旨在自主确定何时使用插件。

https://github.com/openai/whisper

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在AutoDL上部署一个自定义的Python环境并在pycharm上使用

#AutoDL #GPU #租显卡 如何在AutoDL上部署一个自定义的Python环境 下面将会给出如何在AutoDL部署一个自定义的Python环境的详细步骤&#xff0c;希望可以帮助到同样对于显卡具有需求的同学。 注册账号 首先登陆AutoDL官网&#xff1a;https://www.gpuhub.com/register 链接…

高级AI记录笔记(二)

学习位置 B站位置&#xff1a;红豆丨泥 UE AI 教程原作者Youtube位置&#xff1a;https://youtu.be/-t3PbGRazKg?siRVoaBr4476k88gct素材自备 提前将动画素材准备好 枪的武器插槽位置调整好 动画蓝图基本没什么变化 准备武器 在AI的接口蓝图中添加两个函数一个是装备武…

汽车共享管理:SpringBoot技术的最佳实践

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足&#xff0c;创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系…

从0开始学PHP面向对象内容之(常用魔术方法)

一、什么是魔术方法 PHP中的魔术方法是以__两个下划线开头的方法&#xff0c;这些方法提供了一种机制&#xff0c;可以在类的生命周期中拦截某些事件或者进行一些操作 二、魔术方法有哪些 一、__construct()&&__destruct() __construct()构造函数&#xff0c;__des…

PNG图片批量压缩exe工具+功能纯净+不改变原始尺寸

小编最近有一篇png图片要批量压缩&#xff0c;大小都在5MB之上&#xff0c;在网上找了半天要么就是有广告&#xff0c;要么就是有毒&#xff0c;要么就是功能复杂&#xff0c;整的我心烦意乱。 于是我自己用python写了一个纯净工具&#xff0c;只能压缩png图片&#xff0c;没任…

Axure网络短剧APP端原型图,竖屏微剧视频模版40页

作品概况 页面数量&#xff1a;共 40 页 使用软件&#xff1a;Axure RP 9 及以上&#xff0c;非软件无源码 适用领域&#xff1a;短剧、微短剧、竖屏视频 作品特色 本作品为网络短剧APP的Axure原型设计图&#xff0c;定位属于免费短剧软件&#xff0c;类似红果短剧、河马剧场…

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建

Windows,虚拟机Ubuntu和开发板三者之间的NFS服务器搭建 &#xff08;1&#xff09;虚拟机 ubuntu 要使用桥接模式&#xff0c;不能使用其他模式 &#xff08;2&#xff09;通过网线将PC和开发板网口直连:这样的连接&#xff0c;开发板是无法连接外网的 &#xff08;3&#xff…

C# 有趣的小程序—桌面精灵详细讲解

C# 桌面精灵详细讲解 最近写了一个简化版桌面精灵&#xff0c;效果如图所示&#xff0c;可以实现切换动画&#xff0c;说话、鼠标拖动&#xff0c;等功能。具体如何做&#xff0c;我发布了一个资源里面包含ppt详解、源代码以及动画素材。放心吧&#xff0c;免费的&#xff0c;…

视觉SLAM数学基础

本文系统梳理从相机成像模型&#xff0c;通过不同图像帧之间的构造几何约束求解位姿变换&#xff0c;再根据位姿变换和匹配点还原三维坐标的过程&#xff0c;可以作为基于特征点法的视觉SLAM的数学基础。 1、相机成像模型 1.1、针孔相机模型 实际相机的成像方式通常很复杂&a…

计算机新手练级攻略——如何搜索问题

目录 计算机学生新手练级攻略——如何搜索问题1.明确搜索意图2.使用精确关键词3.使用专业引擎搜索4.利用好技术社区1. Stack Overflow2. GitHub3. IEEE Xplore4. DBLP 5.使用代码搜索工具1. GitHub 代码搜索2. Stack Overflow 代码搜索3. Papers with Code4. IEEE Xplore 6.查阅…

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模型&a…

大模型日报|6 篇必读的大模型论文

1.华为推出科学智能体 Agent K v1.0&#xff0c;已达 Kaggle 大师水平 在这项工作中&#xff0c;来自华为诺亚方舟实验室和伦敦大学学院的研究团队提出了 Agent K v1.0&#xff0c;它是一个端到端自主数据科学智能体&#xff08;agent&#xff09;&#xff0c;旨在对各种数据科…

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档&#xff0c;当时刚到公司&#xff0c;发现MySQL的业务核心库&#xff0c;超过亿条的有7张表&#xff0c;最大的表有9亿多条&#xff0c;有37张表超过5百万条&#xff0c;部分表行数如下&#xff1a; 在测试的MySQL环境 &#xff1a; pt-archiv…

cache(二)直接缓存映射

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解&#xff1f; PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 0. 缓存定义 这张图展示了缓…

光流法(Optical Flow)

一、简介 光流法&#xff08;Optical Flow&#xff09;是一种用于检测图像序列中像素运动的计算机视觉技术。其基于以下假设&#xff1a; 1.亮度恒定性假设&#xff1a;物体在运动过程中&#xff0c;其像素值在不同帧中保持不变。 2.空间和时间上的连续性&#xff1a;相邻像素之…

打造自己的RAG解析大模型:(可商用)智能文档服务上线部署

通用版面分析介绍 版面解析是一种将文档图像转化为机器可读数据格式的技术&#xff0c;广泛应用于文档管理和信息提取等领域。通过结合OCR、图像处理和机器学习&#xff0c;版面解析能够识别文档中的文本块、图片、表格等版面元素&#xff0c;最终生成结构化数据&#xff0c;大…

【MySQL】MySQL基础知识复习(下)

前言 上一篇博客介绍了MySQL的库操作&#xff0c;表操作以及CRUD。 【MySQL】MySQL基础知识复习&#xff08;上&#xff09;-CSDN博客 本篇将进一步介绍CRUD操作&#xff0c;尤其是查找操作 目录 一.数据库约束 1.约束类型 1.1NULL约束 1.2UNIQUE&#xff1a;唯一约束 …

新的服务器Centos7.6 安卓基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

性能测试|JMeter接口与性能测试项目

前言 在软件开发和运维过程中&#xff0c;接口性能测试是一项至关重要的工作。JMeter作为一款开源的Java应用&#xff0c;被广泛用于进行各种性能测试&#xff0c;包括接口性能测试。本文将详细介绍如何使用JMeter进行接口性能测试的过程和步骤。 JMeter是Apache组织开发的基…

linux物理内存管理:node,zone,page

一、总览 对于物理内存内存&#xff0c;linux对内存的组织逻辑从上到下依次是&#xff1a;node&#xff0c;zone&#xff0c;page&#xff0c;这些page是根据buddy分配算法组织的&#xff0c;看下面两张图&#xff1a; 上面的概念做下简单的介绍&#xff1a; Node&#xff1a…