使用 Streamlit 创建一个基础的 Groq Chatbot APP

142 阅读1分钟

前言

Groqcloud 目前免费提供 API 给用户使用,可以使用 Streamlit 快速搭建一个基础的 Chatbot 应用,然后部署在 Streamlit cloud 当中。

Groq 提供了四个模型:

  • Llama 3 8b
  • Llama 3 70b
  • Mixtral 8×7b
  • Gemma 7b

代码

安装 Streamlit / Groq 库

pip install streamlit
pip install groq

编写 streamlit_app.py

import streamlit as st
from groq import Groq
import os

st.title('Chat with Groq')

if 'messages' not in st.session_state:
    st.session_state.messages = []

for messages in st.session_state.messages:
    with chat_message(messages['role']):
        st.markdown(messages['content'], unsafe_allow_html=True)

model_max_tokens = {
    'llama3-70b-8192': 8192,
    'llama3-8b-8192': 8192,
    'mixtral-8x7b-32768': 32768,
    'gemma-7b-it': 8192
}

with st.sidebar:
    model: str = st.selectbox('Choose a LLM to chat', ('llama3-70b-8192', 'llama3-8b-8192', 'mixtral-8x7b-32768', 'gemma-7b-it'))
    system_prompt: str = st.text_area('System Prompt', value='You are a helpful assistant.')
    max_tokens: int = st.slider('Max Tokens', 1, model_max_tokens[model], model_max_tokens[model], step=1)
    temperature: float = st.slider('Temperature', 0.00, 2.00, 0.75, step=0.01)
    top_p: float = st.slider('Top P', 0.00, 1.00, 1.00, step=0.01)

    if st.button('New Button'):
        st.session_state.messages = []
        st.experimental_rerun()

client = Groq(api_key=os.environ.get('GROQ_API_KEY'))

user_input = st.chat_input('Say something...')

if user_input:
    st.session_state.messages.append({'role': 'user', 'content': user_input})

    with st.chat_message('user'):
        st.markdown('user_input', unsafe_allow_html=True)

    messages = [{'role': 'system', 'content': system_prompt}] + st.session_state.messages

    chat_completion = client.chat.completions.create(
        model=model,
        messages=messages,
        max_tokens=max_tokens,
        temperature=temperature,
        top_p=top_p,
        stop=None,
        stream=False
    )
    response = chat_completion.choices[0].message.content

    st.session_state.messages.append({'role': 'assistant', 'content': response})

    with chat_message('assistant'):
        st.markdown('response', unsafe_allow_html=True)

部署

网址链接:

console.groq.com (Groqcloud) streamlit.io/cloud (Streamlit cloud)

  1. 先在 Github 中创建一个仓库,将 streamlit_app.py 和 requirements.txt (里面写上需要的第三方库,这里只需要写 groq) 进行上传
  2. 登录 Streamlit cloud,链接到自己的 Github,点击“New app”,根据要求进行配置
  3. 在“Advance settings” 中,选择对应的 Python 版本,然后在“Secrets”一栏中,配置 API Key (默认写为 GROQ_API_KEY = "<你实际的 api_key>")
  4. 最后等待系统完成部署