部署一个本地的聊天机器人-基于ChatGLM3

这篇具有很好参考价值的文章主要介绍了部署一个本地的聊天机器人-基于ChatGLM3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

部署一个本地的聊天机器人-基于ChatGLM3

预备

理论上来说

  1. 8G及以上显存的英伟达GPU

笔者的设备

  1. RTX 4060Ti (16G显存)
  2. Archlinux
  3. Python 3.10.10
  4. ChatGLM3 代码版本 33953b119e7

开整

下载ChatGLM3

ChatGLM3 是智谱AI几周前才开源的模型, 6B大小的话只是个人用的话算是完全免费的. 这个相比之前的2感觉是prompt优化了一些(不过也复杂了一些), 可以直接用来让机器人调用工具等等

需要下载两个仓库, 一个是代码库一个是模型库, 下面的命令不需要代理也可以直接执行

git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

git clone https://mirror.ghproxy.com/https://github.com/THUDM/ChatGLM3

运行

我本地用gradio 3.50.2web_demo有点问题, 所以微改了一下自带的web_demo

diff --git a/basic_demo/web_demo.py b/basic_demo/web_demo.py
index a6e4e19..b30d834 100644
--- a/basic_demo/web_demo.py
+++ b/basic_demo/web_demo.py
@@ -5,7 +5,8 @@ import mdtex2html
 from utils import load_model_on_gpus
 import torch
 
-MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
+# MODEL_PATH = os.environ.get('MODEL_PATH', 'THUDM/chatglm3-6b')
+MODEL_PATH = os.path.expanduser("~/Github/chatglm3-6b")
 TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)
 DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'
 
@@ -21,6 +22,7 @@ else: # CPU, Intel GPU and other GPU can use Float16 Precision Only
 
 """Override Chatbot.postprocess"""
 
+chat_postprocess = gr.Chatbot.postprocess
 def postprocess(self, y):
     if y is None:
         return []
@@ -29,10 +31,9 @@ def postprocess(self, y):
             None if message is None else mdtex2html.convert((message)),
             None if response is None else mdtex2html.convert(response),
         )
-    return y
+    return chat_postprocess(self, y)
 
-
-gr.Chatbot.postprocess = postprocess
+# gr.Chatbot.postprocess = postprocess
 
 
 def parse_text(text):
@@ -75,7 +76,7 @@ def predict(input, chatbot, max_length, top_p, temperature, history, past_key_va
                                                                 return_past_key_values=True,
                                                                 max_length=max_length, top_p=top_p,
                                                                 temperature=temperature):
-        chatbot[-1] = (parse_text(input), parse_text(response))
+        chatbot[-1] = (parse_text(input), response)
 
         yield chatbot, history, past_key_values
 
@@ -90,13 +91,12 @@ def reset_state():
 
 with gr.Blocks() as demo:
     gr.HTML("""<h1 align="center">ChatGLM3-6B</h1>""")
-
+    gr.ChatInterface
     chatbot = gr.Chatbot()
     with gr.Row():
         with gr.Column(scale=4):
             with gr.Column(scale=12):
-                user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
-                    container=False)
+                user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10, container=False)
             with gr.Column(min_width=32, scale=1):
                 submitBtn = gr.Button("Submit", variant="primary")
         with gr.Column(scale=1):
@@ -108,10 +108,11 @@ with gr.Blocks() as demo:
     history = gr.State([])
     past_key_values = gr.State(None)
 
+    # submitBtn.click(predict, [user_input, chatbot, max_length, top_p, temperature, history, past_key_values],
+    #                 [chatbot, history, past_key_values])
     submitBtn.click(predict, [user_input, chatbot, max_length, top_p, temperature, history, past_key_values],
-                    [chatbot, history, past_key_values], show_progress=True)
-    submitBtn.click(reset_user_input, [], [user_input])
+                    [chatbot, history, past_key_values]).then(reset_user_input, [], [user_input], queue=False)
 
-    emptyBtn.click(reset_state, outputs=[chatbot, history, past_key_values], show_progress=True)
+    emptyBtn.click(reset_state, outputs=[chatbot, history, past_key_values], queue=False)
 
-demo.queue().launch(share=False, server_name="127.0.0.1", server_port=8501, inbrowser=True)
+    demo.queue().launch(share=False, server_name="127.0.0.1", server_port=8501, inbrowser=True)

跑了一下结果也是非常的棒, 生成速度还蛮快的, 非常的丝滑

看看效果
部署一个本地的聊天机器人-基于ChatGLM3文章来源地址https://www.toymoban.com/news/detail-747222.html

到了这里,关于部署一个本地的聊天机器人-基于ChatGLM3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ai聊天问答知识库机器人源码,基于gpt实现的本地知识库问答实现,聊天对话效果,发送回复以及流式输出...

    现在基于gpt做自己项目的问答机器人,效果非常的好。可以把自己的文档上传上去,让机器人根据文档来进行回答。 想要实现智能AI问答功能,现在大部分都是基于向量数据库的形式。 整体的流程就是:上传文档===openai向量接口 ==== 存入向量数据库 访客咨询:  咨询问题

    2024年02月10日
    浏览(46)
  • 【虹科分享】基于Redis Enterprise,LangChain,OpenAI 构建一个电子商务聊天机器人

    如何构建你自己的商务聊天机器人?注意哦,是你自己的聊天机器人。一起来看看 Redis Enterprise的向量检索是怎么帮你实现这个愿望的吧。   鉴于最近人工智能支持的 API和网络开发工具的激增,似乎每个人都在将聊天机器人集成到他们的应用程序中。   LangChain是一种备受欢

    2024年02月05日
    浏览(68)
  • 制作一个Python聊天机器人

    我们学习一下如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的 聊天机器人也称为聊天机器人、机器人、人工代理等,基本上是由人工智能驱动的软件程序,其目的是通过文本或语音与用户进行对话。 我们日常接触

    2024年01月19日
    浏览(66)
  • 使用Streamlit 实现一个聊天机器人界面

    效果如下: 只需要效果generate_llama2_response 为你的 llm的输出即可。

    2024年03月09日
    浏览(83)
  • Javascript 编写一个简单的聊天机器人

    在本 Web 开发教程中,我们将了解如何使用 HTML、CSS 和 vanilla JavaScript 创建基本的聊天机器人。本练习侧重于 JS 基础知识,而不是任何类型的人工智能 (AI)。为了使该过程更简单,更易于学习,我没有使用任何第三方库。我将通过专注于JavaScript编程语言的基础知识从头开始

    2024年02月05日
    浏览(49)
  • AI聊天机器人,一个就够了:文心一言、讯飞星火、通义千问AI聊天机器人深度对比(一)

    本次为第一部分的测评,综合结论: 讯飞星火 文心一言 = 通义千问 。 文本生成能力:文心一言 = 讯飞星火 通义千问,讯飞星火表现亮眼,文心一言作为国内AI聊天机器人的先发者,在创意写作方面略不尽如人意。 代码能力:文心一言 = 讯飞星火 = 通义千问。对于不是很复

    2024年02月02日
    浏览(50)
  • AI聊天机器人,一个就够了:文心一言、讯飞星火、通义千问AI聊天机器人深度对比(二)

    本次为第二部分的测评,第一部分的测评请点击这里。综合结论: :通义千问 讯飞星火 文心一言 。 逻辑推理能力:讯飞星火 = 通义千问 文心一言。对于基本的逻辑推理问题,三个AI聊天机器人都能通过测试。但对于稍高难度的逻辑推理问题,讯飞星火和通义千问的表现亮

    2024年02月01日
    浏览(60)
  • AIGC: 关于ChatGPT中实现一个聊天机器人

    规划一个聊天机器人 智能化完全于依托于GPT, 而产品化是我们需要考虑的事情 比如,如何去构建一个聊天机器人 聊天机器人它的处理逻辑其实非常的清晰 我们输入问题调用 GPT 然后,GPT 给我们生成回答就可以了 需要注意的是,聊天机器人不同于调用API进行一个简单的测试

    2024年02月04日
    浏览(59)
  • 我用python/C++自制了一个聊天机器人

    2015年, OpenAI 由马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得·蒂尔等硅谷科技大亨创立,公司核心宗旨在于 实现安全的通用人工智能(AGI) ,使其有益于人类。 ChatGPT 则是近期 OpenAI 推出的一个基于对话的原型 AI 聊天机器人,2022年

    2023年04月17日
    浏览(39)
  • SpringBoot+WebSocket+VUE实现一个简单的聊天机器人

    要实现一个简单的聊天机器人,可以使用Spring Boot框架作为后端,使用WebSocket协议实现实时通信,使用VUE作为前端实现聊天界面。 引入jar包 在Spring Boot的配置类中添加WebSocket配置 这里的WebSocketHandler是自定义的WebSocket处理器,用于处理WebSocket消息。 做了一个简单的拦截器,实

    2023年04月19日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包