{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# !apt-get install python3-dev graphviz libgraphviz-dev pkg-config\n", "\n", "# !pip install -qU \\\n", "# langchain-openai==0.1.3 \\\n", "# langchain==0.1.16 \\\n", "# langchain-core==0.1.42 \\\n", "# langgraph==0.0.37 \\\n", "# langchainhub==0.1.15 \\\n", "# # pygraphviz==1.12 # for visualizing the graph" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from typing import TypedDict, Annotated, List, Union\n", "\n", "from langchain_core.agents import AgentAction, AgentFinish\n", "import operator\n", "\n", "class AgentState(TypedDict):\n", " input: str # accepts user's input as string\n", " agent_out : Union[AgentAction, AgentFinish, None] # gives output\n", " intermediate_steps: Annotated[List[tuple[AgentAction, str]], operator.add] # shows intermediate steps" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "with open(\"data/sample_data.txt\", 'r') as file:\n", " data = file.read().strip()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "### Immediate Care for Handling Mental Health Crisis\n", "\n", "What is Immediate Care?\n", "1. Immediate care is a humane, supportive response to individuals experiencing distress, aiming to provide immediate help until professional assistance is available or the crisis is resolved.\n", "2. It is accessible to all, not limited to mental health professionals.\n", "3. While it offers immediate support, it is not a substitute for professional counseling.\n", "\n", "Importance of Immediate Care\n", "1. Mental health disorders can affect anyone, regardless of age, gender, race, or socioeconomic status.\n", "2. Myths about mental health hinder people from seeking treatment and care.\n", "3. Stigma surrounding mental health disorders deprives individuals of accessing healthcare, basic rights, job opportunities, and dignity.\n", "4. Individuals with mental health issues may lack insight into their condition, normalizing their crisis and delaying help.\n", "5. Many face challenges in accessing mental health professionals during a crisis due to insufficient knowledge about available resources.\n", "6. Empowering community members with crisis intervention skills minimizes impact and fosters a supportive environment.\n", "\n", "Difference between Immediate Care and Psychological First Aid (PFA)\n", "- Immediate Care:\n", " 1. Addresses short-term crises and everyday stressors.\n", " 2. Community-based and easily accessible.\n", "- Psychological First Aid (PFA):\n", " 1. Targets severe, long-lasting problems.\n", " 2. Requires trained professionals and controlled environments.\n", "\n", "Who Can Provide Immediate Care?\n", "- Community members\n", "- Mental health professionals\n", "- Police\n", "- Emergency medical teams\n", "- Counselors\n", "- Neighbors\n", "- NGOs\n", "- Relatives or family members\n", "\n", "What is Mental Health Crisis?\n", "1. Intense physical and emotional stress, difficulty coping, and inability to function effectively.\n", "2. Any situation where a person's behavior puts them at risk of hurting themselves or others.\n", "\n", "Life Span Model of Mental Health Crisis\n", "- Childhood: Bullying, separation from parents, parental disharmony, peer pressure, child abuse, sibling rivalry, academic pressure, physical illness/disability, death of a family member.\n", "- Adolescence: Identity crisis, sexual abuse, menarche, body image issues, substance use, relationship failures, technology addiction, career issues.\n", "- Young Adulthood: Migration, higher education, technology addiction, loss of job, loss of loved ones, workplace stress, pregnancy-related events, marital issues, career issues, parenting, financial issues.\n", "- Middle Age: Family issues, divorce, death of spouse, physical illness, children's marriage decisions, property issues, health issues, empty nest.\n", "- Old Age: Retirement, health issues, dependency, caregiving, loss of spouse, stress of unfinished business, issues in interpersonal relationships, isolation, social support, mobility.\n", "\n", "Immediate Care During Disasters\n", "1. Common Reactions:\n", " - Emotional: Sadness, crying spells, anxiety, irritability, mood swings, hopelessness, sensitivity to criticism, anger, aggression.\n", " - Physical: Tiredness, increased heartbeat, sweating, shaking, weight changes, headaches, body aches, digestive problems.\n", " - Behavioral: Social withdrawal, changes in sleep or appetite, increased substance use, acting out of character.\n", " - Cognitive: Difficulty concentrating, racing thoughts, forgetfulness, negative thinking patterns.\n", "\n", "How to Approach Someone in Crisis\n", "1. Notice signs and approach with care to establish rapport.\n", "2. Engage the person in conversation about what could be bothering them.\n", "3. Allow the person to choose when to open up.\n", "4. Express concern and willingness to help.\n", "5. Respect how the person interprets their symptoms.\n", "6. Give full attention and listen without interrupting.\n", "7. Avoid giving simple, unrealistic reassurances.\n", "\n", "Anatomy of a First Aider\n", "- Face the speaker, keep open posture, lean slightly forward, maintain eye contact.\n", "- Avoid physical contact unless appropriate, maintain respectful distance.\n", "- Building skills: undivided concentration, mindful presence, nonverbal cues, active listening.\n", "- Empathy: Express care, supportive statements, ask questions, paraphrase, acknowledge emotions.\n", "- Be non-judgmental: Treat with respect, avoid evaluative comments, maintain a neutral facial expression.\n", "\n", "Clarifying Confidentiality\n", "- Reflect the speaker's words and feelings to ensure correct understanding.\n", "- Summarize what has been shared to clarify.\n", "- Always ask for permission before sharing any information.\n", "\n", "Probing Skills\n", "- Use open-ended questions to encourage exploration.\n", "- Avoid \"why\" questions, use pauses or silence.\n", "- Emphasize \"I\" messages over \"you\" messages.\n", "\n", "What Immediate Care is Not\n", "- It is not obtaining details of traumatic experiences, treating, labeling or diagnosing, counseling, or something only professionals can do.\n", "\n", "Don'ts in Immediate Care\n", "- Do not pressure someone to tell their story.\n", "- Do not interrupt or rush the story.\n", "- Do not give simple, unrealistic reassurances.\n", "- Do not give false promises or minimize their loss.\n", "- Do not touch if unsure, and avoid criticizing existing services in front of people in need.\n" ] } ], "source": [ "print(data)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import os.path\n", "import logging\n", "import sys\n", "\n", "from llama_index.core import (\n", " VectorStoreIndex,\n", " SimpleDirectoryReader,\n", " StorageContext,\n", " load_index_from_storage,\n", ")\n", "# Viewing Queries and Events Using Logging\n", "# logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)\n", "# logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))\n", "\n", "# loading env variables \n", "from dotenv import load_dotenv, find_dotenv\n", "_ = load_dotenv(find_dotenv())\n", "\n", "openai_api_key = os.getenv(\"OPENAI_API_KEY\")\n", "LANGCHAIN_API_KEY = os.getenv(\"LANGCHAIN_API_KEY\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# llama-index function\n", "def llama_index(query: str):\n", " \n", " PERSIST_DIR = \"./storage\"\n", " \n", " if not os.path.exists(PERSIST_DIR):\n", " documents = SimpleDirectoryReader(\"prompts\").load_data()\n", " # By default, LlamaIndex uses a chunk size of 1024 and a chunk overlap of 20\n", " index = VectorStoreIndex.from_documents(documents)\n", " index.storage_context.persist(persist_dir=PERSIST_DIR)\n", " else:\n", " storage_context = StorageContext.from_defaults(persist_dir=PERSIST_DIR)\n", " index = load_index_from_storage(storage_context)\n", " \n", " query_engine = index.as_query_engine()\n", " # query_engine = index.as_query_engine(similarity_top_k=2, streaming=True) # to enable streaming\n", " # chat_engine = index.as_chat_engine() # to use chat engine for conversational search\n", "\n", " response = query_engine.query(query)\n", " # streaming_response = query_engine.query(query)\n", " # streaming_response.print_response_stream()\n", " # response = chat_engine.chat(query)\n", " return str(response)\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Immediate care is a humane, supportive response to individuals experiencing distress, aiming to provide immediate help until professional assistance is available or the crisis is resolved. It is accessible to all, not limited to mental health professionals, and while it offers immediate support, it is not a substitute for professional counseling.'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "llama_index(\"what is immediate care?\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Format \n", "final_answer tool — which provides output in a specific format, ie:\n", "{\n", " \"answer\": \"\",\n", " \"source\": \"\"\n", "}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from langchain_core.tools import tool\n", "\n", "@tool(\"search\")\n", "def search_tool(query: str):\n", " \"\"\"Searches for information on the topic of provinding immediate care.\"\"\"\n", " # this is a \"RAG\" emulator\n", " # add RAG code\n", " answer = llama_index(query)\n", " return answer\n", "\n", "@tool(\"final_answer\")\n", "def final_answer_tool(\n", " answer: str,\n", " source: str\n", "):\n", " \"\"\"Returns a natural language response to the user in `answer`, and a\n", " `source` from where this data is sourced from.\n", " \"\"\"\n", " return \"\"\n", "\n", "# Query expansion tool\n", "# @tool(\"expand_query\")\n", "# def expand_query_tool(query: str):\n", "# \"\"\"Expands or reformulates the query for better search results.\"\"\"\n", "# # query expansion logic here\n", "# return f\"Expanded query: {query}\"\n", "\n", "# Fact-checking tool\n", "# @tool(\"fact_check\")\n", "# def fact_check_tool(statement: str):\n", "# \"\"\"Verifies the given statement against multiple sources.\"\"\"\n", "# # fact-checking logic here\n", "# return f\"Fact-check result for: {statement}\"\n", "\n", "# Summarization tool\n", "# @tool(\"summarize\")\n", "# def summarize_tool(text: str):\n", "# \"\"\"Summarizes long text for concise information.\"\"\"\n", "# # summarization logic here\n", "# return f\"Summary of: {text[:50]}...\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# start" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# MAIN PROMPT\n", "\n", "from langchain.agents import create_openai_tools_agent\n", "from langchain_openai import ChatOpenAI\n", "from langchain_core.prompts import ChatPromptTemplate\n", "\n", "llm = ChatOpenAI(\n", " model=\"gpt-4o\",\n", " openai_api_key=os.environ[\"OPENAI_API_KEY\"],\n", " temperature=0.1\n", ")\n", "\n", "prompt_text = \"You are an empathetic and supportive AI agent designed to provide interactive training and education to friends and family members of individuals dealing with mental health challenges. Your role is to equip them with the knowledge, skills, and confidence needed to offer effective mental health first aid and care to their loved ones.\\n\" \\\n", " \"Key Responsibilities:\\n\" \\\n", " \"- Engage in empathetic, personalized interactions that feel human-like and relatable\\n\" \\\n", " \"- Provide clear, accurate information about various mental health conditions and supportive strategies\\n\" \\\n", " \"- Guide users through interactive scenarios to build practical skills in a safe virtual environment\\n\" \\\n", " \"- Offer reassurance, validation and appreciation to users as they share their experiences and concerns\\n\" \\\n", " \"- Paraphrase user statements to confirm understanding, ending with validation checks (e.g. \\\"Did I understand that correctly?\\\")\\n\" \\\n", " \"- Ask clarifying questions to gather relevant context; do not make assumptions about the user's situation\\n\" \\\n", " \"- Tailor guidance to each user's unique circumstances, while reinforcing best practices in mental health first aid\\n\" \\\n", " \"- Maintain appropriate boundaries as an AI; direct users to professional help when needed\\n\" \\\n", " \"- Foster a non-judgmental, supportive tone that helps users feel heard and empowered to help their loved ones\\n\" \\\n", " \"Remember, your goal is to enhance understanding, improve communication skills, and ultimately enable users to create a more supportive environment for those struggling with mental health issues. Approach each interaction with compassion, respect for individual experiences, and a commitment to providing reliable, constructive guidance. Together, we can make a meaningful difference in the lives of individuals and families navigating mental health challenges.\"\n", "\n", "prompt = ChatPromptTemplate.from_messages([\n", " (\"system\", prompt_text),\n", " (\"placeholder\", \"{chat_history}\"),\n", " (\"human\", \"{input}\"),\n", " (\"placeholder\", \"{agent_scratchpad}\"),\n", "])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# USING ALTERNATIVE PROMPT FROM HUB\n", "\n", "import os\n", "from langchain.agents import create_openai_tools_agent\n", "from langchain import hub\n", "from langchain_openai import ChatOpenAI\n", "# export LANGCHAIN_TRACING_V2=\"true\"\n", "# export LANGCHAIN_API_KEY=\"\"\n", "\n", "llm = ChatOpenAI(\n", " model=\"gpt-3.5-turbo\", # gpt-4o\n", " openai_api_key=os.environ[\"OPENAI_API_KEY\"],\n", " temperature=0.1\n", ")\n", "\n", "prompt = hub.pull(\"hwchase17/openai-functions-agent\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "planner_agent_runnable = create_openai_tools_agent(\n", " llm=llm,\n", " tools=[final_answer_tool, search_tool],\n", " prompt=prompt\n", ")\n", "# type: " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "first=RunnableAssign(mapper={\n", " agent_scratchpad: RunnableLambda(lambda x: format_to_openai_tool_messages(x['intermediate_steps']))\n", "}) middle=[ChatPromptTemplate(input_variables=['input'], input_types={'chat_history': typing.List[typing.Union[langchain_core.messages.ai.AIMessage, langchain_core.messages.human.HumanMessage, langchain_core.messages.chat.ChatMessage, langchain_core.messages.system.SystemMessage, langchain_core.messages.function.FunctionMessage, langchain_core.messages.tool.ToolMessage]], 'agent_scratchpad': typing.List[typing.Union[langchain_core.messages.ai.AIMessage, langchain_core.messages.human.HumanMessage, langchain_core.messages.chat.ChatMessage, langchain_core.messages.system.SystemMessage, langchain_core.messages.function.FunctionMessage, langchain_core.messages.tool.ToolMessage]]}, partial_variables={'chat_history': [], 'agent_scratchpad': []}, messages=[SystemMessagePromptTemplate(prompt=PromptTemplate(input_variables=[], template='You are an empathetic and supportive AI agent designed to provide interactive training and education to friends and family members of individuals dealing with mental health challenges. Your role is to equip them with the knowledge, skills, and confidence needed to offer effective mental health first aid and care to their loved ones.\\nKey Responsibilities:\\n- Engage in empathetic, personalized interactions that feel human-like and relatable\\n- Provide clear, accurate information about various mental health conditions and supportive strategies\\n- Guide users through interactive scenarios to build practical skills in a safe virtual environment\\n- Offer reassurance, validation and appreciation to users as they share their experiences and concerns\\n- Paraphrase user statements to confirm understanding, ending with validation checks (e.g. \"Did I understand that correctly?\")\\n- Ask clarifying questions to gather relevant context; do not make assumptions about the user\\'s situation\\n- Tailor guidance to each user\\'s unique circumstances, while reinforcing best practices in mental health first aid\\n- Maintain appropriate boundaries as an AI; direct users to professional help when needed\\n- Foster a non-judgmental, supportive tone that helps users feel heard and empowered to help their loved ones\\nRemember, your goal is to enhance understanding, improve communication skills, and ultimately enable users to create a more supportive environment for those struggling with mental health issues. Approach each interaction with compassion, respect for individual experiences, and a commitment to providing reliable, constructive guidance. Together, we can make a meaningful difference in the lives of individuals and families navigating mental health challenges.')), MessagesPlaceholder(variable_name='chat_history', optional=True), HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['input'], template='{input}')), MessagesPlaceholder(variable_name='agent_scratchpad', optional=True)]), RunnableBinding(bound=ChatOpenAI(client=, async_client=, model_name='gpt-4o', temperature=0.1, openai_api_key=SecretStr('**********'), openai_proxy=''), kwargs={'tools': [{'type': 'function', 'function': {'name': 'final_answer', 'description': 'Returns a natural language response to the user in `answer`, and a\\n `source` from where this data is sourced from.', 'parameters': {'type': 'object', 'properties': {'answer': {'type': 'string'}, 'source': {'type': 'string'}}, 'required': ['answer', 'source']}}}, {'type': 'function', 'function': {'name': 'search', 'description': 'Searches for information on the topic of provinding immediate care.', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}}}]})] last=OpenAIToolsAgentOutputParser()\n" ] } ], "source": [ "print(planner_agent_runnable)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[ToolAgentAction(tool='search', tool_input={'query': 'What are Probing Skills in mental health support?'}, log=\"\\nInvoking: `search` with `{'query': 'What are Probing Skills in mental health support?'}`\\n\\n\\n\", message_log=[AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_tSBLIcLzWlrqHmgZHxtHbE1R', 'function': {'arguments': '{\"query\":\"What are Probing Skills in mental health support?\"}', 'name': 'search'}, 'type': 'function'}]}, response_metadata={'token_usage': {'completion_tokens': 22, 'prompt_tokens': 399, 'total_tokens': 421}, 'model_name': 'gpt-4o', 'system_fingerprint': 'fp_c4e5b6fa31', 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-38fecc87-a7cf-493b-bb7a-1abed6ad7860-0', tool_calls=[{'name': 'search', 'args': {'query': 'What are Probing Skills in mental health support?'}, 'id': 'call_tSBLIcLzWlrqHmgZHxtHbE1R'}])], tool_call_id='call_tSBLIcLzWlrqHmgZHxtHbE1R')]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# testing the agent flow - it won't produce output - only the function \n", "\n", "inputs = {\n", " \"input\": \"What are Probing Skills?\",\n", " \"intermediate_steps\": []\n", "}\n", "agent_out = planner_agent_runnable.invoke(inputs)\n", "agent_out" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': 'call_tSBLIcLzWlrqHmgZHxtHbE1R',\n", " 'function': {'arguments': '{\"query\":\"What are Probing Skills in mental health support?\"}',\n", " 'name': 'search'},\n", " 'type': 'function'}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "agent_out[-1].message_log[-1].additional_kwargs[\"tool_calls\"][-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define Nodes for Graph" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from langchain_core.agents import AgentFinish\n", "import json\n", "\n", "def run_planner_agent(state: list):\n", " print(\"> run_planner_agent\")\n", " agent_out = planner_agent_runnable.invoke(state)\n", " return {\"agent_out\": agent_out}\n", "\n", "def execute_search(state: list):\n", " print(\"> execute_search\")\n", " action = state[\"agent_out\"]\n", " tool_call = action[-1].message_log[-1].additional_kwargs[\"tool_calls\"][-1]\n", " out = search_tool.invoke(\n", " json.loads(tool_call[\"function\"][\"arguments\"])\n", " )\n", " return {\"intermediate_steps\": [{\"search\": str(out)}]}\n", "\n", "def router(state: list):\n", " print(\"> router\")\n", " if isinstance(state[\"agent_out\"], list) and state[\"agent_out\"]:\n", " return state[\"agent_out\"][-1].tool\n", " else:\n", " return \"error\"\n", "\n", "# finally, we will have a single LLM call that MUST use the final_answer structure\n", "final_answer_llm = llm.bind_tools([final_answer_tool], tool_choice=\"final_answer\")\n", "\n", "# this forced final_answer LLM call will be used to structure output from our\n", "# RAG endpoint\n", "def rag_final_answer(state: list):\n", " print(\"> final_answer\")\n", " query = state[\"input\"]\n", " context = state[\"intermediate_steps\"][-1]\n", "\n", " prompt = f\"\"\"You are a helpful assistant, answer the user's question using the\n", " context provided.\n", "\n", " CONTEXT: {context}\n", "\n", " QUESTION: {query}\n", " \"\"\"\n", " out = final_answer_llm.invoke(prompt)\n", " function_call = out.additional_kwargs[\"tool_calls\"][-1][\"function\"][\"arguments\"]\n", " return {\"agent_out\": function_call}\n", "\n", "# we use the same forced final_answer LLM call to handle incorrectly formatted\n", "# output from our planner_agent\n", "def handle_error(state: list):\n", " print(\"> handle_error\")\n", " query = state[\"input\"]\n", " prompt = f\"\"\"You are a helpful assistant, answer the user's question.\n", "\n", " QUESTION: {query}\n", " \"\"\"\n", " out = final_answer_llm.invoke(prompt)\n", " function_call = out.additional_kwargs[\"tool_calls\"][-1][\"function\"][\"arguments\"]\n", " return {\"agent_out\": function_call}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Define Graph\n", "\n", "A node represents a function (one of those we just defined above) whereas an edge allows us to travel from one node to another.\n", "\n", "Let's start by initializing our graph using our AgentState object and adding our first set of nodes and the graph entry point (ie where the graph begins once called)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", "\n", "graph = StateGraph(AgentState)\n", "\n", "# we have four nodes that will consume our agent state and modify\n", "# our agent state based on some internal process\n", "graph.add_node(\"planner_agent\", run_planner_agent)\n", "graph.add_node(\"search\", execute_search)\n", "graph.add_node(\"error\", handle_error)\n", "graph.add_node(\"rag_final_answer\", rag_final_answer)\n", "\n", "# our graph will always begin with the query agent\n", "graph.set_entry_point(\"planner_agent\")\n", "\n", "# conditional edges are controlled by our router\n", "graph.add_conditional_edges(\n", " start_key=\"planner_agent\", # where graph start\n", " condition=router, # function to determine which node is called\n", " conditional_edge_mapping={\n", " \"search\": \"search\",\n", " \"error\": \"error\",\n", " \"final_answer\": END\n", " }\n", ")\n", "graph.add_edge(\"search\", \"rag_final_answer\")\n", "graph.add_edge(\"error\", END)\n", "graph.add_edge(\"rag_final_answer\", END)\n", "\n", "runnable = graph.compile()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# to see the graph using pygraphviz\n", "from IPython.display import Image\n", "\n", "Image(runnable.get_graph().draw_png())" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> run_planner_agent\n", "> router\n", "> execute_search\n", "> final_answer\n" ] } ], "source": [ "# sample run\n", "\n", "runnable = graph.compile()\n", "\n", "out = runnable.invoke({\n", " \"input\": \"what I should not do in providing immediate care?\",\n", " \"intermediate_steps\": []\n", "})" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\"answer\":\"When providing immediate care, you should not pressure someone to tell their story, interrupt or rush their story, give simple or unrealistic reassurances, give false promises or minimize their loss, touch them if you are unsure, or criticize existing services in front of people in need.\",\"source\":\"search\"}\n" ] } ], "source": [ "print(out[\"agent_out\"])" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"answer\": \"When providing immediate care, you should not pressure someone to tell their story, interrupt or rush their story, give simple or unrealistic reassurances, give false promises or minimize their loss, touch them if you are unsure, or criticize existing services in front of people in need.\",\n", " \"source\": \"search\"\n", "}\n" ] } ], "source": [ "# printing in nice format\n", "import pprint\n", "\n", "text = json.dumps(out[\"agent_out\"], indent = 2)\n", "output_text = {\n", " \"agent_out\": {text}\n", "}\n", "\n", "final_output = json.loads(out[\"agent_out\"])\n", "print(json.dumps(final_output, indent=2))\n", "# pprint.pprint(final_output, width=60)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{ 'agent_out': '{\"answer\":\"When providing immediate care, you should not '\n", " 'pressure someone to tell their story, interrupt or rush '\n", " 'their story, give simple or unrealistic reassurances, give '\n", " 'false promises or minimize their loss, touch them if you are '\n", " 'unsure, or criticize existing services in front of people in '\n", " 'need.\",\"source\":\"search\"}',\n", " 'input': 'what I should not do in providing immediate care?',\n", " 'intermediate_steps': [ { 'search': 'Do not pressure someone to tell '\n", " 'their story, do not interrupt or '\n", " 'rush the story, do not give '\n", " 'simple, unrealistic reassurances, '\n", " 'do not give false promises or '\n", " 'minimize their loss, do not touch '\n", " 'if unsure, and avoid criticizing '\n", " 'existing services in front of '\n", " 'people in need.'}]}\n" ] } ], "source": [ "# to see intermediate steps \n", "pprint.pprint(out, indent = 4)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> run_planner_agent\n", "> router\n", "> handle_error\n", "{\"answer\":\"Hello! How can I assist you today?\",\"source\":\"Common greeting response\"}\n" ] } ], "source": [ "# error case\n", "out = runnable.invoke({\n", " \"input\": \"hi\",\n", " \"intermediate_steps\": []\n", "})\n", "print(out[\"agent_out\"])" ] } ], "metadata": { "kernelspec": { "display_name": "crew", "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.10.13" } }, "nbformat": 4, "nbformat_minor": 2 }