【AIGC】基于大语言模型构建多语种聊天机器人(基于Bloom大语言模型)

简介: 【5月更文挑战第8天】基于大语言模型Bloom构建多语种聊天机器人

[toc]


ChatGPT 是多语言的,但是,它不会产生与用英语查询它相同的高性能。同时,对于非英语人士来说,这可能也是障碍,原因有二:

  • 有效提示词
    当英语不是你的第一语言时,生成完全表达你意思的切中要害的问题可能很困难,而且 ChatGPT 或其他语言模型对你的要求感到困惑的情况并不少见,至少在他们的第一个答案中是这样。
  • 跨语言结果不可靠
    当试图用你的母语与LLM交谈时,你可能会遇到尴尬的措辞,错误或解释习语和其他日常表达的困难。

如果我们能从头开始生成一个多语言的LLM,那就太好了。我们也可以决定在已经存在的基于英语的模型上构建,而无需微调或重新训练它们,而是使用一个聪明的解决方法:我们可以使用一个过滤函数,该函数能够将用户的母语查询翻译成英语,将其提供给 LLM 并检索响应,最终将从英语回译为原始语言。 想尝试吗?让我们使用一些 python 来构建它!

1.导入依赖库

要构建多语言聊天机器人,您需要多个依赖项,可以通过 pip 安装这些依赖项:

python3 -m pip install transformers==4.39.3 \
langdetect==1.0.9 \
deep-translator==1.11.4 \
torch==2.1.2 \
gradio==4.28.3

让我们看看这些包有什么作用:

  • transformers 是 Hugging Face 的一个软件包,可帮助您与 HF Hub (GitHub) 上的模型进行交互
  • langdetect 是一个用于自动语言检测 (Github) 的软件包
  • deep-translator 是一个基于多个翻译服务 (GitHub) 的句子翻译包
  • torch 是一个用于在 python (GitHub) 中管理张量和动态神经网络的包
  • gradio 是一个包,旨在简化 Python 和其他语言 (GitHub) 的应用程序界面开发

2.后端架构设计及实现

我们需要构建一个如下所示的后端架构

让我们定义一个 Translation 类,帮助我们检测原始语言并对其进行翻译:

from langdetect import detect
from deep_translator import GoogleTranslator

class Translation:
    def __init__(self, text, destination):
        self.text = text
        self.destination = destination
        try:
            self.original = detect(self.text) # detect original
        except Exception as e:
            self.original = "auto" # if it does not work, default to "auto"
    def translatef(self):
        translator = GoogleTranslator(source=self.original, target=self.destination) # use Google Translate, one of the fastest translators available
        translation = translator.translate(self.text)
        return translation

正如你所看到的,这个类将我们想要翻译的text(文本)和我们想要翻译的语言(destination)作为参数。

现在让我们加载我们想要用于我们目的的 LLM:我们将从 Bigscience 的 Bloom-1.7B 开始,这是一个中等大小的 LLM,非常适合 16GB RAM、2 核 CPU 硬件。

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

model = AutoModelForCausalLM.from_pretrained("bigscience/bloom-1b7") # import the model
tokenizer = AutoTokenizer.from_pretrained("bigscience/bloom-1b7") # load the tokenizer

pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=2048, repetition_penalty=1.2, temperature=0.4) # prepare the inference pipeline

我们定义了生成token的最大数量(2048),将重复惩罚设置为1.2,以避免模型一遍又一遍地重复同样的事情,并且我们将温度(生成响应的“creativity”)保持在相当低的水平。

现在,让我们创建一个函数,它能够从聊天中获取消息,将其翻译成英语(除非它已经是英语),将其作为提示提供给 Bloom,检索英语响应并将其反向翻译成原始语言:

def reply(message, history):
    txt = Translation(message, "en")
    if txt.original == "en":
        response = pipe(message)
        return response[0]["generated_text"]
    else:
        translation = txt.translatef()
        response = pipe(translation)
        t = Translation(response[0]["generated_text"], txt.original)
        res = t.translatef()
        return res

我们已经拥有了后端架构所需的一切,是时候构建前端接口了!

3.构建接口

使用 Gradio,构建用户界面就像一行代码一样简单:

demo = gr.ChatInterface(fn=reply, title="Multilingual-Bloom Bot")

现在,我们可以使用以下命令启动应用程序:

demo.launch()

我们将整个脚本保存在一个名为 chat.py 的文件中,为了使聊天机器人运行,我们转到终端并键入:

python3 chat.py

小结

本节我们学习了开源项目 bloom-multiligual-chatbot,这是一个多语言聊天机器人,我们使用bloom-1b7作为我们的AI基础模型,通过Gradio构建我们的web应用程序,通过本节的学习,相信读者对AI及聊天机器人架构及实践会有一个更加深入的了解。

github地址:https://github.com/AstraBert/bloom-multilingual-chatbot/

小编是一名热爱人工智能的专栏作者,致力于分享人工智能领域的最新知识、技术和趋势。这里,你将能够了解到人工智能的最新应用和创新,探讨人工智能对未来社会的影响,以及探索人工智能背后的科学原理和技术实现。欢迎大家点赞,评论,收藏,让我们一起探索人工智能的奥秘,共同见证科技的进步!

目录
相关文章
|
2天前
|
物联网 PyTorch 算法框架/工具
介绍一个大语言模型的微调框架Swift | AIGC
介绍一个大语言模型的微调框架Swift 【7月更文挑战第4天】
12 3
|
24天前
|
人工智能 自然语言处理 机器人
【AIGC】大型语言模型在人工智能规划领域模型生成中的探索
【AIGC】大型语言模型在人工智能规划领域模型生成中的探索
48 6
|
4天前
|
机器学习/深度学习 人工智能 安全
运用F5构建机器人防御,轻松应对恶意Bot威胁
运用F5构建机器人防御,轻松应对恶意Bot威胁
12 0
|
5天前
|
机器学习/深度学习 自然语言处理
「AIGC」如何理解大语言模型
Transformer模型,2017年提出,以自注意力为核心,用于序列到序列任务,如机器翻译。它包含多头注意力实现并行处理,提高效率。词汇切分(Tokenization)将文本拆分成子词,增强模型灵活性。嵌入将词汇映射到向量,捕获语义,降低维度。Attention机制允许模型动态分配注意力,有效处理长距离依赖,改善文本理解。
|
24天前
|
机器学习/深度学习 自然语言处理
【AIGC】探索大语言模型中的词元化技术机器应用实例
【AIGC】探索大语言模型中的词元化技术机器应用实例
16 0
|
2月前
|
人工智能 自然语言处理
【AIGC】英语小助手Lingo:基于大语言模型的学习英语小帮手
【5月更文挑战第11天】英语小助手Lingo:基于大语言模型的学习英语小帮手
181 7
|
2月前
|
人工智能 自然语言处理 前端开发
【AIGC】通过人工智能总结PDF文档摘要服务的构建
【5月更文挑战第9天】 使用Python和预训练的AI模型,结合Gradio前端框架,创建了一个文本及PDF摘要聊天机器人。通过加载"FalconsAI/text_summarization"模型,实现文本和PDF的预处理,包括PDF合并与文本提取。聊天机器人接收用户输入,判断是文本还是PDF,然后进行相应的摘要生成。用户可以通过运行`app.py`启动机器人,访问`localhost:7860`与之交互,快速获取内容摘要。这个工具旨在帮助忙碌的人们高效获取信息。
358 2
|
2月前
|
存储 人工智能 API
【AIGC】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序
【5月更文挑战第7天】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序实践
351 1
|
2月前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
27 0
|
5天前
|
机器学习/深度学习 人工智能 自动驾驶
「AIGC」Agent AI智能体的未来:技术、伦理与经济的交汇点
Agent AI智能体融合机器学习与深度学习,推动社会效率与创新,但也引发伦理、法律及就业挑战。技术上,它们能自我优化、积累知识,如自动驾驶汽车通过学习改善驾驶。伦理上,需建立AI准则,确保透明度和责任归属,如医疗AI遵循道德原则。经济上,AI改变就业市场结构,创造新职业,如AI顾问,同时要求教育体系更新。未来,平衡技术进步与社会影响至关重要。
23 0