mirror of
https://github.com/hwchase17/langchain.git
synced 2025-05-12 02:26:23 +00:00
867 lines
40 KiB
Plaintext
867 lines
40 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# ClickUp Toolkit\n",
|
|
"\n",
|
|
">[ClickUp](https://clickup.com/) is an all-in-one productivity platform that provides small and large teams across industries with flexible and customizable work management solutions, tools, and functions. \n",
|
|
"\n",
|
|
">It is a cloud-based project management solution for businesses of all sizes featuring communication and collaboration tools to help achieve organizational goals."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"%pip install -qU langchain-community"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"%reload_ext autoreload\n",
|
|
"%autoreload 2\n",
|
|
"from datetime import datetime\n",
|
|
"\n",
|
|
"from langchain.agents import AgentType, initialize_agent\n",
|
|
"from langchain_community.agent_toolkits.clickup.toolkit import ClickupToolkit\n",
|
|
"from langchain_community.utilities.clickup import ClickupAPIWrapper\n",
|
|
"from langchain_openai import OpenAI"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Initializing"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Get Authenticated\n",
|
|
"1. Create a [ClickUp App](https://help.clickup.com/hc/en-us/articles/6303422883095-Create-your-own-app-with-the-ClickUp-API)\n",
|
|
"2. Follow [these steps](https://clickup.com/api/developer-portal/authentication/) to get your `client_id` and `client_secret`.\n",
|
|
" - *Suggestion: use `https://google.com` as the redirect_uri. This is what we assume in the defaults for this toolkit.*\n",
|
|
"3. Copy/paste them and run the next cell to get your `code`\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 48,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Click this link, select your workspace, click `Connect Workspace`\n",
|
|
"https://app.clickup.com/api?client_id=ABC...&redirect_uri=https://google.com\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Copilot Sandbox\n",
|
|
"oauth_client_id = \"ABC...\"\n",
|
|
"oauth_client_secret = \"123...\"\n",
|
|
"redirect_uri = \"https://google.com\"\n",
|
|
"\n",
|
|
"print(\"Click this link, select your workspace, click `Connect Workspace`\")\n",
|
|
"print(ClickupAPIWrapper.get_access_code_url(oauth_client_id, redirect_uri))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"The url should change to something like this https://www.google.com/?code=THISISMYCODERIGHTHERE.\n",
|
|
"\n",
|
|
"Next, copy/paste the `CODE` (THISISMYCODERIGHTHERE) generated in the URL in the cell below.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"code = \"THISISMYCODERIGHTHERE\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Get Access Token\n",
|
|
"Then, use the code below to get your `access_token`.\n",
|
|
"\n",
|
|
"*Important*: Each code is a one time code that will expire after use. The `access_token` can be used for a period of time. Make sure to copy paste the `access_token` once you get it!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Error: {'err': 'Code already used', 'ECODE': 'OAUTH_014'}\n",
|
|
"You already used this code once. Go back a step and generate a new code.\n",
|
|
"Our best guess for the url to get a new code is:\n",
|
|
"https://app.clickup.com/api?client_id=B5D61F8EVO04PR0JX0U73984LLS9GI6P&redirect_uri=https://google.com\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"access_token = ClickupAPIWrapper.get_access_token(\n",
|
|
" oauth_client_id, oauth_client_secret, code\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Found team_id: 9011010153.\n",
|
|
"Most request require the team id, so we store it for you in the toolkit, we assume the first team in your list is the one you want. \n",
|
|
"Note: If you know this is the wrong ID, you can pass it at initialization.\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Init toolkit\n",
|
|
"clickup_api_wrapper = ClickupAPIWrapper(access_token=access_token)\n",
|
|
"toolkit = ClickupToolkit.from_clickup_api_wrapper(clickup_api_wrapper)\n",
|
|
"print(\n",
|
|
" f\"Found team_id: {clickup_api_wrapper.team_id}.\\nMost request require the team id, so we store it for you in the toolkit, we assume the first team in your list is the one you want. \\nNote: If you know this is the wrong ID, you can pass it at initialization.\"\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Create Agent"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"llm = OpenAI(temperature=0, openai_api_key=\"\")\n",
|
|
"\n",
|
|
"agent = initialize_agent(\n",
|
|
" toolkit.get_tools(), llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Use an Agent"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# helper function for demo\n",
|
|
"def print_and_run(command):\n",
|
|
" print(\"\\033[94m$ COMMAND\\033[0m\")\n",
|
|
" print(command)\n",
|
|
" print(\"\\n\\033[94m$ AGENT\\033[0m\")\n",
|
|
" response = agent.run(command)\n",
|
|
" print(\"\".join([\"-\"] * 80))\n",
|
|
" return response"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Navigation\n",
|
|
"You can get the teams, folder and spaces your user has access to"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Get all the teams that the user is authorized to access\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to use the Get Teams tool\n",
|
|
"Action: Get Teams\n",
|
|
"Action Input: No necessary request parameters\u001b[0m\n",
|
|
"Observation: \u001b[38;5;200m\u001b[1;3m{'teams': [{'id': '9011010153', 'name': 'Task Copilot Sandbox Workspace 1', 'members': [{'id': 61681706, 'username': 'Aiswarya ', 'email': 'asankar@clickup.com', 'initials': 'A'}, {'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'email': 'rlentini@clickup.com', 'initials': 'RL'}]}]}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the teams the user is authorized to access\n",
|
|
"Final Answer: The user is authorized to access the team 'Task Copilot Sandbox Workspace 1'.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Get all the spaces available to the team\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to use the API to get the spaces\n",
|
|
"Action: Get Teams\n",
|
|
"Action Input: No necessary request parameters\u001b[0m\n",
|
|
"Observation: \u001b[38;5;200m\u001b[1;3m{'teams': [{'id': '9011010153', 'name': 'Task Copilot Sandbox Workspace 1', 'members': [{'id': 61681706, 'username': 'Aiswarya ', 'email': 'asankar@clickup.com', 'initials': 'A'}, {'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'email': 'rlentini@clickup.com', 'initials': 'RL'}]}]}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now have the list of teams\n",
|
|
"Final Answer: The list of teams available to the team is [{'id': '9011010153', 'name': 'Task Copilot Sandbox Workspace 1', 'members': [{'id': 61681706, 'username': 'Aiswarya ', 'email': 'asankar@clickup.com', 'initials': 'A'}, {'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'email': 'rlentini@clickup.com', 'initials': 'RL'}]}]\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Get all the folders for the team\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get all the folders for the team\n",
|
|
"Action: Get all folders in the workspace\n",
|
|
"Action Input: {\"folder_id\": \"90130119692\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m{'spaces': [{'id': '90110075934', 'name': 'Test Space', 'color': None, 'private': False, 'avatar': None, 'admin_can_manage': False, 'statuses': [{'id': 'p90110075934_lBKIEh3r', 'status': 'Open', 'type': 'open', 'orderindex': 0, 'color': '#d3d3d3'}, {'id': 'p90110075934_AvVAnVqy', 'status': 'in progress', 'type': 'custom', 'orderindex': 1, 'color': '#a875ff'}, {'id': 'p90110075934_SftYWzGt', 'status': 'Closed', 'type': 'closed', 'orderindex': 2, 'color': '#6bc950'}], 'multiple_assignees': True, 'features': {'due_dates': {'enabled': True, 'start_date': True, 'remap_due_dates': False, 'remap_closed_due_date': False}, 'sprints': {'enabled': False}, 'time_tracking': {'enabled': True, 'harvest': False, 'rollup': False}, 'points': {'enabled': False}, 'custom_items': {'enabled': False}, 'priorities': {'enabled': True, 'priorities': [{'color': '#f50000', 'id': '1', 'orderindex': '1', 'priority': 'urgent'}, {'color': '#ffcc00', 'id': '2', 'orderindex': '2', 'priority': 'high'}, {'color': '#6fddff', 'id': '3', 'orderindex': '3', 'priority': 'normal'}, {'color': '#d8d8d8', 'id': '4', 'orderindex': '4', 'priority': 'low'}]}, 'tags': {'enabled': True}, 'check_unresolved': {'enabled': True, 'subtasks': None, 'checklists': None, 'comments': None}, 'zoom': {'enabled': False}, 'milestones': {'enabled': False}, 'custom_fields': {'enabled': True}, 'dependency_warning': {'enabled': True}, 'status_pies': {'enabled': False}, 'multiple_assignees': {'enabled': True}}, 'archived': False}]}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the folders in the team\n",
|
|
"Final Answer: The folders in the team are listed in the observation.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'The folders in the team are listed in the observation.'"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"print_and_run(\"Get all the teams that the user is authorized to access\")\n",
|
|
"print_and_run(\"Get all the spaces available to the team\")\n",
|
|
"print_and_run(\"Get all the folders for the team\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Task Operations\n",
|
|
"You can get, ask question about tasks and update them"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"task_id = \"8685mb5fn\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Basic attirbute getting and updating"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Get task with id 8685mb5fn\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to use the Get task tool\n",
|
|
"Action: Get task\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\"}\u001b[0m\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m{'id': '8685mb5fn', 'name': 'dummy task 1', 'text_content': 'An old, boring task description', 'description': 'An old, boring task description', 'status': 'to do', 'creator_id': 81928627, 'creator_username': 'Rodrigo Ceballos Lentini', 'creator_email': 'rlentini@clickup.com', 'assignees': [], 'watcher_username': 'Rodrigo Ceballos Lentini', 'watcher_email': 'rlentini@clickup.com', 'priority': 'high', 'due_date': '1694764800000', 'start_date': None, 'points': None, 'team_id': '9011010153', 'project_id': '90110331875'}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the task details\n",
|
|
"Final Answer: The task with id 8685mb5fn has the following details: {'id': '8685mb5fn', 'name': 'dummy task 1', 'text_content': 'An old, boring task description', 'description': 'An old, boring task description', 'status': 'to do', 'creator_id': 81928627, 'creator_username': 'Rodrigo Ceballos Lentini', 'creator_email': 'rlentini@clickup.com', 'assignees': [], 'watcher_username': 'Rodrigo Ceballos Lentini', 'watcher_email': 'rlentini@clickup.com', 'priority': 'high', 'due_date': '1694764800000', 'start_date': None, 'points': None, 'team_id': '9011010153', 'project_id': '90110331875'}\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"What is the description of task with id 8685mb5fn\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get the description of the task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"description\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3mAn old, boring task description\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the description of the task\n",
|
|
"Final Answer: An old, boring task description\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"For task with id 8685mb5fn, change the description to 'A cool task descriptiont changed by AI!'\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to update the description of a task\n",
|
|
"Action: Update task\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"description\", \"value\": \"A cool task description changed by AI!\"}\u001b[0m\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m<Response [200]>\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I have successfully updated the task description\n",
|
|
"Final Answer: The description of task 8685mb5fn has been successfully changed to 'A cool task description changed by AI!'\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"What is the description of task with id 8685mb5fn\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get the description of the task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"description\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3mA cool task description changed by AI!\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the description of the task\n",
|
|
"Final Answer: A cool task description changed by AI!\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"For task with id 8685mb5fn, change the description to 'An old, boring task description'\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to update the description of a task\n",
|
|
"Action: Update task\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"description\", \"value\": \"An old, boring task description\"}\u001b[0m\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m<Response [200]>\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the task description has been updated\n",
|
|
"Final Answer: The description of task 8685mb5fn has been updated to 'An old, boring task description'.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"The description of task 8685mb5fn has been updated to 'An old, boring task description'.\""
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# We can get a task to inspect it's contents\n",
|
|
"print_and_run(f\"Get task with id {task_id}\")\n",
|
|
"\n",
|
|
"# We can get a specific attribute from a task\n",
|
|
"previous_description = print_and_run(\n",
|
|
" f\"What is the description of task with id {task_id}\"\n",
|
|
")\n",
|
|
"\n",
|
|
"# We can even update it!\n",
|
|
"print_and_run(\n",
|
|
" f\"For task with id {task_id}, change the description to 'A cool task descriptiont changed by AI!'\"\n",
|
|
")\n",
|
|
"print_and_run(f\"What is the description of task with id {task_id}\")\n",
|
|
"\n",
|
|
"# Undo what we did\n",
|
|
"print_and_run(\n",
|
|
" f\"For task with id {task_id}, change the description to '{previous_description}'\"\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Change the descrition task 8685mj6cd to 'Look ma no hands'\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to update the description of a task\n",
|
|
"Action: Update task\n",
|
|
"Action Input: {\"task_id\": \"8685mj6cd\", \"attribute_name\": \"description\", \"value\": \"Look ma no hands\"}\u001b[0m\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m<Response [200]>\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m The task description has been successfully updated\n",
|
|
"Final Answer: The description of task 8685mj6cd has been changed to 'Look ma no hands'.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"The description of task 8685mj6cd has been changed to 'Look ma no hands'.\""
|
|
]
|
|
},
|
|
"execution_count": 35,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"print_and_run(\"Change the descrition task 8685mj6cd to 'Look ma no hands'\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### Advanced Attributes (Assignees)\n",
|
|
"You can query and update almost every thing about a task!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 36,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"user_id = 81928627"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"What are the assignees of task id 8685mb5fn?\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get the assignees of a task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"assignee\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3mError: attribute_name = assignee was not found in task keys dict_keys(['id', 'name', 'text_content', 'description', 'status', 'creator_id', 'creator_username', 'creator_email', 'assignees', 'watcher_username', 'watcher_email', 'priority', 'due_date', 'start_date', 'points', 'team_id', 'project_id']). Please call again with one of the key names.\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I need to get the assignees of a task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"assignees\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m[]\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n",
|
|
"Final Answer: There are no assignees for task id 8685mb5fn.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Remove user 81928627 from the assignees of task id 8685mb5fn\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to update the assignees of a task\n",
|
|
"Action: Update task assignees\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"operation\": \"rem\", \"users\": [81928627]}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m<Response [200]>\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m The user has been removed from the assignees of the task\n",
|
|
"Final Answer: User 81928627 has been removed from the assignees of task id 8685mb5fn.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"What are the assignees of task id 8685mb5fn?\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get the assignees of a task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"assignee\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3mError: attribute_name = assignee was not found in task keys dict_keys(['id', 'name', 'text_content', 'description', 'status', 'creator_id', 'creator_username', 'creator_email', 'assignees', 'watcher_username', 'watcher_email', 'priority', 'due_date', 'start_date', 'points', 'team_id', 'project_id']). Please call again with one of the key names.\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I need to get the assignees of a task\n",
|
|
"Action: Get task attribute\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"attribute_name\": \"assignees\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m[]\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n",
|
|
"Final Answer: There are no assignees for task id 8685mb5fn.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n",
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Add user 81928627 from the assignees of task id 8685mb5fn\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to update the assignees of a task\n",
|
|
"Action: Update task assignees\n",
|
|
"Action Input: {\"task_id\": \"8685mb5fn\", \"operation\": \"rem\", \"users\": [81928627]}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m<Response [200]>\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m The user has been removed from the assignees of the task\n",
|
|
"Final Answer: User 81928627 has been removed from the assignees of task id 8685mb5fn.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'User 81928627 has been removed from the assignees of task id 8685mb5fn.'"
|
|
]
|
|
},
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"print_and_run(f\"What are the assignees of task id {task_id}?\")\n",
|
|
"print_and_run(f\"Remove user {user_id} from the assignees of task id {task_id}\")\n",
|
|
"print_and_run(f\"What are the assignees of task id {task_id}?\")\n",
|
|
"print_and_run(f\"Add user {user_id} from the assignees of task id {task_id}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Creation\n",
|
|
"You can create tasks, lists and folders"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Create a task called 'Test Task - 18/09/2023-10:31:22' with description 'This is a Test'\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to use the Create Task tool\n",
|
|
"Action: Create Task\n",
|
|
"Action Input: {\"name\": \"Test Task - 18/09/2023-10:31:22\", \"description\": \"This is a Test\"}\u001b[0m\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m{'id': '8685mw4wq', 'custom_id': None, 'name': 'Test Task - 18/09/2023-10:31:22', 'text_content': 'This is a Test', 'description': 'This is a Test', 'status': {'id': 'p90110061901_VlN8IJtk', 'status': 'to do', 'color': '#87909e', 'orderindex': 0, 'type': 'open'}, 'orderindex': '23.00000000000000000000000000000000', 'date_created': '1695047486396', 'date_updated': '1695047486396', 'date_closed': None, 'date_done': None, 'archived': False, 'creator': {'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'color': '#c51162', 'email': 'rlentini@clickup.com', 'profilePicture': None}, 'assignees': [], 'watchers': [{'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'color': '#c51162', 'initials': 'RL', 'email': 'rlentini@clickup.com', 'profilePicture': None}], 'checklists': [], 'tags': [], 'parent': None, 'priority': None, 'due_date': None, 'start_date': None, 'points': None, 'time_estimate': None, 'time_spent': 0, 'custom_fields': [], 'dependencies': [], 'linked_tasks': [], 'team_id': '9011010153', 'url': 'https://app.clickup.com/t/8685mw4wq', 'sharing': {'public': False, 'public_share_expires_on': None, 'public_fields': ['assignees', 'priority', 'due_date', 'content', 'comments', 'attachments', 'customFields', 'subtasks', 'tags', 'checklists', 'coverimage'], 'token': None, 'seo_optimized': False}, 'permission_level': 'create', 'list': {'id': '901100754275', 'name': 'Test List', 'access': True}, 'project': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'folder': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'space': {'id': '90110061901'}}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n",
|
|
"Final Answer: A task called 'Test Task - 18/09/2023-10:31:22' with description 'This is a Test' was successfully created.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"A task called 'Test Task - 18/09/2023-10:31:22' with description 'This is a Test' was successfully created.\""
|
|
]
|
|
},
|
|
"execution_count": 27,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"time_str = datetime.now().strftime(\"%d/%m/%Y-%H:%M:%S\")\n",
|
|
"print_and_run(\n",
|
|
" f\"Create a task called 'Test Task - {time_str}' with description 'This is a Test'\"\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Create a list called Test List - 18/09/2023-10:32:12\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to create a list\n",
|
|
"Action: Create List\n",
|
|
"Action Input: {\"name\": \"Test List - 18/09/2023-10:32:12\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m{'id': '901100774700', 'name': 'Test List - 18/09/2023-10:32:12', 'deleted': False, 'orderindex': 13, 'content': '', 'priority': None, 'assignee': None, 'due_date': None, 'start_date': None, 'folder': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'space': {'id': '90110061901', 'name': 'Space', 'access': True}, 'inbound_address': 'a.t.901100774700.u-81928627.20b87d50-eece-4721-b487-9ca500338587@tasks.clickup.com', 'archived': False, 'override_statuses': False, 'statuses': [{'id': 'p90110061901_VlN8IJtk', 'status': 'to do', 'orderindex': 0, 'color': '#87909e', 'type': 'open'}, {'id': 'p90110061901_14GpYKnM', 'status': 'complete', 'orderindex': 1, 'color': '#6bc950', 'type': 'closed'}], 'permission_level': 'create'}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n",
|
|
"Final Answer: The list \"Test List - 18/09/2023-10:32:12\" has been created with id 901100774700.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'The list \"Test List - 18/09/2023-10:32:12\" has been created with id 901100774700.'"
|
|
]
|
|
},
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"time_str = datetime.now().strftime(\"%d/%m/%Y-%H:%M:%S\")\n",
|
|
"print_and_run(f\"Create a list called Test List - {time_str}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Create a folder called 'Test Folder - 18/09/2023-10:32:51'\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to use the Create Folder tool\n",
|
|
"Action: Create Folder\n",
|
|
"Action Input: {\"name\": \"Test Folder - 18/09/2023-10:32:51\"}\u001b[0m\n",
|
|
"Observation: \u001b[38;5;200m\u001b[1;3m{'id': '90110348711', 'name': 'Test Folder - 18/09/2023-10:32:51', 'orderindex': 12, 'override_statuses': False, 'hidden': False, 'space': {'id': '90110061901', 'name': 'Space', 'access': True}, 'task_count': '0', 'archived': False, 'statuses': [], 'lists': [], 'permission_level': 'create'}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I have successfully created the folder\n",
|
|
"Final Answer: The folder 'Test Folder - 18/09/2023-10:32:51' has been successfully created.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"The folder 'Test Folder - 18/09/2023-10:32:51' has been successfully created.\""
|
|
]
|
|
},
|
|
"execution_count": 30,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"time_str = datetime.now().strftime(\"%d/%m/%Y-%H:%M:%S\")\n",
|
|
"print_and_run(f\"Create a folder called 'Test Folder - {time_str}'\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Create a list called 'Test List - 18/09/2023-10:34:01' with content My test list with high priority and status red\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to create a list with the given name, content, priority and status\n",
|
|
"Action: Create List\n",
|
|
"Action Input: {\"name\": \"Test List - 18/09/2023-10:34:01\", \"content\": \"My test list\", \"priority\": 2, \"status\": \"red\"}\u001b[0m\n",
|
|
"Observation: \u001b[33;1m\u001b[1;3m{'id': '901100774746', 'name': 'Test List - 18/09/2023-10:34:01', 'deleted': False, 'orderindex': 15, 'content': '', 'status': {'status': 'red', 'color': '#e50000', 'hide_label': True}, 'priority': {'priority': 'high', 'color': '#ffcc00'}, 'assignee': None, 'due_date': None, 'start_date': None, 'folder': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'space': {'id': '90110061901', 'name': 'Space', 'access': True}, 'inbound_address': 'a.t.901100774746.u-81928627.2ab87133-728e-4166-b2ae-423cc320df37@tasks.clickup.com', 'archived': False, 'override_statuses': False, 'statuses': [{'id': 'p90110061901_VlN8IJtk', 'status': 'to do', 'orderindex': 0, 'color': '#87909e', 'type': 'open'}, {'id': 'p90110061901_14GpYKnM', 'status': 'complete', 'orderindex': 1, 'color': '#6bc950', 'type': 'closed'}], 'permission_level': 'create'}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I have successfully created the list\n",
|
|
"Final Answer: The list 'Test List - 18/09/2023-10:34:01' with content 'My test list' with high priority and status red has been successfully created.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"The list 'Test List - 18/09/2023-10:34:01' with content 'My test list' with high priority and status red has been successfully created.\""
|
|
]
|
|
},
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"time_str = datetime.now().strftime(\"%d/%m/%Y-%H:%M:%S\")\n",
|
|
"print_and_run(\n",
|
|
" f\"Create a list called 'Test List - {time_str}' with content My test list with high priority and status red\"\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Multi-Step Tasks"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\u001b[94m$ COMMAND\u001b[0m\n",
|
|
"Figure out what user ID Rodrigo is, create a task called 'Rod's task', assign it to Rodrigo\n",
|
|
"\n",
|
|
"\u001b[94m$ AGENT\u001b[0m\n",
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
"\u001b[32;1m\u001b[1;3m I need to get the user ID of Rodrigo, create a task, and assign it to Rodrigo\n",
|
|
"Action: Get Teams\n",
|
|
"Action Input: No input necessary\u001b[0m\n",
|
|
"Observation: \u001b[38;5;200m\u001b[1;3m{'teams': [{'id': '9011010153', 'name': 'Task Copilot Sandbox Workspace 1', 'members': [{'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'email': 'rlentini@clickup.com', 'initials': 'RL'}]}]}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now have the user ID of Rodrigo\n",
|
|
"Action: Create Task\n",
|
|
"Action Input: {\"name\": \"Rod's task\", \"assignees\": [81928627]}\u001b[0m"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/Users/rodrigolentini/repos/langchain-clickup/libs/langchain/langchain/utilities/clickup.py:145: UserWarning: Error encountered while trying to parse <class 'langchain_community.utilities.clickup.Task'>: 'NoneType' object is not subscriptable\n",
|
|
" Falling back to returning input data.\n",
|
|
" warnings.warn(f'Error encountered while trying to parse {dataclass}: {e}\\n Falling back to returning input data.')\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"Observation: \u001b[36;1m\u001b[1;3m{'id': '8685mw6dz', 'custom_id': None, 'name': \"Rod's task\", 'text_content': '', 'description': '', 'status': {'id': 'p90110061901_VlN8IJtk', 'status': 'to do', 'color': '#87909e', 'orderindex': 0, 'type': 'open'}, 'orderindex': '24.00000000000000000000000000000000', 'date_created': '1695047740939', 'date_updated': '1695047740939', 'date_closed': None, 'date_done': None, 'archived': False, 'creator': {'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'color': '#c51162', 'email': 'rlentini@clickup.com', 'profilePicture': None}, 'assignees': [{'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'color': '#c51162', 'initials': 'RL', 'email': 'rlentini@clickup.com', 'profilePicture': None}], 'watchers': [{'id': 81928627, 'username': 'Rodrigo Ceballos Lentini', 'color': '#c51162', 'initials': 'RL', 'email': 'rlentini@clickup.com', 'profilePicture': None}], 'checklists': [], 'tags': [], 'parent': None, 'priority': None, 'due_date': None, 'start_date': None, 'points': None, 'time_estimate': None, 'time_spent': 0, 'custom_fields': [], 'dependencies': [], 'linked_tasks': [], 'team_id': '9011010153', 'url': 'https://app.clickup.com/t/8685mw6dz', 'sharing': {'public': False, 'public_share_expires_on': None, 'public_fields': ['assignees', 'priority', 'due_date', 'content', 'comments', 'attachments', 'customFields', 'subtasks', 'tags', 'checklists', 'coverimage'], 'token': None, 'seo_optimized': False}, 'permission_level': 'create', 'list': {'id': '901100754275', 'name': 'Test List', 'access': True}, 'project': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'folder': {'id': '90110336890', 'name': 'Test Folder', 'hidden': False, 'access': True}, 'space': {'id': '90110061901'}}\u001b[0m\n",
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now have the task created and assigned to Rodrigo\n",
|
|
"Final Answer: Rodrigo's user ID is 81928627 and a task called 'Rod's task' has been created and assigned to him.\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished chain.\u001b[0m\n",
|
|
"--------------------------------------------------------------------------------\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\"Rodrigo's user ID is 81928627 and a task called 'Rod's task' has been created and assigned to him.\""
|
|
]
|
|
},
|
|
"execution_count": 34,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"print_and_run(\n",
|
|
" \"Figure out what user ID Rodrigo is, create a task called 'Rod's task', assign it to Rodrigo\"\n",
|
|
")"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|