langchain + hugginface入门体验

简介

本文记录一次使用langchain调用openai并部署在huggingface上的经历

安装环境依赖

我的python版本是3.9

pip install langchain
pip install openai

代码 app.py

import streamlit as st
# from langchain_community.chat_models import ChatOpenAI
from langchain_openai import ChatOpenAIfrom langchain.schema import (AIMessage,HumanMessage,SystemMessage
)# From here down is all the StreamLit UI.
# 设置页面标题和图标
st.set_page_config(page_title="LangChain Demo", page_icon=":robot:")
# 设置头部区域的内容
st.header("Hey, I'm your Chat GPT")# 如果 st.session_state 还没有 sessionMessages 属性
if "sessionMessages" not in st.session_state:# 给llm一个设定st.session_state.sessionMessages = [SystemMessage(content="You are a helpful assistant.")]def load_answer(question):# sessionMessages 会话消息上下文# 添加上用户的输入st.session_state.sessionMessages.append(HumanMessage(content=question))# 模型处理消息 并 获取模型的输出assistant_answer = chat(st.session_state.sessionMessages)# 添加ai的消息到会话历史st.session_state.sessionMessages.append(AIMessage(content=assistant_answer.content))return assistant_answer.content# 输入框, 获取用户输入
def get_text():input_text = st.text_input("You: ", key=input)return input_text# 定义模型
chat = ChatOpenAI(temperature=0,# api_key="sk-直连key",api_key="sk-中转key",# 报错307 就换一个模型试试# 也可以不指定, 用默认的model_name="gpt-3.5-turbo",  # OK
)
# 如果用的是中转key, 设置代理
import os
os.environ["OPENAI_API_BASE"] = '你中转key的代理地址'user_input = get_text()
submit = st.button('Generate')# 如果点了按钮
if submit:# 处理用户的输入, 产生回答response = load_answer(user_input)st.subheader("Answer:")# 回显到页面st.write(response, key=1)

本地测试效果

streamlit run app.py --server.port 8888

在这里插入图片描述

部署到huggingface space

提示: 使用huggingface需要魔法

项目创建requirements.txt

huggingface sapce 会根据requirements.txt自动安装依赖

langchain
langchain-openai
huggingface_hub

创建space

点击huggingface右上角的菜单栏里的space

在这里插入图片描述
在这里插入图片描述

点击create new space按钮, 输入space name, 选择streamlit作为我们展示页面用的包

在这里插入图片描述

选择免费的cpu资源, 设置公开或私有部署

在这里插入图片描述

点击create按钮

上传文件

点击菜单栏里的file

在这里插入图片描述

右侧点击add file -> upload file

在这里插入图片描述

拖动文件到虚线框

在这里插入图片描述

点击commit

在这里插入图片描述

可以看到左上角 space 那行有building的图标, 表示正在构建

在这里插入图片描述

进入App, 可以看到在构建

在这里插入图片描述

如果构建没有错误, 就点击App, 可以进行使用

在这里插入图片描述

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

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

相关文章

w23靶场安装

一、实验环境 服务器:phpstudyv8.1.13 靶场:Bees、sdcms、cpms、khbc二、实验目的 提供一个靶场环境 三、实验步骤 bees靶场安装 1.启动小皮的apache和mysql 2.在小皮V8.1.1.3版本上创建bees网站,选择的php版本最好在5.x,不…

聚道云软件连接器:打通金蝶云星空与招商银行CBS,提升企业财务和银行业务效率

【客户介绍】 某企业是一家从事电子商务的企业,随着业务的不断扩大,对于财务管理和银行业务的需求也越来越高。该企业希望能够实现财务和银行业务的自动化处理,提高工作效率。由于业务的不断发展,企业面临着越来越多的资金管理挑…

C++提高编程——STL:函数对象

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…

强化学习14——DDPG算法

在线策略算法的样本效率比较低,而在DNQ算法中,做到了离线策略学习,但是只能处理动作空间有限的环境。如果动作空间无限,可将动作空间离散化,但比较粗糙,无法惊喜控制。深度确定性策略梯度DDPG(d…

网站SSL证书怎么获取?

获取SSL证书的途径通常包括以下几种: 1. 通过受信任的证书颁发机构(CA)购买: - 你可以直接从知名的证书颁发机构如JoySSL、GeoTrust、DigiCert等处购买。 - 这些机构提供不同类型的SSL证书,包括域名验证(DV)、组…

「JavaSE」抽象类接口3

🎇个人主页:Ice_Sugar_7 🎇所属专栏:快来卷Java啦 🎇欢迎点赞收藏加关注哦! 抽象类&接口3 🍉Clonable 接口和深拷贝🍌浅拷贝和深拷贝 🍉Object类🍉抽象类…

Leetcode131.分割回文串-Palindrome Patitioning-Python-回溯法

解题思路: 1.切割回文串,可以用解决找组合问题的思路解决,而解决组合问题,可以用回溯法,故本题选择回溯法。 2.理解两个事情:1.递归函数里的for循环是横向遍历给定字符串s的每一个字母。2.针对s的每一个字…

HCIP-BGP实验

实验拓扑 实验需求 1.r1上有两个换汇分别为192.168.1.0/24和192.168.2.0/24只允许学到汇总和1.0 2.r7上有两个还回172.16.1.0/24和172.16.2.0/24要求全部宣告,但是只有2.0可以通过 3.全网可达 实验思路 配置IP地址 BGP配置 实验步骤 配置IP地址 BGP配置 在…

RabbitMQ死信交换机

目录 1.死信交换机介绍 2.TTL 3.延迟队列 4.消息堆积问题 5.惰性队列 6.代码实战 1.死信交换机介绍 当一个队列中信息满足下列情况之一时,可以成为死信(dead letter) (1)消费者使用basic.reject(Reject…

React16源码: React中commit阶段的commitRoot的主流程源码实现

commitRoot 1 )概述 在react中有 render 阶段 和 commit 阶段,这是两个不同的阶段1 )之前的渲染更新都是render阶段在render阶段,会经历一系列的调度,一系列的节点的更新过程需要去重新计算它的 state, props 生成新的…

SimpleDateFormat学习使用

提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里, 为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用S…

【mongoDB】集合的创建和删除

目录 1.集合的创建 2. 查看所有集合 3.删除集合 1.集合的创建 格式: db.createCollection ( name ) 例如创建一个名为 bbb 的集合 还可以通过传递一个选项对象来指定集合的属性,例如最大文档的大小,索引选项等 例如 这样创建了一个名为 cc…

Linux CentOS使用Docker搭建laravel项目环境(实践案例详细说明)

一、安装docker # 1、更新系统软件包: sudo yum update# 2、安装Docker依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 3、添加Docker的yum源: sudo yum-config-manager --add-repo https://download.docker.com/linux/cen…

如何在IntelliJ IDEA数据库控制台操作Redis

如何在IntelliJ IDEA数据库控制台操作Redis TIPS 本文理论支持IntelliJ IDEA家族所有IDE(例如Data Grip等)、所有版本理论支持所有基于JDBC的各种GUI工具! 最近工作中,经常要操作到Redis,尽管市面上的Redis客户端GUI非…

kotlin 项目中文件显示带.kt 结尾与不带.kt结尾

kotlin 项目中文件显示带.kt 结尾与不带.kt结尾,而且显示的图片也不一样, 首先说下,这个只是开发工具上的一个设计细节展示,无论显示效果是否带.kt 实际的文件都是带.kt结尾的,这个可以到文件的目录下查看文件 创建文…

算法基础之树状数组

文章目录 树状数组 树状数组 树状数组能解决的最关键的问题就是能够 O ( log ⁡ n ) O(\log n) O(logn)内,给某个位置上的数,加上一个数,或者求前缀和 他和前缀和数组的区别就是,树状数组支持修改原数组的内容,而前缀…

代码随想录算法训练营第30天(回溯算法06 | ● 332.重新安排行程 ● 51. N皇后 ● 37. 解数独 ● 总结

回溯算法06 332.重新安排行程(可跳过)解题思路难点 51.N皇后(可跳过)解题思路回溯三部曲难点 5. 解数独(可跳过)解题思路回溯三部曲 总结篇(没来及看 332.重新安排行程(可跳过&#…

C语言第九弹---二维数组

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 二维数组 1、二维数组的创建 1.1、二维数组的概念 ​1.2、⼆维数组的创建 2、二维数组的初始化 2.1、不完全初始化 ​2.2、完全初始化 ​2.3、按照行初始化 ​2.4、…

如何使用Docker安装Spug并实现远程访问本地运维管理界面

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

Vue开发之proxy代理的配置(附带uniapp代理配置)

vue 1.在vue.config.js中添加 devServer 属性中配置 proxy 属性 module.exports {productionSourceMap: false,publicPath: /,devServer: {port: 8085,proxy: {/api/admin: {target: http://10.58.104.70:6111,changeOrigin: true,pathRewrite: {/api/: /}},/api: {target: …