from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline from langchain import HuggingFaceHub from langchain.llms.base import LLM from langchain.memory import ConversationBufferMemory,ConversationBufferWindowMemory from langchain.chains import LLMChain, ConversationChain from langchain_community.llms.huggingface_pipeline import HuggingFacePipeline from langchain_community.llms import HuggingFaceEndpoint from langchain.prompts import PromptTemplate, ChatPromptTemplate from langchain_core.prompts.chat import SystemMessagePromptTemplate, HumanMessagePromptTemplate import streamlit as st your_endpoint_url = "https://kp4xdy196cw81uf3.us-east-1.aws.endpoints.huggingface.cloud" token = st.secrets["HUGGINGFACEHUB_API_TOKEN"] llm = HuggingFaceEndpoint( endpoint_url=f"{your_endpoint_url}", huggingfacehub_api_token = f"{token}", task = "text-generation", max_new_tokens=128, top_k=10, top_p=0.95, typical_p=0.95, temperature=0.01, repetition_penalty=1.03 ) #print(llm) def chat_template_prompt(): template = """ Do not repeat questions and do not generate answer for user/human. You are a helpful hotel booking asssitant. Below is an instruction that describes a task. Write a response that appropriately completes the request. Reply with the most helpful and logic answer. During the conversation you need to ask the user the following questions to complete the hotel booking task. 1) Where would you like to stay and when? 2) How many people are staying in the room? 3) Do you prefer any ammenities like breakfast included or gym? 4) What is your name, your email address and phone number? When the booking task is completed, respond with "Thank you for choosing us.". {history} """ system_prompt = SystemMessagePromptTemplate.from_template(template) human_prompt = HumanMessagePromptTemplate.from_template("{input}") chat_prompt = ChatPromptTemplate.from_messages([system_prompt, human_prompt]) return chat_prompt def chain(): #memory = ConversationBufferMemory(memory_key="history") chat_prompt = chat_template_prompt() memory = ConversationBufferWindowMemory(k=3) #memory_key="history" llm_chain = LLMChain(llm=llm, memory = memory, prompt = chat_prompt) memory.load_memory_variables({}) #Initialize memory return llm_chain