Spaces:
Sleeping
Sleeping
File size: 6,431 Bytes
aec35e1 9206a9e aec35e1 bdb22b7 aec35e1 8d87756 aec35e1 09f1f96 9206a9e aec35e1 09f1f96 6d24aae aec35e1 6d24aae aec35e1 6d24aae aec35e1 8621a4a aec35e1 11effaf aec35e1 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae a458c56 6d24aae 5b7cf25 aec35e1 09f1f96 aec35e1 09f1f96 aec35e1 09f1f96 16eba78 8d87756 16eba78 8d87756 de738f1 8621a4a de738f1 4463588 16eba78 8d87756 9206a9e 8d87756 16eba78 8d87756 aec35e1 8d87756 aec35e1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
import os
import openai
import streamlit as st
from langchain.agents import AgentType, initialize_agent, load_tools
from langchain.llms import OpenAI as l_OpenAI
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForCausalLM
from helpers.foundation_models import *
import requests
# API Keys
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
SERPAPI_API_KEY = os.environ["SERPAPI_API_KEY"]
openai_client = openai.OpenAI(api_key=OPENAI_API_KEY)
# Initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# Sidebar
st.sidebar.markdown(
r"""
# π Streamlit + Hugging Face Demo π€
## Introduction π
This demo showcases how to interact with Large Language Models (LLMs) on Hugging Face using Streamlit.
"""
)
option = st.sidebar.selectbox(
"Which task do you want to do?",
("Sentiment Analysis", "Medical Summarization", "Llama2 on YSA", "Llama2 on BRK Letters", "ChatGPT", "ChatGPT (with Google)"),
)
clear_button = st.sidebar.button("Clear Conversation", key="clear")
st.sidebar.write("---")
st.sidebar.markdown("Yiqiao Yin: [Site](https://www.y-yin.io/) | [LinkedIn](https://www.linkedin.com/in/yiqiaoyin/)")
st.sidebar.markdown(
r"""
To fine-tune LLM such as Llama2 on custom data, please use the following tutorials as resources. For the options above such as `Llama2 on YSA` and `Llama2 on BRK Letters`, they are developed based on the content of the following videos.
## Video Series Overview
### Video 1: Process Your Own PDF Doc into LLM Finetune-Ready Format
Learn how to transform PDF documents into AI model fine-tuning ready formats. This video will take you through the steps to make your PDF data AI-ready.
- [Watch Video](https://youtu.be/hr2kSC1evQM)
- [Tutorial Notebook](https://github.com/yiqiao-yin/WYNAssociates/blob/main/docs/ref-deeplearning/ex24f%20-%20process%20custom%20data%20from%20pdf%20and%20push%20to%20huggingface%20to%20prep%20for%20fine%20tune%20task%20of%20llama%202%20using%20lora.ipynb)
### Video 2: Fine-tune Llama2-7b LLM Using Custom Data
Dive into customizing the Llama-2 model with your unique dataset. This installment turns your data into a bespoke AI model.
- [Watch Video](https://youtu.be/tDkY2gpvylE)
- [Guide to Fine-Tuning](https://github.com/yiqiao-yin/WYNAssociates/blob/main/docs/ref-deeplearning/ex24f%20-%20fine%20tune%20Llama%202%20using%20ysa%20data%20in%20colab.ipynb)
### Video 3: Deploy Inference Endpoint on HuggingFace!
Discover how to make your AI model accessible to the world by deploying it on HuggingFace. This video turns your project into a global phenomenon.
- [Watch Video](https://youtu.be/382yy-mCeCA)
- [Deployment Guide](https://github.com/yiqiao-yin/WYNAssociates/blob/main/docs/ref-deeplearning/ex24f%20-%20inference%20endpoint%20interaction%20from%20huggingface.ipynb)
- [HuggingFace Space](https://huggingface.co/spaces/eagle0504/streamlit-demo)
"""
)
# Reset everything
if clear_button:
st.session_state.messages = []
# React to user input
if prompt := st.chat_input("What is up?"):
# Display user message in chat message container
st.chat_message("user").markdown(prompt)
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
# Execute options
with st.spinner("Wait for it..."):
if option == "Sentiment Analysis":
pipe_sentiment_analysis = pipeline("sentiment-analysis")
if prompt:
out = pipe_sentiment_analysis(prompt)
final_response = f"""
Prompt: {prompt}
Sentiment: {out[0]["label"]}
Score: {out[0]["score"]}
"""
elif option == "Medical Summarization":
pipe_summarization = pipeline(
"summarization", model="Falconsai/medical_summarization"
)
if prompt:
out = pipe_summarization(prompt)
final_response = out[0]["summary_text"]
elif option == "Llama2 on YSA":
if prompt:
try:
out = llama2_7b_ysa(prompt)
engineered_prompt = f"""
The user asked the question: {prompt}
We have found relevant content: {out}
Answer the user question based on the above content in paragraphs.
"""
final_response = call_chatgpt(query=engineered_prompt)
except:
final_response = "Sorry, the inference endpoint is temporarily down. π"
elif option == "Llama2 on BRK Letters":
if prompt:
try:
out = llama2_7b_brk_letters(prompt)
engineered_prompt = f"""
The user asked the question: {prompt}
We have found relevant content: {out}
Answer the user question based on the above content in paragraphs.
"""
final_response = call_chatgpt(query=engineered_prompt)
except:
final_response = "Sorry, the inference endpoint is temporarily down. π"
elif option == "ChatGPT":
if prompt:
out = call_chatgpt(query=prompt)
final_response = out
elif option == "ChatGPT (with Google)":
if prompt:
ans_langchain = call_langchain(prompt)
prompt = f"""
Based on the internet search results: {ans_langchain};
Answer the user question: {prompt}
"""
out = call_chatgpt(query=prompt)
final_response = out
else:
final_response = ""
response = f"{final_response}"
# Display assistant response in chat message container
with st.chat_message("assistant"):
st.markdown(response)
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": response})
|