不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

本文源自 GLM Coding 大师作品征集赛 的获奖作品,原文作者为 张翠山

这篇文章为开发者提供了一个完整的入门级大模型应用开发教程,涵盖了StreamlitLangChain的使用,以及如何结合GLM-4.6实现聊天机器人应用。

文章详细介绍了如何利用Streamlit创建交互式Web应用、如何通过LangChain构建基于语言模型的应用程序,并通过实际代码示例带领读者完成聊天机器人UI与大模型调用的整合。


很高兴能在茫茫人海中让你阅读到这篇文章,来了就是缘分。如果这篇文章能够给你智谱 AI GLM 教程带来一些获得感,那么请不要吝啬你的点赞呀^_^。这是一篇入门级大模型应用开发教程,适合后端开发工程师,数据工程师以及大模型应用开发工程师的动手实践教程。需要你具备一丢丢Python语言开发基础,但也仅仅需要基础。要完成这个案例需具备以下技术栈:

  • Streamlit: 一个开源 Python 库,它旨在让数据科学家和工程师能够以最少的代码和配置,将他们的数据分析和模型展示转化为交互式的 Web 应用。说人话就是:你不用开发前端代码了,直接调用Python第三方库用更简单的代码帮你生成前端页面。
  • LangChain: 一个用于构建和管理基于语言模型(Language Models, LM)的应用程序的框架。它提供了一系列工具和组件,帮助开发者更高效地构建、训练、部署和管理语言模型应用。LangChain 的设计目标是简化语言模型的使用过程,使其更加容易被集成到各种应用场景中。

上面已经提到Streamlit是一个开源Python库,能够让你用Python函数调用方式开发你的Web前端页面。

  • 简单易用。 Streamlit 的 API 非常简洁,只需要几行代码就可以创建一个基本的应用程序。无需复杂的前端开发知识,Python 代码直接决定了应用的界面和功能。
  • 快速开发。 支持热重载,代码修改后自动更新应用,无需手动重启服务器。丰富的内置组件和功能,可以快速实现常见的数据可视化和交互操作。
  • 高度可定制。 支持自定义 CSS 样式,可以对应用的外观进行精细调整。可以集成第三方库和框架,如 Plotly、Altair、Pandas 等,扩展应用的功能。
  • 强大的社区支持。 官方文档详细且拥有一个活跃的社区,提供了大量的示例和教程,帮助用户快速上手。

使用Steamlit第一步是需要安装它的依赖:


安装成功之后,运行它的helloword示例:


运行上面命令,会自动在你的浏览器打开一个页面,出现下面的页面则说明你安装成功。

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

接下来看看Streamlit内置了哪些函数或者组件来完成GUI开发,我把它的组件按照用途大概归类为以下几种。

  • 文本和标题: st.write(), st.title(), st.header(), st.subheader()等。
  • 输入控件: st.text_input(), st.slider(), st.selectbox(), st.checkbox(), st.button()等。
  • 显示数据: st.dataframe(), st.table(), st.json()等。
  • 显示图表: st.pyplot(), st.altair_chart(), st.bokeh_chart(), st.plotly_chart()等。
  • 布局: st.sidebar(), st.columns(), st.expander()等。

让我们来尝试创建注册页面,这个页面体现了当年的你在学习html时用到的基础标签:、、、等前端标签这些功能等效。

</pre> 

以streamlit方式运行你的脚本就行了


一个简单的注册页面如下:

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

好的,现在我们来看看今天要完成的任务,要干的正事:成一个聊天机器人的UI页面。注意,我们先完成纯前端页面,完成页面布局即可。

</pre> 

效果图如下:

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人


LangChain 由 Harrison Chase 创建于2022年10月,它是围绕LLMs(大语言模型)建立的一个框架。LangChain自身并不开发LLMs,它的核心理念是为各种LLMs实现通用的接口,把LLMs相关的组件“链接”在一起,简化LLMs应用的开发难度,方便开发者快速地开发复杂的LLMs应用。LangChain之所以大火,是因为它提供了一系列方便的工具、组件和接口,大大降低了 AI 应用开发的门槛,也极大简化了大模型应用程序的开发过程。

  • 模块化设计: LangChain 采用模块化设计,将不同的功能拆分成独立的组件,如 Prompts、Models、Chains、Memory、Retriever 和 Agent。这些组件可以灵活组合,以满足不同应用的需求。
  • 强大的模型支持: 支持多种预训练语言模型,如 GPT-3、BERT、T5 等。这些模型经过大规模数据训练,具备强大的语言理解和生成能力。
  • 易用的 API:  提供简单易用的 Python API,开发者可以通过几行代码快速实现复杂的语言处理任务。
  • 丰富的工具和组件:  包括数据处理工具、模型训练和微调工具、服务接口、应用开发工具等,覆盖了从数据准备到模型部署的全流程。
  • 社区支持: 拥有一个活跃的社区,提供了大量的示例和教程,帮助开发者快速上手和解决常见问题。
  1. langchain: 主要用于构建和管理基于语言模型的应用程序,提供从模型管理到应用开发的一站式解决方案。
  2. langchain_community: 是 langchain 的社区版,包含社区贡献的额外功能和插件,提供更多扩展性的工具。
  3. dashscope: 主要用于构建和管理数据科学和机器学习应用,提供丰富的数据可视化和模型部署工具。

博主的Python版本是:3.10.x,对应上面的依赖包版本如下:

 

这里有个坑,如果没有指定版本,LangChain的最新版本1.x不兼容Python 3.8以下版本。又或者是你安装的LangChain依赖是最新版本,API和类名可能和博主下面用法稍微不一样。所以博主写这篇文章的时候,Python版本是:3.10.x,LangChain版本是:0.2.6。

确认一下LangChain一下是否安装成功:


看看上面命令输出是否包含上一步引入和安装的依赖包字样即可。下面我们来认识一下LangChain的主要组件:

  • Prompts 提示: 包括提示管理、提示优化和提示序列化。
  • Models 模型: 各种类型的模型和模型集成,比如GPT-4。

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

  • Memory 记忆: 用来保存和模型交互时的上下文状态。
  • Indexes 索引: 用来结构化文档,以便和模型交互

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

  • Chains 链: 一系列对各种组件的调用。类似于Linux中的 管道命令,代表把前面一个程序的执行结果传入给后一个程序作为输入,以此类推!

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

  • Agents 代理:决定模型采取哪些行动,执行并且观察流程,直到完成为止。

  1. Bigmodel平台

Bigmodel是智谱AI面向国内开发者的maas平台,集语言模型、图像模型、视频模型、语音模型等主流多模态、大模型于一体。

这不是重点,重点是让你去这个平台申请并拿到一个API Key,如截图:

不用学前端!Streamlit+LangChain,1 小时搭建 GLM 聊天机器人

按照截图所示拿到一个API Key,先保存,后面会用到。

  1. LangChain调用GLM模型

接下来我们编写一个LangChain调用Bigmodel上面GLM大语言模型的例子。

需求: 定义函数,要求有三个参数:提示词,记忆体,api_key,最后调用大模型服务自动实现求1-100和功能

  1. 安装好依赖之后,引入必须要的包。
  2. 封装一个函数get_chat_response,负责调用和处理大模型的问答。
  3. main函数是程序入口,调用测试用例。
 

此时得到以下输出:

AI: 当然可以。1到100的累加和可以用高斯求和公式来计算,即等差数列的求和公式。公式是 ( S = frac{n(a_1 + a_n)}{2} ),其中 ( S ) 是和,( n ) 是项数,( a_1 ) 是首项,( a_n ) 是末项。

在这个例子中,( n = 100 ),( a_1 = 1 ),( a_n = 100 )。

所以,( S = frac{100(1 + 100)}{2} = frac{100 imes 101}{2} = 5050 )。

因此,1到100的累加和是5050。

得到上面输出则说明你的LangChain调用Bigmodel上面的GLM-4返回结果了。

经过上面的两步,你已经实现了一个聊天机器人的UI页面,以及通过LangChain框架成功调用igmodel上面的GLM-4模型,现在将上面两部分代码集成、改造即可。

将上诉LangChain调用GLM函数封装成工具类utils.py。

 

UI页面的改造和引入utils.py。

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/264592.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月12日 下午8:41
下一篇 2026年3月12日 下午8:41


相关推荐

关注全栈程序员社区公众号