Spring Boot集成qwen:0.5b实现对话功能

news2024/11/16 3:45:24

1.什么是qwen:0.5b?

模型介绍:

Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。

硬件要求:

CPU配置:CPU最低第六代intel酷睿4核,AMD ZEN 4核以上;推荐12代intel酷睿8核,AMD ZEN 8核以上 内存要求:运行内存4G及以上

Qwen 1.5版本的新增功能如下:

6个模型大小,包括0.5B、1.8B、4B(默认)、7B、14B、32B(新)和72B 人类对话模型的偏好显著改善 基础模型和对话模型都支持多语言 所有大小的模型都稳定支持32K上下文长度 原始的Qwen模型提供了四种不同的参数大小:1.8B、7B、14B和72B。

模型功能:

低成本的部署:推理过程的最低内存要求小于2GB。 大规模高质量的训练语料库:模型在超过22万亿个令牌的语料库上进行了预训练,包括中文、英文、多语言文本、代码和数学,涵盖了一般和专业领域。通过大量的消融实验,对预训练语料库的分布进行了优化。 良好的性能:Qwen支持较长的上下文长度(在1.8b、7b和14b参数模型上为8K,在72b参数模型上为32K),在多个中英文下游评估任务(包括常识、推理、代码、数学等)上显著超过了现有的开源模型,甚至在一些基准测试中超过了一些更大规模的模型。 更全面的词汇覆盖:与其他基于中英文词汇的开源模型相比,Qwen使用了超过15万个令牌的词汇表。这个词汇表对于多种语言更友好,使用户在不扩展词汇表的情况下,能够直接增强特定语言的能力。 系统提示:通过使用系统提示,Qwen可以实现角色扮演、语言风格转换、任务设置和行为设置等功能。

模型效果

ModelMMLUC-EvalGSM8KMATHHumanEvalMBPPBBHCMMLU
GPT-486.469.992.045.867.061.886.771.0
Llama2-7B46.832.516.73.312.820.838.231.8
Llama2-13B55.041.429.65.018.930.345.638.4
Llama2-34B62.6-42.26.222.633.044.1-
Llama2-70B69.850.154.410.623.737.758.453.6
Mistral-7B64.147.447.511.327.438.656.744.7
Mixtral-8x7B70.6-74.428.440.260.7--
Qwen1.5-7B61.074.162.520.336.037.440.273.1
Qwen1.5-14B67.678.770.129.237.844.053.777.6
Qwen1.5-32B73.483.577.436.137.249.466.882.3
Qwen1.5-72B77.584.179.534.141.553.465.583.5

2.什么是ollama?

Ollama 是一个便于本地部署和运行大型语言模型(Large Language Models, LLMs)的工具。使用通俗的语言来说,如果你想在自己的电脑上运行如 GPT-3 这样的大型人工智能模型,而不是通过互联网连接到它们,那么 Ollama 是一个实现这一目标的工具。下面我们来详细总结一下 Ollama 的功能和使用场景。

主要功能

  1. 本地运行大型语言模型:Ollama 允许用户在自己的设备上直接运行各种大型语言模型,包括 Llama 2、Mistral、Dolphin Phi 等多种模型。这样用户就可以在没有网络连接的情况下也能使用这些先进的人工智能模型。
  2. 跨平台支持:Ollama 支持 macOS、Windows(预览版)、Linux 以及 Docker,这使得几乎所有主流操作系统的用户都可以利用这个工具。
  3. 语言库和第三方库支持:它提供了一个模型库,用户可以从中下载并运行各种模型。此外,也支持通过 ollama-python 和 ollama-js 等库与其他软件集成。
  4. 快速启动和易于定制:用户只需简单的命令就可以运行模型。对于想要自定义模型的用户,Ollama 也提供了如从 GGUF 导入模型、调整参数和系统消息以及创建自定义提示(prompt)的功能。

3.什么是open-webui?

Open WebUI(以前称为Ollama WebUI)是一款面向大型语言模型(LLMs)的用户友好型Web界面,支持Ollama和兼容OpenAI的API运行。通过一个直观的界面,它为用户提供了一种便捷的方式,与语言模型进行交互、训练和管理。

主要特点

  • 直观的界面:灵感来源于ChatGPT,保证了用户友好的体验。
  • 响应式设计:无论是在桌面还是移动设备上,都能享受到无缝的体验。
  • 快速响应:性能快速且响应迅速。
  • 简明的设置过程:通过Docker或Kubernetes安装,旨在提供无忧的体验。
  • 代码语法高亮:提高代码的可读性。
  • 完整的Markdown和LaTeX支持:为了丰富交互体验,提供广泛的Markdown和LaTeX功能。
  • 本地RAG集成:未来聊天交互的特色功能,通过#命令加载文档或添加文件。
  • 网页浏览功能:使用#命令来丰富聊天体验。
  • 快捷预设支持:使用/命令快速访问预设提示。
  • RLHF注释:通过评分消息帮助构建用于RLHF的数据集。
  • 对话标签:方便地分类和查找特定聊天。
  • 多模型支持:无缝切换不同聊天模型。
  • 多模态支持:允许与支持图像等多模态的模型进行交互。

4.环境准备

ollama

version: '3'

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    restart: unless-stopped
    ports:
      - 11434:11434
    volumes:
      - ./data:/root/.ollama

run

docker-compose up -d

visit http://localhost:11434/   return “Ollama is running ” into the docker shell and run command

ollama pull llama2-chinese:7b

run model llama2-chinese:7b

ollama run llama2-chinese:7b

open-webui

version: '3'

services:
  ollama-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: ollama-webui
    restart: unless-stopped
    ports:
      - 11433:8080
    volumes:
      - ./data:/app/backend/data
    environment:
      - OLLAMA_API_BASE_URL=http://10.11.68.77:11434/api
      - WEBUI_SECRET_KEY=TkjGEiQ@5K^j

run

docker-compose up -d

http://localhost:11433/

66974

第一次需要注册账号

88

5.代码工程

实验目标

用open ai包对接qwen:0.5b

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.1</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Qwen</artifactId>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
            <version>0.8.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <build>
        <pluginManagement>
            <plugins>
                <!-- 配置 Maven Compiler 插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <fork>true</fork>
                        <failOnError>false</failOnError>
                    </configuration>
                </plugin>

                <!-- 配置 Maven Surefire 插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.2</version>
                    <configuration>
                        <forkCount>0</forkCount>
                        <failIfNoTests>false</failIfNoTests>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

controller

package com.et.qwen.controller;

import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public Map<String, Object> showHelloWorld(){
        Map<String, Object> map = new HashMap<>();
        map.put("msg", "HelloWorld");
        return map;
    }
    @Autowired
    ChatClient chatClient;
    @GetMapping("/ai/chat")
    public String chat(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        Prompt prompt = new Prompt(message);
        return chatClient.call(prompt).getResult().getOutput().getContent();
    }

}

application.yaml

server:
  port: 8088

spring:
  ai:
    openai:
      base-url: https://api.openai.com/
      api-key: sk-xxx
      embedding:
        options:
          model: text-davinci-003
      chat:
        #指定某一个API配置(覆盖全局配置)
        api-key: sk-xxx
        base-url: http://localhost:11434
        options:
          model: qwen:0.5b # 模型配置

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo(qwen)

6.测试

  • 启动Spring boot应用程序
  • 访问http://127.0.0.1:8088/ai/chat,你将看到qwen:0.5返回的信息
  • ollama服务端查看日志
2024-07-15 15:06:28 [GIN] 2024/07/15 - 07:06:28 | 200 | 4.810762037s | 172.20.0.1 | POST "/api/chat"
2024-07-15 15:06:29 [GIN] 2024/07/15 - 07:06:29 | 200 | 1.081850365s | 172.20.0.1 | POST "/v1/chat/completions"
2024-07-15 15:06:46 [GIN] 2024/07/15 - 07:06:46 | 200 | 46.802µs | 172.20.0.1 | GET "/api/version"

7.引用

  • Introducing Qwen1.5 | Qwen
  • https://ollama.com/blog/openai-compatibility
  • https://github.com/open-webui/open-webui
  • https://ollama.com/blog

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

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

相关文章

SWDIO管脚作为GPIO

下面是使用FRDM-K32L2B3开发板和SDK中的frdmk32l2b_gpio_led_output程序做了一些测试&#xff0c;configure SWDIO pin as GPIO pin的流程。 查看手册&#xff0c;找到SWDIO对应的管脚&#xff0c;可以看到PTA3对应的SWDIO管脚。 2.修改Demo程序&#xff0c;在程序中设置SWDIO…

生物素四聚乙二醇叠氮;Biotin-PEG4-Azide

生物素四聚乙二醇叠氮&#xff0c;也被称为Biotin-PEG4-Azide或Azide-PEG4-Biotin&#xff0c;是一种重要的化学化合物&#xff0c;其CAS号为1309649-57-7。以下是对该化合物的详细介绍&#xff1a; 一、基本信息 中文名&#xff1a;生物素四聚乙二醇叠氮 英文名&#xff1a;Bi…

wps批量删除空白单元格

目录 原始数据1.按ctrlg键2.选择“空值”&#xff0c;点击“定位”3. 右击&#xff0c;删除单元格修改后的数据 原始数据 1.按ctrlg键 2.选择“空值”&#xff0c;点击“定位” 如图所示&#xff0c;空值已被选中 3. 右击&#xff0c;删除单元格 修改后的数据

Rust 使用 panic! 还是不用 panic!

使用 panic! 还是不用 panic! 那么&#xff0c;该如何决定何时应该 panic! 以及何时应该返回 Result 呢&#xff1f;如果代码 panic&#xff0c;就没有恢复的可能。你可以选择对任何错误场景都调用 panic!&#xff0c;不管是否有可能恢复&#xff0c;不过这样就是你代替调用者…

【python】基于随机森林和决策树的鸢尾花分类

目录 引言 决策树&#xff08;Decision Tree&#xff09; 随机森林&#xff08;Random Forest&#xff09; 数据集 结果 代码实现 引言 随机森林&#xff08;Random Forest&#xff09;和决策树&#xff08;Decision Tree&#xff09;是两种在机器学习中广泛使用的分类和…

STM32智能农业监测系统教程

目录 引言环境准备智能农业监测系统基础代码实现&#xff1a;实现智能农业监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;农业监测与管理问题解决方案与优化收尾与总结 1. 引言 智能农业监测系统通…

Java二十三种设计模式-建造者模式(4/23)

建造者模式&#xff1a;构建复杂对象的专家 引言 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于创建一个复杂的对象&#xff0c;同时允许用户只通过指定复杂对象的类型和内容就能构建它们&#xff0c;它将对象的构建和表示分离&am…

【计算机毕业设计】002基于weixin小程序家庭记账本

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【JavaEE进阶】——SpringBoot 统⼀功能处理

目录 &#x1f6a9;拦截器 &#x1f388;什么是拦截器? &#x1f388;如何使用拦截器 &#x1f393;自定义拦截器 &#x1f393;注册拦截器 &#x1f388;拦截器详解 &#x1f393;拦截路径 &#x1f393;拦截器执⾏流程 &#x1f534;DispatcherServlet 源码分析(了…

手机怎么看WiFi的IP地址

在如今数字化快速发展的时代&#xff0c;无线网络已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们可能都离不开WiFi的陪伴。然而&#xff0c;在使用WiFi的过程中&#xff0c;有时我们可能需要查看其IP地址&#xff0c;以便更好地管理我们的网…

大数据hive表和iceberg表格式

iceberg: https://iceberg.apache.org/ iceberg表&#xff0c;是一种面向大型分析数据集的开放表格式&#xff0c;旨在提供可扩展、高效、安全的数据存储和查询解决方案。它支持多种存储后端上的数据操作&#xff0c;并提供 ACID 事务、多版本控制和模式演化等特性&#xff0c…

K8S 中的 CRI、OCI、CRI shim、containerd

哈喽大家好&#xff0c;我是咸鱼。 好久没发文了&#xff0c;最近这段时间都在学 K8S。不知道大家是不是和咸鱼一样&#xff0c;刚开始学 K8S、Docker 的时候&#xff0c;往往被 CRI、OCI、CRI shim、containerd 这些名词搞得晕乎乎的&#xff0c;不清楚它们到底是干什么用的。…

持续集成01--Git版本管理及基础应用实践

前言 本系列文章旨在深入探讨持续集成/持续部署&#xff08;Continuous Integration/Continuous Deployment, CI/CD&#xff09;流程中的各个环节&#xff0c;而本篇将聚焦于Git版本管理及其基本应用。通过本文&#xff0c;读者将了解到Git的基本原理、安装配置、基本命令以及如…

当农业遇见智能:机器学习引领农作物管理新时代

机器学习引领农作物管理新时代 1. 引言1.1 农业的重要性和现代农作物管理的挑战1.2 机器学习技术在农业中的潜力和应用前景 2. 机器学习在农作物管理中的基础应用2.1 数据驱动的农业决策数据收集与处理示例代码&#xff1a;传感器数据采集决策支持系统 2.2 传感器技术与数据采集…

ArcGIS Enterprise 命令行组件创建配置

1. 创建ArcGIS Server站点 使用 createsite工具 命令行直接执行 createsite.sh [-u <arg>] [-p <arg>] [-d <arg>] [-c <arg>]执行文件 createsite.sh [-f <FILE>]安装目录下会有类似的创建站点文件&#xff1a; 修改其中的内容&#xff0c;…

python中的re模块--正则表达式

正则表达式&#xff0c;又称规则表达式。&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;计算机科 学的一个概念。正则表达式通常被用来检索、替换那些符合某个模 式(规则)的文本 re模块作用 通过使用…

Android:创建自定义View

点击查看创建自定义view官网文档 一、简介 设计良好的自定义视图与任何其他精心设计的类一样。它通过一个简单的接口封装一组特定的功能&#xff0c;高效使用 CPU 和内存&#xff0c;诸如此类。除了是一个精心设计的类之外&#xff0c;自定义视图还必须执行以下操作&#xff1…

elementui 日历组件el-calendar使用总结

功能&#xff1a; 1.日历可以周视图、月视图切换&#xff1b; 2.点击月视图中日期可以切换到对应周视图&#xff1b; 3.点击周视图查看当日对应数据&#xff1b; 4.周、月视图状态下&#xff0c;点击前后按钮&#xff0c;分别切换对应上下的周、月&#xff1b; 5.点击回到…

MWA(Modern Web App)初学那些事-2-Basic HTML CSS

初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS 目录 初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS前言一、本节学习目标二、HTML基础内容2.1关键元素2.4 Scripts 三、CSS 基础内容3.1 级联样式表-用于设置网页样式和布局3.2 CSS规则语…

Docker的虚拟化安装、常用命令和使用案例

文章目录 一、Docker的虚拟机安装1、完成虚拟机的更新2、完成Docker安装3、配置镜像加速器 二、Docker常用命令三、Docker的容器创建四、理解虚拟机中的Docker容器 一、Docker的虚拟机安装 1、完成虚拟机的更新 详见我的文章。 2、完成Docker安装 yum list installed|grep …