Spaces:
Sleeping
Sleeping
from typing import Dict | |
import langchain_community | |
from langchain.agents import AgentExecutor | |
from langchain_core.prompts import PromptTemplate | |
from langchain_core.output_parsers import JsonOutputParser, StrOutputParser | |
from langchain_community.chat_models import ChatOllama | |
from agents.functions_agent.base import create_functions_agent | |
from functions import tools, get_openai_tools | |
from config import config | |
from prompts.prompt import ( | |
rag_agent_prompt, | |
doc_grader_agent_prompt, | |
router_agent_prompt, | |
hallucination_grader_agent_prompt, | |
rephrase_agent_prompt, | |
output_agent_prompt, | |
) | |
tools_dict = get_openai_tools() | |
def get_agents(llm: langchain_community.chat_models.ChatOllama) -> Dict[str, AgentExecutor]: | |
"""Returns all available agents.""" | |
functions_agent = create_functions_agent(llm=llm, prompt=rag_agent_prompt) | |
functions_agent_executor = AgentExecutor(agent=functions_agent, tools=tools, verbose=True, return_intermediate_steps=True) | |
rephrase_agent = rephrase_agent_prompt | llm | StrOutputParser() | |
router_agent = router_agent_prompt | llm | JsonOutputParser() | |
hallucination_grader_agent = hallucination_grader_agent_prompt | llm | JsonOutputParser() | |
doc_grader_agent = doc_grader_agent_prompt | llm | JsonOutputParser() | |
output_agent = output_agent_prompt | llm | StrOutputParser() | |
return { | |
"function_agent": functions_agent_executor, | |
"doc_grader_agent": doc_grader_agent, | |
"hallucination_grader_agent": hallucination_grader_agent, | |
"router_agent": router_agent, | |
"rephrase_agent": rephrase_agent, | |
"output_agent": output_agent, | |
} | |
if __name__ == "__main__": | |
from langchain.memory import ChatMessageHistory | |
history = ChatMessageHistory() | |
llm = ChatOllama(model = config.ollama_model, temperature = 0.55) | |
function_agent = get_agents(llm)["function_agent"] | |
while True: | |
try: | |
inp = input("User:") | |
if inp == "/bye": | |
break | |
response = function_agent.invoke({"input": inp, "chat_history": history, "tools" : tools_dict}) | |
response['output'] = response['output'].replace("<|im_end|>", "") | |
history.add_user_message(inp) | |
history.add_ai_message(response['output']) | |
print(response['output']) | |
except Exception as e: | |
print(e) | |
continue | |