{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyOE4AC+gSvEgUmk/rQlAXic"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"code","execution_count":null,"metadata":{"id":"2tpPpcAmZNwa"},"outputs":[],"source":["# Build a simple joke bot:\n","# The agent greets the user: “Hey, wanna hear a joke?”\n","# The user replies. The agent checks if they want a joke or not.\n","# If yes, the agent asks what kind of joke they want.\n","# The agent checks if the user’s preference is valid; if valid, it tells a joke, otherwise it prompts the user again.\n","# After telling a joke, the agent asks if the user wants another joke. This continues until the user says no, which ends the conversation."]},{"cell_type":"markdown","source":["## Libraries"],"metadata":{"id":"gmC330LQaAnY"}},{"cell_type":"code","source":["# Set OpenAI key in the environment\n","from google.colab import userdata\n","import os\n","\n","api_key = userdata.get('ai_agents_openai')\n","os.environ['OPENAI_API_KEY'] = api_key"],"metadata":{"id":"-sdq9IsAZ-Z9"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["!pip install -q langchain-community langchain-openai langgraph"],"metadata":{"id":"x3Xd9uFDaEVo","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1745661911436,"user_tz":-120,"elapsed":28160,"user":{"displayName":"Diogo Resende","userId":"05706604408624562002"}},"outputId":"5df85f66-877b-49d2-bdcc-5fef849093e2"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.5/2.5 MB\u001b[0m \u001b[31m21.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m148.2/148.2 kB\u001b[0m \u001b[31m7.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.0/42.0 kB\u001b[0m \u001b[31m1.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m47.3/47.3 kB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m1.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m18.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.8/194.8 kB\u001b[0m \u001b[31m12.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m50.9/50.9 kB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m223.6/223.6 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h"]}]},{"cell_type":"code","source":["from openai import OpenAI\n","\n","from langchain.prompts import ChatPromptTemplate\n","from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n","from langgraph.graph import START, StateGraph, END\n","\n","from IPython.display import Markdown, Image\n","from typing_extensions import TypedDict\n","\n","import json\n","import ast"],"metadata":{"id":"NonL6OXnaF6S"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# create openAI client\n","client = OpenAI()"],"metadata":{"id":"bKI1paBtZTgH"},"execution_count":null,"outputs":[]}]}