langchain + hugginface入门体验

简介

本文记录一次使用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, 可以进行使用


  目录