Waseem771 commited on
Commit
b895edb
·
verified ·
1 Parent(s): c44a143

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -88
app.py CHANGED
@@ -1,93 +1,40 @@
1
- # app.py
2
-
3
  import streamlit as st
4
- from transformers import AutoModelForCausalLM, AutoTokenizer
5
- import torch
 
6
  import os
7
- from dotenv import load_dotenv
8
-
9
- # Load environment variables
10
- load_dotenv()
11
-
12
- # Retrieve Hugging Face API token from environment variables
13
- HF_API_TOKEN = os.getenv("HF_API_TOKEN")
14
-
15
- # Streamlit app setup
16
- st.title('Llama2 Chatbot Deployment on Hugging Face Spaces')
17
- st.write("This chatbot is powered by the Llama2 model. Ask me anything!")
18
 
19
- @st.cache_resource
20
- def load_model():
21
- """
22
- Load the tokenizer and model from Hugging Face.
23
- This function is cached to prevent re-loading on every interaction.
24
- """
25
- tokenizer = AutoTokenizer.from_pretrained(
26
- "meta-llama/Llama-2-7b-chat-hf",
27
- use_auth_token=HF_API_TOKEN # Use the secret token
28
- )
29
- model = AutoModelForCausalLM.from_pretrained(
30
- "meta-llama/Llama-2-7b-chat-hf",
31
- torch_dtype=torch.float16, # Use float16 for reduced memory usage
32
- device_map="auto",
33
- use_auth_token=HF_API_TOKEN # Use the secret token
34
- )
35
- return tokenizer, model
36
-
37
- # Load the model and tokenizer
38
- tokenizer, model = load_model()
39
-
40
- # Initialize session state for conversation history
41
- if "conversation" not in st.session_state:
42
- st.session_state.conversation = []
43
 
44
  # User input
45
- user_input = st.text_input("You:", "")
46
-
47
- if user_input:
48
- st.session_state.conversation.append({"role": "user", "content": user_input})
49
- with st.spinner("Generating response..."):
50
- try:
51
- # Prepare the conversation history for the model
52
- conversation_text = ""
53
- for message in st.session_state.conversation:
54
- if message["role"] == "user":
55
- conversation_text += f"User: {message['content']}\n"
56
- elif message["role"] == "assistant":
57
- conversation_text += f"Assistant: {message['content']}\n"
58
-
59
- # Encode the input
60
- inputs = tokenizer.encode(conversation_text + "Assistant:", return_tensors="pt").to(model.device)
61
-
62
- # Generate a response
63
- output = model.generate(
64
- inputs,
65
- max_length=1000,
66
- temperature=0.7,
67
- top_p=0.9,
68
- do_sample=True,
69
- eos_token_id=tokenizer.eos_token_id,
70
- pad_token_id=tokenizer.eos_token_id # To avoid warnings
71
- )
72
-
73
- # Decode the response
74
- response = tokenizer.decode(output[0], skip_special_tokens=True)
75
-
76
- # Extract the assistant's reply
77
- assistant_reply = response[len(conversation_text + "Assistant: "):].strip()
78
-
79
- # Append the assistant's reply to the conversation history
80
- st.session_state.conversation.append({"role": "assistant", "content": assistant_reply})
81
-
82
- # Display the updated conversation
83
- conversation_display = ""
84
- for message in st.session_state.conversation:
85
- if message["role"] == "user":
86
- conversation_display += f"**You:** {message['content']}\n\n"
87
- elif message["role"] == "assistant":
88
- conversation_display += f"**Bot:** {message['content']}\n\n"
89
-
90
- st.markdown(conversation_display)
91
-
92
- except Exception as e:
93
- st.error(f"An error occurred: {e}")
 
 
 
1
  import streamlit as st
2
+ from langchain import LLMChain
3
+ from langchain.chat_models import HuggingFaceHub
4
+ from langchain.prompts import ChatPromptTemplate
5
  import os
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ # Initialize HuggingFaceHub LLM with access token from environment variables
8
+ llm = HuggingFaceHub(
9
+ repo_id="meta-llama/Llama-2-7b-chat-hf",
10
+ huggingfacehub_api_token=os.getenv("HUGGINGFACE_API_KEY"),
11
+ model_kwargs={
12
+ "temperature": 0.7,
13
+ "max_new_tokens": 512,
14
+ }
15
+ )
16
+
17
+ # Define the prompt template
18
+ prompt = ChatPromptTemplate.from_messages(
19
+ [
20
+ ("system", "You are a helpful assistant."),
21
+ ("user", "Question: {question}")
22
+ ]
23
+ )
24
+
25
+ # Create the LLM Chain
26
+ chain = LLMChain(llm=llm, prompt=prompt, output_key="response")
27
+
28
+ # Streamlit App Interface
29
+ st.title('LangChain Demo with LLaMA 2 on Hugging Face')
 
30
 
31
  # User input
32
+ input_text = st.text_input("Enter your question:")
33
+
34
+ # Display the response
35
+ if input_text:
36
+ try:
37
+ response = chain.run({"question": input_text})
38
+ st.write(response)
39
+ except Exception as e:
40
+ st.error(f"Error: {e}")