【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/

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

目录
相关文章
|
5天前
|
人工智能 自然语言处理 Linux
|
5天前
|
人工智能 自然语言处理
【AIGC】英语小助手Lingo:基于大语言模型的学习英语小帮手
【5月更文挑战第11天】英语小助手Lingo:基于大语言模型的学习英语小帮手
39 7
|
5天前
|
人工智能 自然语言处理 前端开发
【AIGC】通过人工智能总结PDF文档摘要服务的构建
【5月更文挑战第9天】 使用Python和预训练的AI模型,结合Gradio前端框架,创建了一个文本及PDF摘要聊天机器人。通过加载"FalconsAI/text_summarization"模型,实现文本和PDF的预处理,包括PDF合并与文本提取。聊天机器人接收用户输入,判断是文本还是PDF,然后进行相应的摘要生成。用户可以通过运行`app.py`启动机器人,访问`localhost:7860`与之交互,快速获取内容摘要。这个工具旨在帮助忙碌的人们高效获取信息。
63 2
|
5天前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
11 0
|
5天前
|
存储 人工智能 API
【AIGC】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序
【5月更文挑战第7天】基于检索增强技术(RAG)构建大语言模型(LLM)应用程序实践
91 1
|
5天前
|
前端开发 Java 数据库
开源一个整合了AIGC大语言模型的SpringBoot智慧医药系统
开源一个整合了AIGC大语言模型的SpringBoot智慧医药系统
71 0
开源一个整合了AIGC大语言模型的SpringBoot智慧医药系统
|
5天前
|
人工智能 测试技术 API
【AIGC】LangChain Agent(代理)技术分析与实践
【5月更文挑战第12天】 LangChain代理是利用大语言模型和推理引擎执行一系列操作以完成任务的工具,适用于从简单响应到复杂交互的各种场景。它能整合多种服务,如Google搜索、Wikipedia和LLM。代理通过选择合适的工具按顺序执行任务,不同于链的固定路径。代理的优势在于可以根据上下文动态选择工具和执行策略。适用场景包括网络搜索、嵌入式搜索和API集成。代理由工具组成,每个工具负责单一任务,如Web搜索或数据库查询。工具包则包含预定义的工具集合。创建代理需要定义工具、初始化执行器和设置提示词。LangChain提供了一个从简单到复杂的AI解决方案框架。
118 3
|
5天前
|
机器学习/深度学习 人工智能 NoSQL
【AIGC】深入浅出理解检索增强技术(RAG)
【5月更文挑战第10天】本文介绍了检索增强生成(RAG)技术,这是一种将AI模型与内部数据结合,提升处理和理解能力的方法。通过实时从大型文档库检索信息,扩展预训练语言模型的知识。文章通过示例说明了当模型需要回答未公开来源的内容时,RAG如何通过添加上下文信息来增强模型的回答能力。讨论了实际应用中令牌限制和文本分块的问题,以及使用文本嵌入技术解决相关性匹配的挑战。最后,概述了实现RAG的步骤,并预告后续将分享构建检索增强服务的详情。
91 3
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
【活动】AIGC 技术的发展现状与未来趋势
AIGC技术现正快速发展,涉及文本、图像、音频和视频生成。GPT-3等模型已能生成连贯文本,GANs创造高质量图像,WaveNet合成逼真音频。尽管面临质量控制、原创性、可解释性和安全性的挑战,未来趋势将聚焦更高生成质量、多模态内容、个性化定制、增强可解释性和透明度,以及关注安全性和伦理问题。AIGC将在多领域创造更多可能性。
180 3
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
【AIGC】文档智能助手技术解决方案报告
【4月更文挑战第14天】智能文档处理助手技术解决方案报告整理输出
176 0