【Python技术】使用langchain、fastapi、gradio生成一个简单的智谱AI问答界面

news2024/12/23 19:01:58

前几天,智谱AI BigModel开放平台宣布:GLM-4-Flash 大模型API完全免费了,同时开启了GLM-4-Flash 限时免费微调活动。对想薅免费大模型羊毛的个人玩家,这绝对是个好消息,我们不仅可以免费使用BigModel开放平台上的GLM-4-Flash,也可以免费调用GLM-4-Flash的API了。

智谱AI 这次格局大了,不得不支持下。 开放平台地址:https://bigmodel.cn/。

在这里插入图片描述

之前写过一篇python大模型应用框架langchain的demo,当时使用的阿里云。【Python技术】AI编程新手快速入门学习LangChain大模型框架 , 今天用免费的CLM-4-FLASH写个简单例子测试下。

代码如下,替换掉apikey就可以运行

import gradio as gr
from fastapi import FastAPI
from langchain_openai import ChatOpenAI
from langchain.prompts import (
    ChatPromptTemplate,
    MessagesPlaceholder,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory

# Initialize FastAPI
app = FastAPI()

# Initialize LangChain components
llm = ChatOpenAI(
    temperature=0.95,
    model="glm-4-flash",
    openai_api_key="your-api-key-here",
    openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)

prompt = ChatPromptTemplate(
    messages=[
        SystemMessagePromptTemplate.from_template(
            "You are a nice chatbot having a conversation with a human."
        ),
        MessagesPlaceholder(variable_name="chat_history"),
        HumanMessagePromptTemplate.from_template("{question}")
    ]
)

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
conversation = LLMChain(
    llm=llm,
    prompt=prompt,
    verbose=True,
    memory=memory
)

# Define chat function
def chat(message, history):
    response = conversation.invoke({"question": message})
    return response['text']

# Create Gradio interface
iface = gr.ChatInterface(chat)

# Mount Gradio app to FastAPI
app = gr.mount_gradio_app(app, iface, path="/")

# Run the app
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

运行效果

在这里插入图片描述

这个代码写的比较简单,容易好懂,用了langchain、fastapi、 gradio、uvicorn等技术。

AI解释一下这段代码,方便没用过大模型应用的同学阅读。

1、初始化FastAPI应用:用于构建API服务。

2、配置LangChain组件:

3、初始化ChatOpenAI模型(glm-4-flash)。

4、定义对话提示模板。

5、设置对话历史记录存储。

6、定义聊天函数:接收消息和历史记录,返回模型生成的回复。

7、创建Gradio界面:提供用户交互界面。

8、将Gradio集成到FastAPI:使Web应用可通过HTTP访问。

9、添加获取事实的API接口:根据主题返回相关事实信息。

10、运行应用:启动服务器监听8000端口。

原文链接:【Python技术】使用langchain、fastapi、gradio生成一个简单的AI问答界面

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产品入门篇笔记

产品和产品经理 产品:解决某个问题的物品,无形、有形都可以。 产品经理:简单而言就是想清楚怎么做的人,需要想清楚产品怎么设计,要分析什么用户、在什么场景、怎么样的需求;然后考虑产品的功能、优势、价值…

LeetCode_sql_day20(1398.购买了产品A和产品B却没有购买产品C的顾客)

描述: Customers 表: ------------------------------ | Column Name | Type | ------------------------------ | customer_id | int | | customer_name | varchar | ------------------------------ customer_id 是这张表中具有唯一…

李沐讲座:大语言模型的实践经验和未来预测 | 上海交大

本文简介 本博客记录了李沐关于语言模型与职业生涯分享的精彩讲座,涵盖了大语言模型的核心要素、工程实践中的挑战,以及演讲者个人职业生涯中的心得体会。 李沐简介 李沐(Mu Li)是一位在人工智能与深度学习领域具有广泛影响力的…

电感的分类

电感作为电子电路中的重要元件,具有多种分类方式,每种类型的电感都有其独特的优缺点。以下是对电感分类及其优缺点的详细分析: 一、按工作频率分类 高频电感:适用于高频电路,具有较高的自谐振频率和较低的损耗。 优点…

【学习笔记】 陈强-机器学习-Python-Ch13 提升法

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-…

【python计算机视觉编程——图像聚类】

python计算机视觉编程——图像聚类 6.图像聚类6.1 K-means聚类6.1.2 图像聚类6.1.3 在主成分上可视化图像6.1.4 像素聚类 6.2 层次聚类6.3 谱聚类 6.图像聚类 6.1 K-means聚类 from scipy.cluster.vq import * import numpy as np from pylab import * matplotlib.rcParams[f…

第二篇——勾股定理:为什么在西方教毕达哥拉斯定理?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学大厦的建立以及与自然科学的逻辑关系,以及他们的边界在这…

sql-libs第三关详细解答

首先看看and 12会不会正常显示 结果正常显示,说明存在引号闭合 加了一个引号,发现报错信息中还存在括号,说明sql语句中有括号,那我们还要闭合括号 现在就好了,and 11正常,and 12不正常,那就开始…

常用高性能架构模式

《从0开始学架构》里讲述了常用的高性能架构模式,这里面很多大家可能也都用过了,我应该也写过相关的技术文章。正好按照书里的思路重新梳理一次。 一、读写分离 读写分离的基本原理是将数据库读写操作分散到不同的节点上 感想: 读写分离应…

Go入门:gin框架极速搭建图书管理系统

Go入门:gin框架极速搭建图书管理系统 前言 本项目适合 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 项目源码请私信,欢迎前往博主博客torna.top免费查看。 项目结构 D:. ├─ go.mod ├─ go.sum │ ├─ cmd │ └─ main │ …

Jenkins配置使用LDAP的用户和密码登录

# 检查配置文件是否正确 [rootlocalhost schema]# slaptest -u 62c6aafe ldif_read_file: checksum error on "/etc/openldap/slapd.d/cnconfig/olcDatabase{1}monitor.ldif" 62c6aafe ldif_read_file: checksum error on "/etc/openldap/slapd.d/cnconfig/olcD…

Java注解和JDK新特性

1. 注解 1.1. 认识注解 Annotation:JDK1.5新提供的技术 编译检查:比如SuppressWarnings, Deprecated和Override都具有编译检查的作用替代配置文件:使用反射来读取注解的信息 注解就是代码里的特殊标记,用于替代配置文件&#…

四大集合之Set

一、Set基础知识 1. Set集合 1.1 HashSet Set集合区别于其他三大集合的重要特性就是元素具有唯一性,南友们记不住这个特性的话,有个易记的方法。Set集合为什么要叫Set呢?因为Set集合的命名取自于我们小学数学里的集合论(Set Th…

SPI(硬件协议)

1 SPI硬件外设协议 2 SPI框图 3 硬件SPI数据收发流程 1 发送数据,同时接收数据,相互配合,可以实现数据流不间断 2 全双工SPI,发送和接收数据寄存器分开,可以同时进行 4 spi传输框图 1 速度快 2 速度慢,容…

软考中项拿证利器:系统集成项目管理工程师(第3版)一站通关

指尖疯编著的《系统集成项目管理工程师(适用第3版大纲)一站通关》目前现货已经上线各大电商平台,您可以在任一电商搜索《系统集成项目管理工程师(适用第3版大纲)一站通关》即刻找到。 出版中项一站通关完全是机缘巧合&…

Nginx: 性能优化之提升CPU效率以及TCP的三次握手和四次挥手

提升利用CPU的效率 1 )CPU的调度机制 现在来看下 linux中 CPU的一个调度机制 假设现在系统上有只有一颗CPU,而linux系统是一个多任务的一个操作系统 它允许我们各个不同的用户允许在同一个操作系统上执行很多个进程 单核CPU肯定不可能同时去执行这样一…

5.图论.题目2

5.图论.题目2 题目8.字符串接龙9.有向图的完全可达性10.岛屿的周长11.寻找存在的路径12.冗余连接113.冗余连接214.寻宝 题目 8.字符串接龙 题目链接 本题的直观思路如下图所示;但该题有两个问题:1.图中的线是如何连接起来的 2.如何确定起点到终点的最…

《JavaEE进阶》----4.<SpringMVC①简介、基本操作(各种postman请求)>

本篇博客讲解 MVC思想、及Spring MVC(是对MVC思想的一种实现)。 Spring MVC的基本操作、学习了六个注解 RestController注解 RequestMappering注解 RequestParam注解 RequestBody注解 PathVariable注解 RequestPart注解 MVC View(视图) 指在应⽤程序中…

数据同步的艺术:探索PostgreSQL和Redis的一致性策略

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 1. 前言 在当今高度数字化的世界中,应用程…

ACL学习笔记

1.ACL快速配置 需求:拒绝PC 1访问PC 3 (1)配置PC PC 1: PC 2: PC 3: (2)配置R1的接口IP信息 sys sysname R1 undo info-center enable interface GigabitEthernet0/0/0 ip address 192.168.1.1 255.255.255.0 qui…