简介
本文记录一次使用langchain调用openai并部署在huggingface上的经历
安装环境依赖
我的python版本是3.9
pip install langchain
pip install openai
代码
import streamlit as st
# from langchain_community.chat_models import ChatOpenAI
from langchain_openai import ChatOpenAI
from 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="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",
api_key="sk-Qg2sQRe2BTRDkjXCAaCa243017994a8aBf2e5bC26aE8Af99",
# 报错307 就换一个模型试试
# 也可以不指定, 用默认的
model_name="gpt-3.5-turbo", # OK
)
# 如果用的是中转key
import os
os.environ["OPENAI_API_BASE"] = 'https://oneapi.xty.app/v1'
user_input = get_text()
submit = st.button('Generate')
# 如果点了按钮
if submit:
# 处理用户的输入, 产生回答
response = load_answer(user_input)
st.subheader("Answer:")
# 回显到页面
st.write(response, key=1)
本地测试效果
部署到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, 可以进行使用