Download model.py from bacancydataprophets/Appointment-booking-bot: direct link, hf CLI and curl.
- Browser
- Download file 2.18 kB
-
https://huggingface.co/spaces/bacancydataprophets/Appointment-booking-bot/resolve/main/model.py
- Command line
-
hf download hf://spaces/bacancydataprophets/Appointment-booking-bot/model.py
-
curl -L -o model.py https://huggingface.co/spaces/bacancydataprophets/Appointment-booking-bot/resolve/main/model.py
2.18 kB
| import os | |
| import logging | |
| from config import MODEL_NAME | |
| from dotenv import load_dotenv | |
| from langchain_groq import ChatGroq | |
| from langchain.agents import AgentExecutor | |
| from langchain.memory import ConversationBufferWindowMemory | |
| from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder | |
| from langchain.agents import create_tool_calling_agent | |
| from langchain_core.utils.function_calling import convert_to_openai_function | |
| from utils import book_slot, check_slots, reschedule_event, delete_event | |
| load_dotenv() | |
| logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') | |
| API_KEY = os.environ["API_KEY"] | |
| def create_agent(PROMPT): | |
| # First create the memory object | |
| memory = ConversationBufferWindowMemory( | |
| memory_key="chat_history", | |
| return_messages=True, | |
| k=5 | |
| ) | |
| # Create the prompt template | |
| prompt_template = ChatPromptTemplate.from_messages([ | |
| ("system", PROMPT), | |
| MessagesPlaceholder(variable_name="chat_history"), | |
| ("human", "{input}"), | |
| MessagesPlaceholder(variable_name="agent_scratchpad"), | |
| ]) | |
| # Define tools and convert to functions | |
| tools = [book_slot, delete_event, check_slots, reschedule_event] | |
| functions = [convert_to_openai_function(f) for f in tools] | |
| # Create the LLM instance separately | |
| llm = ChatGroq( | |
| model=MODEL_NAME, | |
| temperature=0.7, | |
| max_tokens=None, | |
| timeout=60, | |
| max_retries=2, | |
| api_key=API_KEY | |
| ).bind_functions(functions=functions) | |
| # Create the agent | |
| agent = create_tool_calling_agent(llm, tools, prompt_template) | |
| # Create the agent executor with memory | |
| agent_executor = AgentExecutor( | |
| agent=agent, | |
| tools=tools, | |
| memory=memory, | |
| verbose=True | |
| ) | |
| return agent_executor | |
| # Example usage | |
| def process_query(query: str): | |
| try: | |
| agent = create_agent("Your system prompt here") | |
| response = agent.invoke( | |
| { | |
| "input": query, | |
| } | |
| ) | |
| return response | |
| except Exception as e: | |
| logging.error(f"Error during query processing: {str(e)}") | |
| raise |