人工智能和机器学习5 (复旦大学计算机科学与技术实践工作站)语言模型相关的技术和应用、通过OpenAI库,调用千问大模型,并进行反复询问等功能加强

news2024/11/13 8:00:49

前言

       在这个日新月异的AI时代,自然语言处理(NLP)技术正以前所未有的速度改变着我们的生活方式和工作模式。作为这一领域的佼佼者,OpenAI不仅以其强大的GPT系列模型引领风骚,还通过其开放的API接口,让全球开发者能够轻松接入并探索AI的无限可能。今天,我将带大家一起探索如何使用OpenAI库来调用“千问大模型”(这里假设的模型名,实际中可能是GPT-3、GPT-4或其他类似的高级语言模型),并通过一系列编程技巧实现反复询问、上下文记忆等功能加强,从而构建出更加智能、流畅的对话体验。

一、环境准备

       首先,确保你的开发环境已经安装了Python,并配置了必要的库。对于OpenAI的API调用,你需要安装openai库。可以通过pip命令轻松完成安装:

pip install openai

主要讲语言模型相关的技术和应用。
和之前的课不衔接,之前有地方还没理解的同学也可以直接听。大家有安装任意版本python环境即可,提前安装openai包,命令是 pip install openai
只用这一个包就可以了
另外大家注册下 通义千问:通义 (aliyun.com)icon-default.png?t=N7T8https://tongyi.aliyun.com/qianwen/ 和 阿里云 平台:阿里云-计算,为了无法计算的价值 (aliyun.com)icon-default.png?t=N7T8https://www.aliyun.com/并用成年人身份证实名认证阿里云平台。

接下来,你需要在OpenAI的官方网站注册账号,并获取你的API密钥(API Key)。这个密钥将用于你的Python脚本中,以便能够调用OpenAI的API。

不用代理,搜索“通义千问”:(点击如下图会打开通义千问官网,我们不用点击直接搜索)

找到通义千问|模型服务灵积如何定制通义千问模型_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)icon-default.png?t=N7T8https://help.aliyun.com/zh/dashscope/developer-reference/finetune-qwen?spm=5176.21213303.J_qCOwPWspKEuWcmp8qiZNQ.148.2fe62f3dvLEJJc&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@2399895._.ID_help@@%E6%96%87%E6%A1%A3@@2399895-RL_%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE-LOC_llm-OR_ser-V_3-RE_new2@@cardNew-P0_13

点击开发参考,按照教程先去开通DashScope并创建获取API-KEY如何获取通义千问API的KEY_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)icon-default.png?t=N7T8https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=a2c4g.11186623.0.0.270c5796VLjNWG

开通DashScope

需要在开通DashScope后,才可以获得API-KEY,开通DashScope请参考以下步骤:

1、访问DashScope管理控制台:前往控制台。

2、点击“未开通”,在控制台“总览”页下,单击去开通

3、阅读服务协议,确认无误后单击立即开通

4、开通完成:

获取API-KEY

按照以下步骤获取DashScope的API-KEY。

安全提示:

  1. 访问DashScope管理控制台API-KEY管理页面:前往API-KEY管理,单击创建新的API-KEY

  2. 系统创建生成API-KEY,并在弹出的对话框中展示,您可以单击复制按钮将API-KEY的内容复制保存。(sk-xx5d4b8c7a9d42e6a31965f0632fxxxx)实在忘记了,就删了重新建一个吧~

  3. 新建一个tyqw.py文件:把自己的API-KEY输入进去,留着一会备用,(阿里云这个API-KEY既可以当作用户又可以当作密码用)

    api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx'

  4. 复制并在安全的地方保存API-KEY后,单击我已保存,关闭。此次创建的API-KEY可立即用于调用DashScopeAPI,对API-KEY的后续操作均可在当前的API-KEY管理页面进行。 

二、基本调用示例

API platform | OpenAIicon-default.png?t=N7T8https://openai.com/api/在开始之前,让我们先通过一个简单的例子来展示如何使用OpenAI库发送请求到千问大模型:

import openai  
  
# 设置你的API密钥  
openai.api_key = "YOUR_API_KEY_HERE"  
  
# 发送请求到模型  
response = openai.Completion.create(  
  engine="text-davinci-003",  # 假设使用GPT-3的某个版本,实际应根据千问大模型的名称调整  
  prompt="请问今天天气如何?",  
  max_tokens=100,  
  temperature=0.5,  
  top_p=1.0,  
  frequency_penalty=0.0,  
  presence_penalty=0.0  
)  
  
# 打印模型回复  
print(response['choices'][0]['text'])

如何定制通义千问模型_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)icon-default.png?t=N7T8https://help.aliyun.com/zh/dashscope/developer-reference/finetune-qwen?spm=a2c4g.11186623.0.0.75735796iyp8e6通义千问是阿里云自主研发的超大规模语言模型,具备多领域、多任务的自然语言处理能力。它能进行创作(如写故事、公文等)、编写代码、翻译多种语言、文本润色和摘要、角色扮演对话及制作图表等。该模型支持fine-tune,提供多种版本如qwen-turbo、qwen-7b-chat及qwen-72b-chat,以适应不同需求。

在定制模型时,需要准备JSON格式的训练数据,包括用户与助手的对话内容。数据准备支持messages、prompt-completion及human-assistant(已弃用)三种格式。模型训练可通过设置超参数如n_epochs、batch_size和learning_rate来优化。

使用通义千问模型进行定制时,有限制条件如同时只能运行一个定制任务,且最多可创建五个定制任务(不包括失败及取消的)。定制任务的状态包括准备中、运行中、成功、失败和取消。若任务失败,可通过错误码判断原因并寻求解决方案。

如果之前openai没有按转好的同学可以试着安装特定版本openai1.35.9及以上的版本,找到适合自己的版本安装好就好,

pip install openai==1.35.9

(万能解决办法)更换 PyPI 源
  • pip 默认使用 PyPI 的官方源,但你可以配置它使用其他镜像源,这些源可能位于更接近你的地理位置的服务器上,从而提供更好的连接速度。
  • 你可以使用国内的镜像源,如阿里云、清华大学、中国科技大学等提供的 PyPI 镜像。
  • 使用以下命令来配置 pip 使用特定的镜像源(以阿里云为例):
pip install -i https://mirrors.aliyun.com/pypi/simple/ openai

快速入门 | OpenAI 官方帮助文档中文版 (xiniushu.com)icon-default.png?t=N7T8https://openai.xiniushu.com/docs/quickstart介绍 - OpenAI(ChatGPT) (apifox.cn)icon-default.png?t=N7T8https://openai.apifox.cn/回到阿里云的"模型广场“(开源)———选择第一个<通义千问>点击进去就好了,

三、通义千问模型介绍

通义千问是由阿里云自主研发的大语言模型,用于理解和分析用户输入的自然语言,在不同领域和任务为用户提供服务和帮助。您可以通过提供尽可能清晰详细的指令,来获取符合您预期的结果。

模型体验

您可以在模型体验中心试用通义千问模型,具体操作,请参见模型体验中心。

应用场景

通义千问凭借其强大的语言处理能力,为用户带来高效、智能的语言服务体验,其能力包括但不限于文字创作、翻译服务和对话模拟等,具体应用场景如下:

  • 文字创作:撰写故事、公文、邮件、剧本和诗歌等。

  • 文本处理:润色文本和提取文本摘要等。

  • 编程辅助:编写和优化代码等。

  • 翻译服务:提供各类语言的翻译服务,如英语、日语、法语或西班牙语等。

  • 对话模拟:扮演不同角色进行交互式对话。

  • 数据可视化:图表制作和数据呈现等。通义千问模型是什么_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)icon-default.png?t=N7T8https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction?spm=a2c4g.11186623.0.0.351246c1qCKhJB#BQnl3

四、模型概览

以下是通义千问模型的商业版。相较于开源版,商业版具有最新的能力和改进。

通义千问模型商业版概览

通义千问模型商业版提供了多个针对不同任务复杂度和性能需求的模型选项,包括通义千问-Max、通义千问-Plus和通义千问-Turbo,每个系列均持续优化并引入最新能力。

通义千问-Max

  • 定位:系列中效果最优的模型,专为处理复杂、多步骤的任务设计。
  • 版本与快照:提供最新版本及历史快照(如qwen-max-0428、qwen-max-0403等),确保用户可根据需求选择固定版本。
  • 性能参数:支持长上下文(如qwen-max-longcontext达30k),高输入输出限制(如最大输入6k,最大输出2k),适合深度交互场景。
  • 成本:输入成本为每千Token 0.04元,输出成本为每千Token 0.12元,提供100万Token免费额度(有效期视开通服务而定)。

通义千问-Plus

  • 定位:能力均衡,推理效果和速度介于Max与Turbo之间,适合中等复杂任务。
  • 更新亮点:如qwen-plus-0806版本,集中提升了语言一致性、修复了中英文混答问题、减少了回复重复,并显著增强了数学、阅读理解、表格理解和推理能力,同时提升了对系统指令的响应能力。
  • 性能参数:高上下文长度(如131072)和输入输出限制(如最大输入128k,最大输出8k),满足广泛需求。
  • 成本:输入成本为每千Token 0.004元,输出成本为每千Token 0.012元,同样提供100万Token免费额度。

通义千问-Turbo

  • 定位:系列中速度最快、成本最低的模型,适合处理简单任务。
  • 版本与快照:包括最新版本及历史快照(如qwen-turbo-0624),便于用户选择。
  • 性能参数:虽然上下文长度和输入输出限制相对较低(如最大输入6k,最大输出1.5k),但足以应对日常简单查询和交互。
  • 成本:输入成本为每千Token 0.002元,输出成本为每千Token 0.006元,同样享有100万Token免费额度。

总结:通义千问商业版模型系列覆盖了从简单到复杂的不同任务需求,通过持续的技术更新和性能优化,为用户提供高效、经济的自然语言处理解决方案。用户可根据具体应用场景和预算限制,灵活选择合适的模型版本。

小试牛刀1:
from openai import OpenAI

base_url = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxx'  # 填自己的API_KEY
client = OpenAI(base_url=base_url, api_key=api_key)
model = 'qwen-plus'

messages = [

{"role": "system", "content": '你是一个能力很强的AI'},

{"role": "user", "content": '推荐几部电影'},
]

stream = client.chat.completions.create(
    model=model,
    messages=messages,
    stream=True,
)

result = ''
for chunk in stream:
    text = chunk.choices[0].delta.content
    if text is not None:
        result += text
        print(text, end='')

 

这段代码尝试通过模拟OpenAI的API客户端与一个自定义或第三方服务(通过https://dashscope.aliyuncs.com/compatible-mode/v1这个URL访问)进行交互,以执行聊天机器人风格的文本生成任务。尽管代码中使用了OpenAI这个类名,但很可能这并不是直接来自OpenAI官方库的类,而是为了适应特定服务而自定义或修改过的。

  1. 初始化客户端:代码通过传递一个基础URL和API密钥来创建一个OpenAI客户端实例。这个基础URL指向了阿里云的一个服务,可能是为了兼容或测试目的而设置的。

  2. 设置模型和消息:指定了要使用的模型(qwen-plus,这很可能是一个自定义或特定于服务的模型)和初始聊天消息(包括一个系统消息和一个用户消息,用户消息请求推荐电影)。

  3. 发起聊天请求:使用客户端的chat.completions.create方法(尽管这个方法路径在OpenAI官方库中可能不同)来发起聊天请求。通过设置stream=True,请求以流式方式接收响应,这允许在生成大量文本时逐步处理结果。

  4. 处理响应:代码遍历流式响应,并尝试从每个响应块(chunk)中提取生成的文本。然而,提取文本的路径(chunk.choices[0].delta.content)是特定于这个服务或API的,并不符合OpenAI官方API的响应格式。对于每个非空的文本块,它都被添加到结果字符串中并打印出来。

总结来说,这段代码是一个使用自定义或第三方服务进行聊天机器人文本生成的示例,尽管它使用了类似OpenAI API的术语和方法名,但实际上是针对特定服务进行适配的。

小试牛刀2:
from openai import OpenAI

base_url = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxx'  # 填自己的API_KEY
client = OpenAI(base_url=base_url, api_key=api_key)

model = 'qwen-max'

messages = [

    {"role": "system", "content": '你是一个能力很强的AI'},

]

while True:
     user_input = input('\n\nuser: \n')
     if user_input.strip().lower()== 'exit':
         break
     messages.append(
        {'role': 'user','content': user_input}
     )

     stream = client.chat.completions.create(
       model=model,
       messages=messages,
       stream=True,
     )
     print('\nAssistant:')
     result =''
     for chunk in stream:
         text = chunk.choices[0].delta.content
         if text is not None:
             result += text
             print(text, end='')
     messages.append(
         {'role': 'assistant','content': result}
     )

用Gradio写一个大模型对话的网页页面

这段代码试图使用类似OpenAI的API(但实际上通过自定义的base_urlapi_key连接到了一个非OpenAI的服务,这里看起来像是阿里云的一个兼容模式服务dashscope.aliyuncs.com),来创建一个简单的文本聊天机器人。不过,有几个关键点需要注意,因为代码中有一些假设和潜在的错误。

代码简述

  1. 导入和初始化
    • 从假定的openai库中导入OpenAI类(但通常OpenAI的库是openai,这里可能是自定义的或者是对实际库的误解)。
    • 设置自定义的base_urlapi_key来连接到非标准的API服务。
    • 创建一个OpenAI类的实例client,用于与API服务交互。
  2. 设置初始对话
    • 定义了一个model变量,这里假设为'qwen-max',这看起来像是自定义模型或服务的名称。
    • 初始化一个messages列表,包含一个系统消息,告诉AI它的角色和能力。
  3. 用户输入循环
    • 使用一个无限循环来不断获取用户输入。
    • 如果用户输入exit(不区分大小写),则退出循环。
    • 将用户的输入添加到messages列表中,标记为'user'角色。
  4. 与AI交互
    • 使用client.chat.completions.create方法(这假设是API服务提供的一个方法,用于生成对话的完成)发送当前的对话历史(messages列表)到服务。
    • 设置stream=True,这可能意味着服务将以流的形式返回结果,允许逐步处理大型响应。
    • 遍历返回的流,提取每个块(chunk)中的第一个选择(choices[0])的增量内容(delta.content),并将其拼接成完整的响应。
    • 打印AI的响应,并将该响应作为AI('assistant'角色)的消息添加到messages列表中。

潜在问题和注意事项

  • 库和API的兼容性:代码假设存在一个与OpenAI API相似的openai库,但实际上使用的是阿里云的服务。这要求该服务确实提供了类似的方法和响应结构。
  • API的响应结构:代码假设每个chunk都有一个choices列表,且列表的第一个元素(choices[0])有一个delta.content属性。这必须与服务实际返回的响应结构相匹配。
  • 错误处理:代码中没有错误处理逻辑,如网络错误、API限制、无效的API密钥等。
  • 安全性:硬编码的api_key可能带来安全风险,特别是如果代码被公开或泄露。
  • 无限循环:除非用户输入exit,否则循环将无限进行,这可能导致资源耗尽或其他问题。
  • API服务的限制:频繁请求API可能会受到速率限制或其他限制,这需要在代码中适当处理。
  • 代码的可读性和维护性:使用更具描述性的变量名和注释可以帮助提高代码的可读性和维护性。

五、How to Create a Chatbot with GradioCreating A Chatbot Fast (gradio.app)icon-default.png?t=N7T8https://www.gradio.app/guides/creating-a-chatbot-fast

(万能解决办法)使用镜像源

由于直接访问 PyPI 有时可能很慢或不稳定,你可以尝试使用国内的镜像源来加速包的下载。例如,你可以使用清华大学、阿里云等提供的镜像。

你可以通过修改 pip 的配置文件(pip.conf 或 pip.ini)来设置镜像源,或者使用命令行参数来临时指定镜像源。例如,使用清华大学的 pip 镜像源安装 gradio:

pip install gradio -i https://pypi.tuna.tsinghua.edu.cn/simple

这个命令会告诉 pip 从清华大学的镜像源下载 gradio 包及其依赖。 

解释-下CNN的原理,详细点:

举个简单的使用例子(栗子):

千问封装:
写一篇科幻小说
from openai import OpenAI


def qwen(prompt):
    base_url = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
    api_key = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  # 填自己的API_KEY

    model = 'qwen-max'

    client = OpenAI(base_url=base_url,api_key=api_key)

    messages = [

        {"role": "system", "content": '你是一个能力很强的AI'},
        {"role": "user", "content": prompt},

    ]


    stream = client.chat.completions.create(
       model=model,
       messages=messages,
       stream=True,
    )
    result = ''
    for chunk in stream:
         text = chunk.choices[0].delta.content
         if text is not None:
             result += text
             print(text, end='')
    return result



if __name__=='__main__':

   qwen('写一篇科幻小说')

大模型对话网页版完整代码:
from openai import OpenAI
import gradio as gr

base_url = 'https://dashscope.aliyuncs.com/compatible-mode/v1'
api_key = 'sk-xxx'  # 填自己的API_KEY
client = OpenAI(base_url=base_url, api_key=api_key)
model = 'qwen-max'


def predict(message, history):
    print('\n\nUser:')
    print(message)
    messages = []
    for human, assistant in history:
        messages.append({"role": "user", "content": human})
        messages.append({"role": "assistant", "content": assistant})
    messages.append({"role": "user", "content": message})

    stream = client.chat.completions.create(
        model=model,
        messages=messages,
        stream=True,
    )

    print('\nAssistant:')
    result = ''
    for chunk in stream:
        text = chunk.choices[0].delta.content
        if text is not None:
            result += text
            print(text, end='')
            yield result


gr.ChatInterface(predict).launch()

这段代码试图结合使用 Gradio 库来创建一个聊天界面,以及一个自定义的 OpenAI 客户端(尽管这里的 OpenAI 类很可能是虚构的或来自一个非官方的库,因为标准的 OpenAI Python SDK 通常不使用 OpenAI 作为类名,而是使用 openai 模块),以与某个自定义的聊天模型(在这个例子中是 'qwen-max')进行交互。不过,有几个问题和潜在的误解需要澄清。

代码简述

  1. 导入和初始化
    • 导入 Gradio 库和(假设的)OpenAI 类。
    • 设置连接到自定义 API 服务的 base_url 和 api_key
    • 创建一个 OpenAI 类的实例 client,用于与 API 交互。
    • 定义要使用的模型名称 model
  2. 定义预测函数
    • predict 函数接收两个参数:message(当前用户的消息)和 history(之前的对话历史,作为 (human, assistant) 对的列表)。
    • 函数内部,首先打印出用户的消息。
    • 然后,它创建一个空的 messages 列表,用于构建发送给 API 的完整对话历史。
    • 遍历 history,将每对 (human, assistant) 消息添加到 messages 列表中,分别标记为 'user' 和 'assistant' 角色。
    • 将当前用户的消息也添加到 messages 列表中。
    • 使用 client.chat.completions.create 方法(这假设是 API 提供的一个方法)发送对话历史到服务,并设置 stream=True 以逐步接收响应。
    • 遍历返回的流,拼接 AI 的响应,并实时打印和通过生成器 yield 返回(但这里的使用方式可能不符合 Gradio 的预期,因为 Gradio 通常期望一个最终的结果,而不是一个生成器)。
  3. 创建和启动 Gradio 聊天界面
    • 使用 gr.ChatInterface(predict) 创建一个聊天界面,该界面将使用 predict 函数作为其后端。
    • 调用 .launch() 方法启动聊天界面。

潜在问题和注意事项

  • OpenAI 类的使用:如上所述,这里的 OpenAI 类很可能是虚构的或来自非标准库。标准的 OpenAI Python SDK 使用的是 openai 模块,而不是 OpenAI 类。
  • 生成器的使用:在 Gradio 的上下文中,predict 函数应该返回一个完整的结果,而不是一个生成器。Gradio 不会自动处理生成器,因此这种方式可能不会按预期工作。
  • API 响应结构:代码假设了 API 响应的特定结构(如 chunk.choices[0].delta.content),这必须与 API 实际返回的响应结构相匹配。
  • 安全性:硬编码的 api_key 可能导致安全风险。
  • 错误处理:代码中没有错误处理逻辑,如网络错误、API 限制等。
  • API 服务的限制:频繁请求 API 可能会受到速率限制或其他限制。

改进建议

  • 确认 OpenAI 类的来源和用法,或改用标准的 OpenAI Python SDK(如果适用)。
  • 修改 predict 函数以返回一个完整的结果字符串,而不是生成器。
  • 添加适当的错误处理和日志记录。
  • 考虑使用缓存或其他机制来减少对 API 的请求次数。
  • 如果 API 支持,考虑使用异步请求来提高性能。

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

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

相关文章

贪心算法例题—最短路径

第一个空&#xff0c;从题意可以知道&#xff0c;每次选择最短路线&#xff0c;也就是说每次选择最优选择&#xff0c;很明显就是贪心算法 第二个空&#xff0c;第一次从n个路线选择最短的&#xff0c;接下来每次都是从n-1个路线中选择最短的&#xff0c;因此每次运算次数是n^…

字符编码简介

目录 1. ASCLL 2. GB2312 3. GBK/gbk 4. GB18030 5. Unicode 6. 总结 1. ASCLL 在计算机刚开始被美国人发明的时候&#xff0c;需要将字符存储到计算机进行运算或打印&#xff0c;于是选取了95 个可见字符&#xff08;数字0-9&#xff0c;英文字母&#xff0c;标点符号&…

时序约束进阶二:set_max_time_borrow详解

目录 一、前言 二、set_max_time_borrow 2.1 工程设计 2.2 无set_max_time_borrow 2.3 set_max_time_borrow约束值偏小 2.4 set_max_time_borrow约束值偏大 2.5 hold路径 2.6 setup不违例 三、总结 四、参考资料 一、前言 ​Set_maximum_time_borrow约束是设置锁存器…

Linux平台中标麒麟安装单机DM8数据库

1 说明 数据库是现代信息化系统的基石&#xff0c;而国产数据库的发展则关乎国家的信息安全和国民经济的命脉。达梦数据库作为中国数据库领域的领军企业&#xff0c;其DM8数据库管理系统凭借其高性能、高可靠性、易用性等特点&#xff0c;逐渐赢得了用户的青睐。本文将详细介绍…

【C++ Primer Plus习题】8.4

问题: 解答: #include <iostream> #include <cstring>using namespace std;struct stringy {char* str;int ct; };void show(const stringy& s, int n0) {if (n 0)n;for (int i 0; i < n; i){cout << s.str << endl;} }void show(const char…

2024国赛数学建模备战:灰色预测,国赛数学建模思路代码 模型

2024国赛数学建模ABC题思路模型代码&#xff1a;文末获取&#xff0c;9.5开赛后第一时间更新 许久未更新时间序列分析系列内容。现先推出一期灰色预测 GM(1,1)模型的内容。需明确的是&#xff0c;灰色预测并非典型的时间序列分析方法&#xff0c;然而&#xff0c;它可以应用于…

HarmonyOS开发实战( Beta5版)应用滑动场景帧率问题分析最佳实践

性能指标 应用运行时的流畅度&#xff0c;涉及人因要素&#xff0c;不完全等同于应用系统性能。其中帧率问题&#xff0c;可以从如下几个指标进行衡量。 丢帧率 丢帧率是衡量动效过程中界面刷新的平均丢帧比例。 最大丢帧数 最大丢帧数是指从页面开始有响应变化到页面结束…

docker实战基础一 (Docker基础命令)

一、docker安装 # step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Doc…

【SAM】Segment Anything网络结构详解

Segment Anything网络结构详解 论文链接&#xff1a;http://arxiv.org/abs/2304.02643 代码链接&#xff1a;https://github.com/facebookresearch/segment-anything 一、整体框架 二、图像编码器image encoder 使用一个MAE预训练好的ViT模型&#xff08;ViT-H/16 使用了 14…

php特性刷题

93 上面注释的是一些配置信息 然后包含flag.php页面 高亮显示 如果&#xff0c;先判断是否存在GET传参的参数num&#xff0c;如果弱比较等于4476&#xff0c;就会输出“no non no !” 如果包含字母那么就错误&#xff08;包含大小写&#xff09; 判断变量 $num 是否等于 4…

网络工程9(软路由,旁路由)

一. 软路由 设置软路由&#xff0c;可以将软路由设置为主路由&#xff0c;主路由设置为交换机和无线AP。从而实现网络中的所有设备的消息都能经过软路由的处理后进行上网(比如进行科学上网)。 视频链接 二. 旁路由(作为内网设备&#xff0c;主路由是外网设备) 视频链接 主路…

SpringSecurity Oauth2 - 密码认证获取访问令牌源码分析

文章目录 1. 授权服务器过滤器1. 常用的过滤器2. 工作原理 2. 密码模式获取访问令牌1. 工作流程2. 用户凭证验证1. ResourceOwnerPasswordTokenGranter2. ProviderManager3. CustomAuthProvider4. 认证后的结果 1. 授权服务器过滤器 在Spring Security中&#xff0c;OAuth2授权…

ComfyUI上手使用记录

文章目录 资料安装基础概念常用的工具和插件放大图像从裁剪到重绘SDXL工作流搭建Clip的多种不同的应用Lcm-Turbo极速出图集成节点 资料 AI绘画之ComfyUI Stable Diffusion WEUI中的SDV1.5与SDXL模型结构Config对比 stable-diffusion-webui中stability的sdv1.5和sdxl模型结构c…

SPI驱动学习三(spidev的使用)

目录 一、 spidev驱动程序分析1. 驱动框架2. 驱动程序分析 二、SPI应用程序分析1. 使用方法2. 代码分析2.1 显示设备属性2.2 读数据2.3 先写再读2.4 同时读写 3. SPI应用编程详解4. spidev的缺点 一、 spidev驱动程序分析 参考资料&#xff1a; * 内核驱动&#xff1a;drivers…

足球大小球预测及足球大数据之机器学习预测大小球

足球运动是当今世界上开展最广、影响最大、最具魅力、拥有球迷数最多的体育项目之一&#xff0c;尤其是欧洲足球&#xff0c;每年赛事除了五大联赛&#xff08;英超、西甲、德甲、法甲、意甲&#xff09;之外&#xff0c;还会有欧冠&#xff08;欧洲冠军联赛&#xff09;&#…

Docker容器详细介绍

1.docker简介 1.1什么是Docker Docker是管理容器的引擎&#xff0c;为应用打包、部署平台&#xff0c;而非单纯的虚拟化技术 它具有以下几个重要特点和优势&#xff1a; 1. 轻量级虚拟化 Docker 容器相较于传统的虚拟机更加轻量和高效&#xff0c;能够快速启动和停止&#…

day-46 旋转图像

思路 不能使用辅助数组&#xff0c;所以关键在于弄清楚旋转后坐标的变化规律。当矩阵的大小n为偶数时&#xff0c;以n/2行和n/2列的元素为起点&#xff0c;当矩阵的大小n为奇数时&#xff0c;以n/2行和&#xff08;n1&#xff09;/2列的元素为起点 解题过程 关键&#xff1a;旋…

【python计算机视觉编程——照相机模型与增强现实】

python计算机视觉编程——照相机模型与增强现实 4.照相机模型与增强现实4.1 真空照相机模型4.1.1 照相机矩阵4.1.2 三维点的投影4.1.3 照相机矩阵的分解4.1.4 计算照相机中心 4.2 照相机标定4.3 以平面和标记物进行姿态估计sift.pyhomography.py主函数homography.pycamera.py主…

二分查找 | 二分模板 | 二分题目解析

1.二分查找 二分查找的一个前提就是要保证数组是有序的&#xff08;不准确&#xff09;&#xff01;利用二段性&#xff01; 1.朴素二分模板 朴素二分法的查找中间的值和目标值比较&#xff08;不能找范围&#xff09; while(left < right) // 注意是要&#xff1a; < …

华为云征文|基于Flexus云服务器X实例的应用场景-私有化部署自己的笔记平台

&#x1f534;大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 先看这里 写在前面效果图华为云Flexus X实例云服务器Blossom 私有化笔记平台简介准备工作创建yaml文件执行yaml文件使用blossom 写在前面 我发现了个事儿&#xff0c;好多技术…