Skip to content

大模型简介

大模型的分类方式多样,涵盖了从架构、应用场景到训练目标等多个维度。

选择合适的大模型需要综合考虑任务需求、数据规模、计算资源等因素。常见的有:

  • 自然语言处理模型
  • 计算机视觉(CV)模型
  • 语音模型
  • 多模态模型

自然语言处理模型

自然语言大模型(Large Language Models, LLMs)是基于深度学习的模型,旨在理解和生成人类语言。它们通过大规模文本数据的训练,能够执行多种自然语言处理(NLP)任务,如专注于文本生成、理解、翻译等任务。

举例:GPT系列(OpenAI)、BERT(Google)、T5(Google)

计算机视觉(CV)模型

视觉大模型(Large Visual Models)核心是通过大规模数据和复杂模型架构,实现对图像和视频的深度理解和生成。与传统计算机视觉模型相比,视觉大模型具有更强的泛化能力和多任务适应性,能够处理复杂的视觉任务,如图像分类、目标检测、语义分割、图像生成等。

举例:Stable Diffusion、Vision Transformers(ViT)、DALL·E(OpenAI)、CLIP(OpenAI)

image-20260321153111154

语音大模型

语音大模型是基于深度学习技术构建的人工智能模型,主要用于处理语音相关的任务,如语音识别(ASR)、语音合成(TTS)、语音翻译等。近年来,随着深度学习和大规模数据训练的发展,语音大模型在性能和功能上取得了显著进展,能够支持多语言、多场景的复杂任务。

举例:Whisper(OpenAI)、WaveNet(DeepMind)、讯飞星火

多模态模型

多模态模型是一种能够同时处理多种数据模态(如文本、图像、音频、视频等)的人工智能模型。它的核心在于跨模态融合,即将不同模态的数据表示映射到同一空间,以便模型能够理解和生成跨模态的内容。

举例:GPT-4(支持多模态)、Flamingo(DeepMind)、BLIP、KOSMOS(微软)

大模型应用场景

  • 智能客服与对话系统:用于构建聊天机器人、虚拟助手,提供24*7的客户支持。目前大模型最广泛应用。
  • 文本生成:生成文章、故事、代码、营销文案等。
  • 机器翻译:实现多语言之间的高质量翻译。
  • 问答系统:提供精准的问答服务,如技术支持。
  • 图像分类与识别:识别图像中的物体、场景或人脸。
  • 目标检测与跟踪:用于自动驾驶、安防监控等场景。

聊天机器人简介

image-20260321150331336

image-20260321150359357

image-20260321150432018

image-20260321150448214

image-20260321150505633


聊天机器人项目需求

该项目旨在构建一个基于大模型的智能聊天机器人,利用其强大的自然语言处理和生成能力,为用户提供高效、精准、个性化的对话服务。

该聊天机器人将集成先进的大规模预训练语言模型(如Deepseek、Qwen等),具备自然语言理解、多轮对话、情感分析、知识问答等核心功能,并可根据具体应用场景进行定制化扩展,如客服咨询,教育辅导,娱乐互动等

  • 需求1:核心对话功能需求

    • 自然语言处理
    • 实时对话交互
  • 需求2:用户界面功能需求

    • 简洁明了的布局
    • 交互式体验

根据上述功能需求,项目采用模块化设计,前端通过Streamlit等框架实现简洁易用的交互界面,后端基于Ollama等平台进行模型部署和管理,确保系统的高效性和可扩展性


常见的3种搭建聊天机器人的方式

常见搭建聊天机器人方式有3种,分别是:

  1. 使用无代码平台搭建
  2. 使用开源框架开发
  3. 基于大语言模型的集成

1.使用无代码平台搭建

无代码平台允许用户通过可视化界面快速创建聊天机器人,无需编程基础。

例如,扣子(Coze)是一个由字节跳动开发的智能体应用开发平台,支持集成多种大语言模型(如DeepSeek),并可以快速接入微信公众号。

搭建步骤:

  1. 注册并登录平台:访问扣子官网,使用抖音或飞书扫码登录。
  2. 创建应用:填写智能体名称、功能介绍和图标。
  3. 配置机器人:
    • 选择模型(如DeepSeek或其他大模型)
    • 添加插件(如联网、绘画等)
    • 编写开场白并测试对话效果
  4. 接入平台:将机器人接入微信公众号或其他平台,配置必要的参数(如AppID)

2.使用开源框架开发

如果有一定的编程基础,可以使用开源框架(如ChatterBot)和Web框架(如Flask)来开发聊天机器人

其中,ChatterBot是一个开源的Python库,用于创建聊天机器人。它通过机器学习技术来生成对话内容,能够根据用户输入自动学习和生成回答。

ChatterBot库对话生成能力有限,生成文本可能不够自然,大模型出来之前使用较多

搭建步骤:

  1. 安装必要的库:安装Flask和ChatterBot。
  2. 编写代码:创建一个Flask应用,集成ChatterBot并训练模型。
  3. 创建前端界面:使用HTML和JavaScript创建一个简单的聊天界面
  4. 部署应用:将应用部署到服务器,如Heroku或本地服务器。

3.基于大语言模型的集成(搞这个!)

如果希望使用更强大语言模型(如DeepSeek或QWen),可以通过本地部署或云服务快速搭建聊天机器人。

适合有一定技术能力的企业,需要高度定制化功能的聊天机器人,目前企业纷纷采用此方式。

搭建步骤:

  1. 部署模型:使用Ollama部署QWen或DeepSeek。
  2. 配置机器人:通过Ollama的API配置聊天机器人,设置模型、对话历史等参数。
  3. 接入微信或其他平台:使用Gewechat框架将机器人接入微信。

搭建聊天机器人3种方式的区别

image-20260321151702617

聊天机器人项目架构

前端界面:Streamlit框架

使用Streamlit框架搭建用户界面,提供简洁、交互式的Web应用。

Streamlit是一个基于Python的开源框架,适合快速开发数据科学和机器学习相关的Web应用。

  • 通过Streamlit来创建一个用户界面,包括输入框、发送按钮和对话展示区域。
  • 用户可以通过网页与聊天机器人进行实时对话。

后端模型:Ollama平台的DeepSeek模型

基于Ollama平台部署DeepSeek模型作为后端核心,提供自然语言处理和对话生成能力。

  • Ollama是一个开源的AI模型部署平台,支持多种大语言模型(LLM)。
  • Deepseek是一个高性能的语言模型,能够处理和生成自然语言文本。
  • 通过后端服务调用Deepseek模型,将用户输入传递给模型,并获取模型的回复。

image-20260321152028696

聊天机器人--私有大模型解决方案

私有大模型解决方案

随着AI的发展,越来越多的开发者投入到大模型开发中,他们期望能自身笔记本上运行大模型,以便开发。

越来越多的企业积极改造自身产品,融入AI技术,他们期望能私有化大模型以保证数据安全。这些诉求直接推动社区出现了两个这方面的产品Ollama和LMstudio。

Ollama作为一个开源的轻量级工具,适合熟悉命令行界面的开发人员和高级用户进行模型实验和微调。它提供了广泛的预训练模型和灵活的定制选项,同时保持了高度的便捷性和安全性。最重要它是开源的,同时还提供API,对于开发有先天优势,备受欢迎和使用。

智聊机器人项目选择基于Ollama在本地部署DeepSeek大模型。

为什么要有私有大模型

image-20260321153415232

Ollama介绍

ollama是一款旨在简化大型语言模型本地部署和运行过程的开源软件。

ollama提供了一个轻量级、易于扩展的框架,让开发者能够在本地机器上轻松构建和管理LLMs(大型语言模型)

通过ollama,开发者可以导入和定制自己的模型,无需关注复杂的底层实现细节。

官网网址:https://ollama.com,下载就行

Ollama特点

  1. 简单易用:提供命令行工具和API,支持快速本地部署主流大语言模型(如LlamaMistral等),适合开发者和研究人员快速上手。
  2. 高效轻量:占用资源少,支持GPU加速和量化技术,能够在本地高效运行,降低对计算资源的依赖。
  3. 灵活管理:支持通过Modelfile自定义模型参数,允许热加载和切换模型,并可从Hugging Face等平台导入自定义模型。
  4. 隐私安全:本地化部署确保数据不上传云端,适合对隐私和安全性要求高的场景,如医疗、金融等领域。

Ollama模型库

ollama支持多种开源模型,涵盖文本生成、代码生成、多模态推理等场景。用户可以根据需求选择合适的模型,并通过简单的命令行操作在本地运行。

ollama官方模型库:https://ollama.com/library

Ollama客户端指令

image-20260321154150342

ollama list

image-20260321154209660

Ollama cp

image-20260321154322308

Ollama rm

image-20260321154341736

Ollama pull

image-20260321154401740

Ollama run

image-20260321154420805

Ollama ps

image-20260321154444762

Ollama show

image-20260321154508436

Ollama对话指令

image-20260321154624763

image-20260321154611496

Streamlit框架介绍

Streamlit是一个开源Python库。它旨在让数据科学家和工程师能够以最少的代码和配置,将他们的数据分析和模型展示转化为交互式的Web应用。Streamlit的设计目标是简单易用,同时保持高度的灵活性和可定制性。

官网地址:https://streamlit.io/

Streamlit框架特点

  • 简单易用:
    • Streamlit的API非常简洁,只需要几行代码就可以创建一个基本的应用程序。
    • 无需复杂的前端开发知识,Python代码直接决定了应用的界面和功能。
  • 快速开发:
    • 支持热重载,代码修改后自动更新应用,无需手动重启服务器。
    • 丰富的内置组件和功能,可以快速实现常见的数据可视化和交互操作。
  • 高度可定制:
    • 支持自定义CSS样式,可以对应用的外观进行精细调整。
    • 可以集成第三方库和框架,如Plotly、Altair、Pandas等,扩展应用的功能。
  • 强大的社区支持:
    • 官方文档详细且拥有一个活跃的社区,提供了大量的示例和教程,帮助用户快速上手。

Streamlit框架常见组件

Streamlit提供了许多内置组件,用于创建交互式界面:

  • 文本和标题:st.write(), st.title(), st.header(), st.subheader()
  • 输入控件:st.text_input(), st.slider(), st.selectbox(), st.checkbox(), st.button()
  • 显示数据:st.dataframe(), st.table(), st.json()
  • 显示图表:st.pyplot(), st.altair_chart(), st.bokeh_chart(), st.plotly_chart()
  • 布局:st.sidebar(), st.columns(), st.expander()

详见官网:https://docs.streamlit.io/develop/api-reference

现用现查吧,鬼能记住

Streamlit代码运行

命令行运行程序:streamlit run python脚本

聊天机器人代码

  • 启动stremlit用的脚本:start_streamlit.py
python
import subprocess

subprocess.run(['streamlit', 'run', 'frontend_page.py'])
  • ollma_utils.py
python
import ollama

# 创建一个ollama对象
client = ollama.Client('http://127.0.0.1:11434')


def get_model_response(content):
    response = client.chat(
        model='deepseek-r1:1.5b',
        messages=[{'role': 'user', 'content': content}]
    )
    return response['message']['content']
  • frontend_page.py
python
import streamlit as st
from ollama_utils import get_model_response

st.title("Hong's Robot")
st.divider()

if 'message' not in st.session_state:
    st.session_state['message'] = []
    st.session_state['message'].append({'role': 'assistant', 'content': '鸿鸿不在家,我是她崽,what can I do for you?'})


for message in st.session_state['message']:
    st.chat_message(message['role']).write(message['content'])
prompt = st.chat_input('找鸿鸿啥事')

if prompt:
    st.session_state['message'].append({'role': 'user', 'content': prompt})
    st.chat_message('user').write(prompt)
    with st.spinner('thinking...'):
        model_answer = get_model_response(prompt)
    st.session_state['message'].append({'role': 'assistant', 'content': model_answer})
    st.chat_message('assistant').write(model_answer)

image-20260321174141493

Released under the MIT License.