01-AI大模型智能客服 V0.1「上」

news2024/11/26 22:34:38

你好,我是悦创。

首发:https://mp.weixin.qq.com/s/6MTkpWZCEbFWOcUn0Vexvw

V0.1 版本我将分为上中下三篇进行书写和发布,欢迎分享和我微信进讨论群:Jiabcdefh。

计划:

  1. 会迭代好几个版本,看阅读量和点赞、分享、赞赏啥的。有人看和学还有支持我的,我就会加速更新。😭
  2. 每个版本预估3篇,三篇结束看情况是否录成视频,大家可以选择众筹让我录成视频,众筹达到200元,我就开始录视频。;
  3. 众筹方法:公众号尾部赞赏我~

迷时师渡,悟了自渡。「是度还是渡」。

  1. 纯实战,纯代码,讲落地。
  2. 一个项目,递进式地为你深入浅出。

1. V0.1 大纲

  1. 对话机器人的产品设计
  2. 大语言模型的使用
  3. 提示词工程
  4. 开发环境讲解
  5. 工程化代码讲解
  6. 答疑和总结

2. 安装库

安装 openai、pandas、tiktoken。

# 这里是依赖库,运行代码前需要先安装
!pip install openai pandas tiktoken

3. 早期的对话系统

早期,没有大语言模型的时候,我们对话系统是如何实现的?

def AssistantResponse(user_message):
    if user_message in ["你好", "Hello", "Bonjour"]:
        return "欢迎您!"
    elif user_message in ["你是谁", "你叫什么名字"]:
        return "我是机器人小悦"
    else:
        return "不好意思,我没能理解您的问题"

简单的调用进行体验一下:

user_message = "你好"
print(f'User: {user_message}\nAssistant: {AssistantResponse(user_message)}')

输出:

User: 你好
Assistant: 欢迎您!

我们可以再进行测试:

user_message = "你是"
print(f'User: {user_message}\nAssistant: {AssistantResponse(user_message)}')

输出:

User: 你是
Assistant: 不好意思,我没能理解您的问题

继续测试:

user_message = "你是谁"
print(f'User: {user_message}\nAssistant: {AssistantResponse(user_message)}')

输出:

User: 你是谁
Assistant: 我是机器人小悦

所以,你应该到这里能发现。我们现在的机器人🤖能不能正常回答,取决于:我们有没有提前预判用户可能会问的问题🙋。这种情况下,按目前的代码,只能使用穷举法。——但是,实际上是不可能的,一种语言都做不完。何况,有各类语言。用户换一种提问方式,机器人也会失效,所以早期这种实现是有很大局限性的。

中间还经历过各种不同技术驱动的系统,例如最经典的 RASA …意图识别,技能,填槽,动作

现在,有了大模型的加持,一切都不同了…

4. 大模型初体验

import openai 
# openai.api_key = 'Raplace to your API Key' 
openai.api_key = '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'

prompt = ["问题:介绍一下 AI悦创·编程一对一是什么类型的公司\n回答:"]
response = openai.Completion.create(engine="text-davinci-002", prompt=prompt, temperature=0, max_tokens=1024)
print(response['choices'][0]['text'])

输出:

AI悦创·编程一对一是一家专注于为学生提供个性化编程教育的公司。我们提供针对性的课程设置和专业的师资队伍,帮助学生学习编程,培养创新能力和解决问题的能力。

可以看见,上面大语言模型的回答并不是那么合适。会给你一个虚假的回答,也就是不懂装懂。所以,我们也需要自己拥有辨别能力。

我们,可以通过提示工程或者向量数据库等,都可以进行解决。

5. 小悦技术全景图

首先来看就是我们小悦技术架构图怎么来设计。

首先的话就是我们无论做怎样的软件系统,它都是需要有一个硬件把这个东西跑起来。我们实际上会用到 OpenAI 的 GPT 的模型,也会用到我们私有化部署的 LLaMa2 的模型,还有各种各样的 AI 模型。

那这些模型,有些是需要通过本地私有化的方式来部署,那就需要用到 GPU 了。那上层的话可能就是我们要做服务交付的时候,会用到容器相关的技术。那就会用到云计算相关的算力资源,然后还有像 docker 这种容器管理的工具和平台。

在最上层,我们利用各种中间件来解决特定的问题,例如前面提到的三种数据库。中间层则涵盖了各种大型模型,如 LAMA Two、Checker M2、OpenAI 的 GPT 模型,以及我们先前使用的 Tax Da Vinci 02 等。而在最底层,我们将进行大量的工程封装,将这些模型转化为 API,并通过UI进行简洁的展示。简而言之,这就是我们课程的核心内容,并且可以被概括为一张图。

6. 小悦关键流程图

其实,提到如 OpenAI GPT或者拉玛这样的技术,我相信大家都不陌生。但具体的实现流程是怎样的呢?其实非常直接:只要用户提出问题,系统便会给出答复,就这么简单。

Schedule,这个图不完整,后期会重新制作

当然,这是一个基本的流程。

但在实际应用中,我们会增加很多复杂性。为什么要这样做?因为简单的流程容易导致我们最初展示的那种幻觉「答非所问」问题。针对这个幻觉问题,之前我们提到过有多种解决方法。而在这门课程中,我们会采用这些方法来逐一解决这个问题。

首先,我们可以采用向量数据库的方法或者微调模型来减少幻觉的发生。这涉及到许多核心技术,例如,如何最大化地利用 OpenAI 的模型以获得最佳效果。此外,如何微调一个模型或使用向量数据库来解决特定问题都是充满挑战的话题。

这门课程涵盖的内容,只要大家能够掌握,无疑可以助你们实现个人目标,包括升职加薪等。

我们已经详细介绍了不少内容。那么,如何实现“小悦 V0.1”呢?

我们的目标是找到一个最简单的方法,使“小悦V0.1”这个版本得以实现。实际上,我们刚刚深入讨论了一个最基础的系统,用户只需提交一个问题,系统便会为其提供答复。整个过程是由一个大型模型驱动的。在实现过程中,我们还会在 UI 上使用 gradio,同时借助 LangChain 来搭建服务,利用某个开发框架进行中间过程的开发,再用 Jupyter 来调试我们的代码。

7. 小悦 V0.1 介绍

幻觉的存在导致回复的不是我们想要的,小悦对话机器人应运而生,开始打造 V0.1 版本

v0.1

要造一个小悦机器人需要些什么
  1. 得封装下服务来调用下大语言模型;
  2. 需要了解下大语言模型如何调用;
  3. 需要有一个前端来给用户操作;
  4. 需要知道用户使用的好不好;
总而言之,先做一个 POC 来验证下是可行性

“POC”是“Proof Of Concept”的缩写,中文常译为“概念验证”。这是一个实验或原型,其目的是验证某个想法、概念或理论在实际应用中是否可行。通过POC,开发者或研究者可以验证某个解决方案在特定场景中是否有效,从而避免在完整开发之前浪费时间和资源。

在我上面写出:“总而言之,先做一个 POC 来验证下是可行性”就是说,在全面开发或实施之前,先制作一个原型或实验来确认这个想法或方法是否真的可行。

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

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

相关文章

A100 A800 H100 H800 模块

老美对A100、A800、H100和H800在内的多款AI芯片实施了出口限制, 目前,具体限制的时长并没有明确的公开信息。 科研人员在面对此类限制 ,可能需要寻找替代的供应渠道,加强国内外合作, 或者加大在本土技术研发的投入&a…

数据结构 | 堆排序

数据结构 | 堆排序 文章目录 数据结构 | 堆排序建立大堆排序结果以及全部代码 如果没有看过堆的实现的话可以先看前面的一章堆的实现,然后再来看这个堆排序,都是比较简单的~~ 这里堆排序首先建堆,建堆是要建小堆还是大堆呢? 在堆排…

cpp中虚实继承问题

1.一个基类base,被类a虚继承,类a被其他的类继续继承,那么base中的初始化必须由派生类的最后一个完成,其中任意一个都不能代替完成基类,如果在最后一个派生类里不进行这个base的初始化,那么就会调用相应的无…

Vatee万腾的数字探险之旅:vatee科技创新的新纪元

在数字时代的潮流中,Vatee万腾以其独特的数字探险之旅引领着科技创新的新纪元。这不仅是一次技术的进步,更是一场数字领域的探险,让我们一同探索Vatee在科技创新中的前沿地带。 Vatee万腾的数字探险起源于对未知的渴望和对创新的不懈追求。在…

新购服务器项目部署指南—— Express + Vue + Nginx+ pm2 Nodejs项目部署全流程

目录 一、部署Express项目1.1、安装Node1.2、安装pm2进程管理器1.3、部署Express后端项目 二、部署Vue前端项目2.1、Nginx的下载安装与SLL配置2.2、打包Vue项目2.3、上传项目到Nginx目录2.4、配置Nginx 附录pm2命令速览Nginx命令速览 最后 书接上回:新购服务器开荒记…

不幸被封号!后续来了...

之前发文说过,视频号“技术领导力”被封号3天,无法直播了;购物车被禁用7天。经过多渠道申诉、跟官方沟通均无效。 对事件不了解的可以看这里《被封号了~》,简单来说就是转播了某位大V的直播,因为某些说不清道不明的原因…

快速了解软件工程学概述(5种软件过程模型)

目录 1 、什么是软件?特点有哪些 ? 2 、 软件危机 定义: 软件危机产生的原因 消除软件危机的方法 3 、软件工程 1.软件工程的介绍 (1)概念 (2)本质特征 (3)软件工程方法学(方…

什么样的CRM系统更值得使用?

CRM系统发展到了2023年,经过了无数次迭代与更新,各种概念开始层出不穷。当您的企业准备实施一套CRM系统,在选型前有个问题需要思考:您到底需要什么样的CRM系统? CRM系统早已经从当初的管理客户关系变为了“十项全能”—…

死磕MybatisPlus系列:Mapper的奇妙之旅

Mybatis Plus源码解析系列篇之Mapper的奇妙之旅 一、MybatisPlus初体验 MybatisPlus是一个基于mybatis的开源orm框架,其内置的Mapper、Service让开发者仅需简单的配置,就能获得强大的CRUD能力;其强大的条件构造器,可以满足各类需…

Walrus 0.4发布:单一配置、多态运行,体验下一代应用交付模型

今天,我们高兴地宣布云原生统一应用平台 Walrus 0.4 正式发布,这是一个里程碑式的版本更新。新版本采用了全新的应用模型——仅需进行单一配置,即可在多种模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的完整应用系统。“You bu…

keil5下使用RAM运行程序的配置过程

本用例是展示HC32F4A0片上2M flash的擦除和读写功能,由于默认配置是程序写入flash中,并从flash中运行程序,所以需要将程序配置为从RAM中运行,这样才能正确运行此程序。默认配置如下: 可以看到MCU的内部flash为2M&#…

Arraylist案例

Arraylist是使用最频繁的一个集合,它与数组类似,不同之处在于它可以动态改变长度,不够了可以扩容。 案例: 我的思考: 首先多个菜品信息可以用Arraylist 来存储,那我们需要再创建一个菜品类Food&#xff0…

uni-app+ts----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点(点击tab跳转对应的元素位置)

uni-app----微信小程序锚点定位 、自动吸顶、滚动自动选择对应的锚点&#xff08;点击tab跳转对应的元素位置&#xff09; html代码部分 重点是给元素加入【 :id“‘item’ item.id”】 <view class"radiusz bg-white pt-[30rpx] z-[999]"><u-tabs:list&q…

长期用台灯影响视力吗?备考专用护眼台灯推荐

大家都知道台灯作为一种小范围的桌面照明灯具&#xff0c;在夜晚能给我们带来很大的帮助&#xff0c;不管是办公、还是学习、阅读都需要它提供照明。那么长期使用台灯会影响视力吗&#xff1f;其实台灯一般都眼睛都是没有伤害的&#xff0c;真正对眼睛有伤害的是不正确的使用台…

MySQL(免密登录)

简介: MySQL免密登录是一种允许用户在没有输入密码的情况下直接登录到MySQL服务器的配置。这通常是通过在登录时跳过密码验证来实现的。 1、修改MySQL的配置文件 使用vi /etc/my.cnf&#xff0c;添加到【mysqld】后面 skip-grant-tables #配置项告诉mysql跳过权限验证&#…

win10屏幕录制神器,让你轻松上手!

屏幕录制成为了人们日常生活中越来越重要的一部分&#xff0c;无论是游戏录制、在线会议记录&#xff0c;还是教程演示&#xff0c;屏幕录制都能够有效地帮助人们捕捉并分享关键信息。随着windows 10系统的普及&#xff0c;许多用户已经开始探索这个系统中的屏幕录制功能。接下…

CRM的智能招投标对企业有什么意义?

如今CRM系统的生态系统越来越壮大&#xff0c;这些工具的集成极大地丰富了CRM系统的应用场景&#xff0c;例如CRM系统集成企业微信等社交媒体为获客提供便利&#xff1b;再比如CRM集成ChatGPT提高邮件内容质量&#xff0c;对于经常接触招投标项目的业务人员来说&#xff0c;在C…

企业营销管理能够实现自动化吗?怎么做?

当今企业面临着越来越多的营销难题&#xff1a;如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做&#xff1f;或许CRM系统营销自动化会起到作用。 客户细分&#xff1a; 企业可以通过CRM的客户细分功能&#xff0c;根据客户…

C#中openFileDialog控件的使用方法

目录 一、OpenFileDialog基本属性 二、使用 OpenFile 从筛选的选择中打开文件 1.示例源码 2.生成效果 3. 其它示例 三、使用 StreamReader 以流的形式读取文件 1.示例源码 2.生成效果 四、一种新颖的Windows窗体应用文件设计方法 在C#中&#xff0c;OpenFileDialog控件…