|
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.prompts import ChatPromptTemplate, MessagesPlaceholder |
|
from langchain.agents import AgentExecutor |
|
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): |
|
prompt_template = ChatPromptTemplate.from_messages([ |
|
("system", PROMPT), |
|
("human", "{input}"), |
|
MessagesPlaceholder(variable_name="agent_scratchpad"), |
|
]) |
|
|
|
tools = [book_slot, delete_event, check_slots, reschedule_event] |
|
functions = [convert_to_openai_function(f) for f in tools] |
|
|
|
llm = ChatGroq( |
|
model=MODEL_NAME, |
|
temperature=0.7, |
|
max_tokens=None, |
|
timeout=None, |
|
max_retries=2, |
|
api_key=API_KEY |
|
).bind_functions(functions=functions) |
|
|
|
agent = create_tool_calling_agent(llm, tools, prompt_template) |
|
agent_executor = AgentExecutor(agent=agent, tools=tools) |
|
return agent_executor |
|
|