Chatbot开发三剑客:LLAMA、LangChain和Python

这篇具有很好参考价值的文章主要介绍了Chatbot开发三剑客:LLAMA、LangChain和Python。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

聊天机器人(Chatbot)开发是一项充满挑战的复杂任务,需要综合运用多种技术和工具。在这一领域中,LLAMA、LangChain和Python的联合形成了一个强大的组合,为Chatbot的设计和实现提供了卓越支持。

首先,LLAMA是一款强大的自然语言处理工具,具备先进的语义理解和对话管理功能。它有助于Chatbot更好地理解用户意图,并根据上下文进行智能响应。LLAMA的高度可定制性使得开发者可以根据实际需求灵活调整Chatbot的语言处理能力。

LangChain作为一个全栈语言技术平台,为Chatbot提供了丰富的开发资源。它整合了多种语言技术,包括语音识别、文本处理和机器翻译,为Chatbot的多模态交互提供全面支持。LangChain的强大功能使得开发者能够轻松构建复杂而灵活的Chatbot系统。

Python作为一种通用编程语言,是Chatbot开发的理想选择。其简洁而强大的语法使得开发过程更加高效,而丰富的第三方库和生态系统为Chatbot开发提供了广泛的工具和资源。Python的跨平台性也使得Chatbot能够在不同环境中运行,实现更广泛的应用。

Chatbot开发离不开大型语言模型(LLM),LLM是一种以其实现通用语言理解和生成能力而备受关注的语言模型。LLM通过使用大量数据在训练期间学习数十亿个参数,并在训练和运行过程中消耗大量计算资源来获得这些能力。

Chatbot开发三剑客:LLAMA、LangChain和Python,学习笔记,llama,langchain,python,大模型

让我们使用Langchain、llama和Python构建一个简单的聊天机器人!

在这个简单的项目中,我想创建一个关于HIV/AIDS特定主题的聊天机器人。这意味着我们发送给聊天机器人的消息,聊天机器人将尝试根据主题和消息之间的关联进行回答。但在此之前,我们必须安装和下载一些必要的组件:

1、大型语言模型

我使用的是从Hugging Face下载的META AI的LLAMA 2。

2、Langchain

用于开发由语言模型驱动的应用程序的框架

pip install langchain

3、安装Llama-cpp-python

llama.cpp库的Python实现(我尝试使用最新的llama.cpp版本,但它不起作用,所以我建议使用0.1.78稳定版本,并确保安装了C++编译器)。

pip install llama-cpp-python==0.1.78

4、导入库

from langchain.prompts importPromptTemplate
from langchain.llms importLlamaCpp
from langchain.callbacks.manager importCallbackManager
from langchain.callbacks.streaming_stdout import(
StreamingStdOutCallbackHandler
)

PromptTemplate:负责创建PromptValue,这是一种根据用户输入组合动态值的对象。

llamacpp:Facebook的LLAMA模型的C/C++端口。

CallbackManager:处理来自LangChain的回调。

StreamingStdOutCallbackHandler:用于流式处理的回调处理程序。

代码

首先,我将为我的模型路径创建一个名为 “your_model_path”的变量,然后因为我只想限制主题为HIV/AIDS,所以我创建了一个名为 “chat_topic”的主题变量,并将其填充为 “HIV/AIDS”,显然你可以修改这个主题,如果你不想限制主题,可以删除 “chat_topic”并更改模板。之后,我将创建一个名为 “user_question”的变量,以接收用户输入,还有一个稍后将使用的模板。

your_model_path = "写入你的模型路径"
chat_topic = "hiv/aids"
user_question = str(input("输入你的问题:"))
template= """
请解释这个问题:“{question}”,主题是关于{topic}
"""

我将创建一个 PromptTemplate变量,该变量将使用我们之前创建的模板,并将其分配给 “prompt”变量,然后更改提示的格式并将其分配给 “final_prompt”变量。我们使用 “chat_topic”中的主题和我们之前初始化的 “user_question”中的问题。然后创建一个名为 “Callbackmanager”的变量,并将流处理程序分配给它。

prompt = PromptTemplate.from_template(template)
final_prompt = prompt.format(
    topic=chat_topic,
    question=user_question
)
CallbackManager= CallbackManager([StreamingStdOutCallbackHandler()])

之后,让我们创建模型。

llm = LlamaCpp(
    model_path=your_model_path,
    n_ctx=6000,
    n_gpu_layers=512,
    n_batch=30,
    callback_manager=CallbackManager,
    temperature=0.9,
    max_tokens=4095,
    n_parts=1,
    verbose=0
)

model_path:LLAMA模型的路径。

n_ctx:令牌上下文窗口,模型在生成响应时可以接受的令牌数量。

n_gpu_layers:要加载到gpu内存中的层数。

n_batch:并行处理的令牌数。

callback_manager:处理回调。

temperature:用于抽样的温度,较高的温度将导致更具创意和想象力的文本,而较低的温度将导致更准确和实际的文本。

max_tokens:生成的最大令牌数。

n_parts:要将模型分割成的部分数。

verbose:打印详细输出。

最后,调用模型并传递提示。

python 
"你的文件名.py"

要运行它,只需在cmd中键入上述命令。

演示

Chatbot开发三剑客:LLAMA、LangChain和Python,学习笔记,llama,langchain,python,大模型

Chatbot开发三剑客:LLAMA、LangChain和Python,学习笔记,llama,langchain,python,大模型

完整代码

from langchain.prompts importPromptTemplate
from langchain.llms importLlamaCpp
from langchain.callbacks.manager importCallbackManager
from langchain.callbacks.streaming_stdout import(
StreamingStdOutCallbackHandler
)

your_model_path = "write your model path"
chat_topic = "hiv/aids"
user_question = str(input("Enter your question : "))
template= """
Please explain this question : "{question}" the topic is about {topic}
"""

prompt = PromptTemplate.from_template(template)
final_prompt = prompt.format(
    topic=chat_topic,
    question=user_question
)
CallbackManager= CallbackManager([StreamingStdOutCallbackHandler()])

llm = LlamaCpp(
    model_path=your_model_path,
    n_ctx=6000,
    n_gpu_layers=512,
    n_batch=30,
    callback_manager=CallbackManager,
    temperature=0.9,
    max_tokens=4095,
    n_parts=1,
    verbose=0

)
llm(final_prompt)

技术交流

建了大模型技术交流群!想要进交流群、获取原版资料的同学,可以直接加微信号:dkl88194。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、添加微信号:dkl88194,备注:来自CSDN + 技术交流
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

Chatbot开发三剑客:LLAMA、LangChain和Python,学习笔记,llama,langchain,python,大模型文章来源地址https://www.toymoban.com/news/detail-752845.html

到了这里,关于Chatbot开发三剑客:LLAMA、LangChain和Python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux文本三剑客详解

    awk、grep、sed是linux操作文本的三大利器,合称文本三剑客。 特点: grep——单纯的查找或匹配文本。 sed——编辑匹配到的文本。 awk——格式化文本,对文本进行较复杂格式处理。 首先了解一下正则表达式: 匹配字符  配置次数  位置锚定:定位出现的位置   实例介绍:

    2024年04月16日
    浏览(24)
  • 网页三剑客之 HTML

    本章开始我们来介绍一下网页前端部分,我们只是简单的介绍一些常用的各种标签,其目的在于为我们后面的项目做准备。 我们并不要求能完全掌握前端的语法,但是在见到以后能够认识这些代码就可以了。 想走后端开发的,前端不需要多么熟悉,毕竟在各个企业中前后端

    2024年02月02日
    浏览(25)
  • 文本三剑客之 awk

    Linux/UNIX 系统中,awk 是一个功能强大的编辑工具。逐行读取输入文本 以空格作为分割符,多个空格他会自动压缩成一个空格 AWK信息的读入也是逐行指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理. 1按照命令找指定的行  2.找到的行 打印,操作 awk

    2024年02月08日
    浏览(31)
  • 『 前端三剑客 』:HTML常用标签

    在HTML中标签是以成对的结构出现的,在HTML当中代码是通过标签来组织的 , 下面通过见得的Hello World的展现来显示歘HTML 标签的结构 如上述代码块所示,形如 用尖括号进行组织的,成对出现的这个东西就叫做标签 (tag) , 也可以叫做元素(element); 通常情况下一个标签是成对出现的, 开

    2024年02月09日
    浏览(36)
  • 『 前端三剑客 』:CSS选择器

    上一篇文章我们介绍了 html 的常用标签及用法 , 这次我们来介绍 css 来对页面进行美化处理 css 全称 : 层叠样式表 (Cascading Style Sheets). 主要作用 : 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面 的效果. 能够做到 页面的样式和结构分离 . 一 . 基本语法 基本语

    2024年02月09日
    浏览(31)
  • 前端三剑客 —— CSS (第三节)

    目录 上节回顾: 1.CSS使用有以下几种样式; 2.选择器         1.基本选择器         2.包含选择器         3.属性选择器 []         4.伪类选择器 :         5.伪元素选择器 ::before :after 3.常见样式的使用 常见样式参考表 一些特殊样式 媒体查询 自定义字体 变

    2024年04月08日
    浏览(39)
  • 『 前端三剑客 』:CSS常用属性

    一 . CSS常用元素属性 1.1 字体家族和 字体大小 设置的字体需要是 windows 上自带的字体 , 要求是系统中已经安装了的字体 使用 css 设置字体为微软雅黑 和 宋体 , 字体大小为 30 px 和 40 px font - size 设置的是字体的字符框的高度的大小 . 设置效果如下所示 1.2 设置字体粗细 font-we

    2024年02月15日
    浏览(33)
  • 文本三剑客之~~~sed命令

    sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。 包括读取,执行和显示三个过程 读取:sed从输入流(文件,管道

    2024年02月05日
    浏览(31)
  • Linux文本三剑客---awk

    Linux文本三剑客之一(grep,sed,awk),功能最强大的文本工具。 逐行读取输入的文本内容,默认以空格和tab键作为分隔符。但是多个空格或者tab键的空格,会自动压缩成一个,然后按照指定的模式和条件执行编辑命令 可以在免交互的情况下,实现复杂的文本操作。完成自动化配

    2024年02月07日
    浏览(30)
  • Java面向对象三剑客之——继承

    今天向大家介绍Java中最重要的概念之一——继承。Java是一种面向对象的编程语言,继承是实现面向对象编程的基础之一。通过继承,我们可以使代码更具可读性、可重用性和可维护性,从而提高程序的效率和可靠性。让我们一起探索java继承的奥秘吧! 📖1.1 继承的实现 继承

    2023年04月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包