File size: 3,383 Bytes
f89f559
0158b76
2f1b986
 
 
 
0158b76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f89f559
0158b76
 
f89f559
 
 
 
 
 
 
 
 
 
 
 
 
 
2f1b986
f89f559
0158b76
 
f89f559
 
 
 
 
0158b76
f89f559
 
 
 
 
 
 
 
0158b76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7b1e37e
0158b76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f89f559
 
 
0158b76
 
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
from openai import OpenAI
import streamlit as st
import os
import sys
from dotenv import load_dotenv, dotenv_values
load_dotenv()

# import torch
# from transformers import AutoModelForCausalLM, AutoTokenizer, StoppingCriteria, StoppingCriteriaList, TextIteratorStreamer
# from threading import Thread

# from transformers import AutoTokenizer, AutoModelForCausalLM
# from sentence_transformers import SentenceTransformer
# from langchain_community.document_loaders import TextLoader
# from langchain_community.embeddings.sentence_transformer import (
#     SentenceTransformerEmbeddings,
# )
# from langchain_community.vectorstores import Chroma
# from langchain_text_splitters import CharacterTextSplitter

# from transformers import pipeline

# tokenizer = AutoTokenizer.from_pretrained("google/gemma-2b-it")
# model = AutoModelForCausalLM.from_pretrained("google/gemma-2b-it")
# pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_length=512)
# hf_model = HuggingFacePipeline(pipeline=pipe


# from langchain_community.llms import HuggingFaceHub


# llm = HuggingFaceHub(
#     repo_id="google/gemma-2b-it",
#     task="text-generation",
#     model_kwargs={
#         "max_new_tokens": 512,
#         "top_k": 30,
#         "temperature": 0.1,
#         "repetition_penalty": 1.03
#     },
# )

# initialize the client
client = OpenAI(
  base_url="https://api-inference.huggingface.co/v1",
  api_key=os.environ.get('HUGGINGFACEHUB_API_TOKEN')#"hf_xxx" # Replace with your token
) 


# from langchain.schema import (
#     HumanMessage,
#     SystemMessage,
# )
# from langchain_community.chat_models.huggingface import ChatHuggingFace

# messages = [
#     SystemMessage(content="You're a helpful assistant"),
#     HumanMessage(
#         content=""
#     ),
# ]

#chat_model = ChatHuggingFace(llm=llm)


# from dotenv import load_dotenv
# import os

# load_dotenv()

# openai_api_key = os.getenv("OPENAI_API_KEY")

# with st.sidebar:
#     openai_api_key = st.text_input("OpenAI API Key", key="chatbot_api_key", type="password")
#     "[Get an OpenAI API key](https://platform.openai.com/account/api-keys)"
#     "[View the source code](https://github.com/streamlit/llm-examples/blob/main/Chatbot.py)"
#     "[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/streamlit/llm-examples?quickstart=1)"

st.title("💬 Chatbot")
st.caption("🚀 A streamlit chatbot powered by Google Gemma")
if 'messages' not in st.session_state:
    st.session_state['messages'] = [] #[{"role": "assistant", "content": "How can I help you?"}]

for msg in st.session_state.messages:
    st.chat_message(msg["role"]).write(msg["content"])

# from google.colab import userdata
# openai_api_key = userdata.get('OPENAI_API_KEY')


if prompt := st.chat_input():
    # if not openai_api_key:
    #     st.info("Please add your OpenAI API key to continue.")
    #     st.stop()

    #client = OpenAI(api_key=openai_api_key)
    #client = OpenAI()
    st.session_state.messages.append({"role": "user", "content": prompt})
    st.chat_message("user").write(prompt)
    response = client.chat.completions.create(model="google/gemma-2b-it", messages=st.session_state.messages)

    msg = response.choices[0].message.content
    st.session_state.messages.append({"role": "assistant", "content": msg})
    st.chat_message("assistant").write(msg)