{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "a8c9597f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from langgraph.graph import StateGraph,START,END\n", "from typing import TypedDict,Literal\n", "from langchain_groq import ChatGroq\n", "from duckduckgo_search import DDGS\n", "from model import predict\n", "from rag import retriver\n", "import os\n", "from dotenv import load_dotenv\n", "load_dotenv()" ] }, { "cell_type": "code", "execution_count": 3, "id": "a6c11953", "metadata": {}, "outputs": [], "source": [ "class SupportState(TypedDict):\n", " query: str\n", " result: str\n", " solved: Literal[\"yes\",\"no\"]\n", " next_agent: str\n", " final_answer: str" ] }, { "cell_type": "code", "execution_count": 14, "id": "db28cee4", "metadata": {}, "outputs": [], "source": [ "llm = ChatGroq(\n", " model=\"llama-3.3-70b-versatile\",\n", " api_key=os.getenv(\"GROQ_API_KEY\")\n", ")\n", "\n", "def choose_agent(state: SupportState):\n", " prompt = f\"\"\"Read user query and decide which agent to use.\n", " 'rag' - for questions about company policies, refunds policy, return policy, offers.\n", " 'web' - for company current status in market what is growth and insights of the company. \n", " 'generic_agent' - when user ask about there order, status, account related issue or payment related issue then use this.\n", " 'escalate' - ONLY when user explicitly says 'talk to human' or 'speak to agent'\n", " Return only one word: rag, web, escalate or generic.\n", " user query: {state['query']}\"\"\"\n", " response = llm.invoke(prompt)\n", " return {\"next_agent\":response.content.strip().lower()}\n", "\n", "def rag_agent(state: SupportState):\n", " docs = retriver.invoke(state[\"query\"])\n", " return {\"result\": \"\\n\".join([d.page_content for d in docs])}\n", "\n", "def web_agent(state: SupportState):\n", " with DDGS() as ddgs:\n", " results = list(ddgs.text(state['query'], max_results=3))\n", " output = \"\\n\".join([r['body'] for r in results])\n", " return {\"result\":output}\n", "\n", "def escalate_agent(state: SupportState):\n", " return {\"result\": \"My name is Kanhaiya and I'm here to solve your query. Please describe your issue.\"}\n", "\n", "\n", "def responder(state: SupportState):\n", " print(f\"{state['result']}\\n\\nDoes Your Query solved???\")\n", " user_input = input(\"Type Here: \")\n", " if user_input.strip().lower() == \"yes\":\n", " print(\"Thanks For Your Patience.\\n\\nPlease Give us Feedback\")\n", " state[\"solved\"] = \"yes\"\n", " else:\n", " state[\"solved\"] = \"no\"\n", " return state\n", "\n", "def generic_agent(state: SupportState):\n", " response = predict(state['query'])\n", " return {\"result\":response}\n", "\n", "def agent_router(state: SupportState):\n", " return state[\"next_agent\"]\n", "\n", "def router(state: SupportState):\n", " if state[\"solved\"] == 'yes':\n", " return \"yes\"\n", " else:\n", " return \"no\"" ] }, { "cell_type": "code", "execution_count": 15, "id": "56b47204", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "graph = StateGraph(SupportState)\n", "graph.add_node(\"choose_agent\",choose_agent)\n", "graph.add_node(\"rag_agent\",rag_agent)\n", "graph.add_node(\"web_agent\",web_agent)\n", "graph.add_node(\"escalate_agent\",escalate_agent)\n", "graph.add_node(\"generic_agent\",generic_agent)\n", "graph.add_node(\"responder\",responder)\n", "\n", "graph.add_edge(START,\"choose_agent\")\n", "graph.add_conditional_edges(\"choose_agent\",agent_router,{\"web\":\"web_agent\",\"rag\":\"rag_agent\",\"escalate\":\"escalate_agent\",\"generic\":\"generic_agent\"})\n", "graph.add_conditional_edges(\"responder\",router,{\"yes\":END,\"no\":\"escalate_agent\"})\n", "graph.add_edge(\"rag_agent\", \"responder\")\n", "graph.add_edge(\"web_agent\", \"responder\")\n", "graph.add_edge(\"generic_agent\",\"responder\")\n", "graph.add_edge(\"escalate_agent\", END)\n", "\n", "workflow = graph.compile()\n", "workflow" ] }, { "cell_type": "code", "execution_count": 18, "id": "bc4420a9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bot: I apologize for the inconvenience. Please share your order ID and we'll arrange a full refund or refund.\n", "\n", "\n", "Does Your Query solved???\n" ] }, { "data": { "text/plain": [ "{'query': \"my order didn't arrived\",\n", " 'result': \"My name is Kanhaiya and I'm here to solve your query. Please describe your issue.\",\n", " 'solved': 'no',\n", " 'next_agent': 'generic',\n", " 'final_answer': ''}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "workflow.invoke({\n", " \"query\": \"my order didn't arrived\",\n", " \"result\": \"\",\n", " \"solved\": \"no\",\n", " \"next_agent\": \"\",\n", " \"final_answer\": \"\"\n", "})" ] }, { "cell_type": "code", "execution_count": null, "id": "e0e74788", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.6" } }, "nbformat": 4, "nbformat_minor": 5 }