From 291bace53da442c6ee760dba829e3c6cef529e56 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Wed, 12 Mar 2025 13:50:40 -0400 Subject: [PATCH 01/19] formatting readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 236f468..071bd08 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ It's really helpful to [watch the demo (5 minute YouTube video)](https://www.you ## Setup and Configuration See [the Setup guide](./setup.md). -## Interaction +## Customizing Interaction & Tools TODO ## Architecture @@ -22,6 +22,7 @@ See [the architecture guide](./architecture.md). - Continue-as-new shouldn't be a big consideration for this use case (as it would take many conversational turns to trigger). Regardless, I should ensure that it's able to carry the agent state over to the new workflow execution. - Perhaps the UI should show when the LLM response is being retried (i.e. activity retry attempt because the LLM provided bad output) - Tests would be nice! + See [the todo](./todo.md) for more details. See Customization for more details. <-- TODO From ea1ad383bb5fa0c05a3ab1471bc8b6cacaafbe18 Mon Sep 17 00:00:00 2001 From: Laine Date: Wed, 12 Mar 2025 16:54:13 -0400 Subject: [PATCH 02/19] Add in bare bones yet functional HR goal: goal_hr_schedule_pto --- adding-goals-and-tools.md | 71 ++++++++++++++++++++++++++++++++++ todo.md | 25 ++++++------ tools/__init__.py | 13 +++++++ tools/book_pto.py | 9 +++++ tools/calendar_conflict.py | 17 +++++++++ tools/current_pto.py | 14 +++++++ tools/future_pto.py | 17 +++++++++ tools/goal_registry.py | 78 +++++++++++++++++++++++++++++++------- tools/tool_registry.py | 71 ++++++++++++++++++++++++++++++++++ 9 files changed, 290 insertions(+), 25 deletions(-) create mode 100644 adding-goals-and-tools.md create mode 100644 tools/book_pto.py create mode 100644 tools/calendar_conflict.py create mode 100644 tools/current_pto.py create mode 100644 tools/future_pto.py diff --git a/adding-goals-and-tools.md b/adding-goals-and-tools.md new file mode 100644 index 0000000..57a8517 --- /dev/null +++ b/adding-goals-and-tools.md @@ -0,0 +1,71 @@ +## Customizing the Agent +The agent is set up to allow for multiple goals and to switch back to choosing a new goal at the end of every successful goal. A goal is made up of a list of tools that the agent will guide the user through. + +### Adding a Goal +1. Open [/tools/goal_registry.py](tools/goal_registry.py) - this file contains descriptions of goals and the tools used to achieve them +2. Pick a name for your goal! +3. Fill out the required elements: +- `id`: needs to be the same as the name +- `agent_name`: user-facing name for the agent/chatbot +- `agent_friendly_description`: user-facing description of what the agent/chatbot does +- `tools`: the list of tools the goal will walk the user through. +- Important! The last tool listed must be `list_agents_tool` +- `description`: +- `starter-prompt`: +- `example_conversation_history`: +4. Add your new goal to the `goal_list` at the bottom using `goal_list.append(your_super_sweet_new_goal)` + +### Adding Tools + +#### Add to Tool Registry +- `tool_registry.py` contains the mapping of tool names to tool definitions (so the AI understands how to use them) +- `name`: +- `description`: +- `arguments`: These are the _input_ arguments to the tool. + +#### Create Each Tool +- The tools themselves are defined in their own files in `/tools` - you can add a subfolder to organize them +- The file name and function name will be the same as each other and should also be the same as the name of the tool, without "tool" - so future_pto_tool would be future_pto.py with a function named future_pto within it. +- The function should have `args: dict` as the input and also return a `dict` +- The return dict should match the output format you specified in the goal's `example_conversation_history` + +#### Add to `tools/__init__.py` +- In `tools/__init__.py`, add an import statement for each new tool as well as an applicable return statement in `get_handler`. The tool name here should match the tool name as described in the goal's `description` field. + +### Configuring the Starting Goal + +The agent can be configured to pursue different goals using the `AGENT_GOAL` environment variable in your `.env` file. + +#### Goal: Find an event in Australia / New Zealand, book flights to it and invoice the user for the cost +- `AGENT_GOAL=goal_event_flight_invoice` (default) - Helps users find events, book flights, and arrange train travel with invoice generation + - This is the scenario in the video above + +#### Goal: Find a Premier League match, book train tickets to it and invoice the user for the cost +- `AGENT_GOAL=goal_match_train_invoice` - Focuses on Premier League match attendance with train booking and invoice generation + - This is a new goal that is part of an upcoming conference talk + +If not specified, the agent defaults to `goal_event_flight_invoice`. Each goal comes with its own set of tools and conversation flows designed for specific use cases. You can examine `tools/goal_registry.py` to see the detailed configuration of each goal. + +See the next section for tool configuration for each goal. + +### Configuring Existing Tools + +#### Agent Goal: goal_event_flight_invoice (default) +* The agent uses a mock function to search for events. This has zero configuration. +* By default the agent uses a mock function to search for flights. + * If you want to use the real flights API, go to `tools/search_flights.py` and replace the `search_flights` function with `search_flights_real_api` that exists in the same file. + * It's free to sign up at [RapidAPI](https://rapidapi.com/apiheya/api/sky-scrapper) + * This api might be slow to respond, so you may want to increase the start to close timeout, `TOOL_ACTIVITY_START_TO_CLOSE_TIMEOUT` in `workflows/workflow_helpers.py` +* Requires a Stripe key for the `create_invoice` tool. Set this in the `STRIPE_API_KEY` environment variable in .env + * It's free to sign up and get a key at [Stripe](https://stripe.com/) + * If you're lazy go to `tools/create_invoice.py` and replace the `create_invoice` function with the mock `create_invoice_example` that exists in the same file. + +#### Agent Goal: goal_match_train_invoice + +* Finding a match requires a key from [Football Data](https://www.football-data.org). Sign up for a free account, then see the 'My Account' page to get your API token. Set `FOOTBALL_DATA_API_KEY` to this value. + * If you're lazy go to `tools/search_fixtures.py` and replace the `search_fixtures` function with the mock `search_fixtures_example` that exists in the same file. +* We use a mock function to search for trains. Start the train API server to use the real API: `python thirdparty/train_api.py` +* * The train activity is 'enterprise' so it's written in C# and requires a .NET runtime. See the [.NET backend](#net-(enterprise)-backend) section for details on running it. +* Requires a Stripe key for the `create_invoice` tool. Set this in the `STRIPE_API_KEY` environment variable in .env + * It's free to sign up and get a key at [Stripe](https://stripe.com/) + * If you're lazy go to `tools/create_invoice.py` and replace the `create_invoice` function with the mock `create_invoice_example` that exists in the same file. \ No newline at end of file diff --git a/todo.md b/todo.md index d477f4c..ca4fdb2 100644 --- a/todo.md +++ b/todo.md @@ -13,19 +13,22 @@ [ ] setup readme, why readme, architecture readme, what this is in main readme with temporal value props and pictures
[ ] how to add more scenarios, tools
-
-
+ [ ] create tests
-[ ] create people management scenario
-- check pay status
-- book work travel
-- check PTO levels
-- check insurance coverages
-- book PTO around a date (https://developers.google.com/calendar/api/guides/overview)?
-- scenario should use multiple tools
-- expense management
-- check in on the health of the team
+[ ] create people management scenarios
+[ ] 1. Book PTO +-- check current PTO level
+-- determine PTO available as of date
+-- check for personal calendar conflicts
+-- check for team calendar conflicts
+-- book PTO around a date (send calendar invite?) (https://developers.google.com/calendar/api/guides/overview)?
+[ ] 2. Others: +-- check pay status
+-- book work travel
+-- check insurance coverages
+-- expense management
+-- check in on the health of the team
[ ] demo the reasons why:
- Orchestrate interactions across distributed data stores and tools
diff --git a/tools/__init__.py b/tools/__init__.py index 1ca7da2..89e8f74 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -8,6 +8,11 @@ from .list_agents import list_agents from .change_goal import change_goal from .transfer_control import transfer_control +from .current_pto import current_pto +from .book_pto import book_pto +from .calendar_conflict import calendar_conflict +from .future_pto import future_pto + def get_handler(tool_name: str): if tool_name == "SearchFixtures": @@ -28,5 +33,13 @@ def get_handler(tool_name: str): return change_goal if tool_name == "TransferControl": return transfer_control + if tool_name == "CurrentPTO": + return current_pto + if tool_name == "BookPTO": + return book_pto + if tool_name == "CalendarConflict": + return calendar_conflict + if tool_name == "FuturePTO": + return future_pto raise ValueError(f"Unknown tool: {tool_name}") diff --git a/tools/book_pto.py b/tools/book_pto.py new file mode 100644 index 0000000..4d4b821 --- /dev/null +++ b/tools/book_pto.py @@ -0,0 +1,9 @@ +def book_pto(args: dict) -> dict: + + email = args.get("email") + start_date = args.get("start_date") + end_date = args.get("end_date") + + return { + "status": "success" + } diff --git a/tools/calendar_conflict.py b/tools/calendar_conflict.py new file mode 100644 index 0000000..00b190c --- /dev/null +++ b/tools/calendar_conflict.py @@ -0,0 +1,17 @@ +def calendar_conflict(args: dict) -> dict: + + check_self = args.get("check_self_calendar") + check_team = args.get("check_team_calendar") + + conflict_list = [] + conflict = { + "calendar": "self", + "title": "Meeting with Karen", + "date": "2025-12-02", + "time": "10:00AM", + } + conflict_list.append(conflict) + + return { + "conflicts": conflict_list, + } diff --git a/tools/current_pto.py b/tools/current_pto.py new file mode 100644 index 0000000..b8d2d40 --- /dev/null +++ b/tools/current_pto.py @@ -0,0 +1,14 @@ +def current_pto(args: dict) -> dict: + + email = args.get("email") + if email == "bob.johnson@emailzzz.com": + num_hours = 40 + else: + num_hours = 20 + + num_days = float(num_hours/8) + + return { + "num_hours": num_hours, + "num_days": num_days, + } diff --git a/tools/future_pto.py b/tools/future_pto.py new file mode 100644 index 0000000..eaf9a12 --- /dev/null +++ b/tools/future_pto.py @@ -0,0 +1,17 @@ +def future_pto(args: dict) -> dict: + + start_date = args.get("start_date") + end_date = args.get("end_date") + + # get rate of accrual - need email? + # get total hrs of PTO available as of start date (accrual * time between today and start date) + # take into account other booked PTO?? + # calculate number of business hours of PTO: between start date and end date + + # enough_pto = total PTO as of start date - num biz hours of PTO > 0 + # pto_hrs_remaining_after = total PTO as of start date - num biz hours of PTO + + return { + "enough_pto": True, + "pto_hrs_remaining_after": 410, + } diff --git a/tools/goal_registry.py b/tools/goal_registry.py index 39e2187..ee7dfaf 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -1,6 +1,7 @@ from typing import List from models.tool_definitions import AgentGoal -from tools.tool_registry import ( +import tools.tool_registry as tool_registry +'''from tools.tool_registry import ( search_fixtures_tool, search_flights_tool, search_trains_tool, @@ -8,8 +9,12 @@ from tools.tool_registry import ( create_invoice_tool, find_events_tool, change_goal_tool, - list_agents_tool -) + list_agents_tool, + current_pto_tool, + future_pto_calc_tool, + calendar_conflict_tool, + book_pto_tool, +)''' starter_prompt_generic = "Welcome me, give me a description of what you can do, then ask me for the details you need to do your job" @@ -18,8 +23,8 @@ goal_choose_agent_type = AgentGoal( agent_name="Choose Agent", agent_friendly_description="Choose the type of agent to assist you today.", tools=[ - list_agents_tool, - change_goal_tool, + tool_registry.list_agents_tool, + tool_registry.change_goal_tool, ], description="The user wants to choose which type of agent they will interact with. " "Help the user gather args for these tools, in order: " @@ -46,11 +51,11 @@ goal_match_train_invoice = AgentGoal( agent_name="UK Premier League Match Trip Booking", agent_friendly_description="Book a trip to a city in the UK around the dates of a premier league match.", tools=[ - search_fixtures_tool, - search_trains_tool, - book_trains_tool, - create_invoice_tool, - list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end + tool_registry.search_fixtures_tool, + tool_registry.search_trains_tool, + tool_registry.book_trains_tool, + tool_registry.create_invoice_tool, + tool_registry.list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end ], description="The user wants to book a trip to a city in the UK around the dates of a premier league match. " "Help the user find a premier league match to attend, search and book trains for that match and offers to invoice them for the cost of train tickets. " @@ -93,10 +98,10 @@ goal_event_flight_invoice = AgentGoal( agent_name="Australia and New Zealand Event Flight Booking", agent_friendly_description="Book a trip to a city in Australia or New Zealand around the dates of events in that city.", tools=[ - find_events_tool, - search_flights_tool, - create_invoice_tool, - list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end + tool_registry.find_events_tool, + tool_registry.search_flights_tool, + tool_registry.create_invoice_tool, + tool_registry.list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end ], description="Help the user gather args for these tools in order: " "1. FindEvents: Find an event to travel to " @@ -126,8 +131,53 @@ goal_event_flight_invoice = AgentGoal( ), ) +goal_hr_schedule_pto = AgentGoal( + id = "goal_hr_schedule_pto", + agent_name="Schedule PTO", + agent_friendly_description="Schedule PTO based on your available time, personal calendar, and team calendar.", + tools=[ + tool_registry.current_pto_tool, + tool_registry.future_pto_calc_tool, + tool_registry.calendar_conflict_tool, + tool_registry.book_pto_tool, + tool_registry.list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end + ], + description="Help the user gather args for these tools in order: " + "1. CurrentPTO: Tell the user how much PTO they currently have " + "2. FuturePTO: Tell the user how much PTO they will have as of the prospective date " + "3. CalendarConflict: Tell the user what conflicts if any exist around the prospective date on a list of calendars " + "4. BookPTO: Book PTO ", + starter_prompt=starter_prompt_generic, + example_conversation_history="\n ".join( + [ + "user: I'd like to schedule some time off", + "agent: Sure! Let's start by determining how much PTO you currently have. May I have your email address?", + "user: bob.johnson@emailzzz.com", + "agent: Great! I can tell you how much PTO you currently have accrued.", + "user_confirmed_tool_run: ", + "tool_result: { 'num_hours': 400, 'num_days': 50 }", + "agent: You have 400 hours, or 50 days, of PTO available. What dates would you like to take your time off? ", + "user: Dec 1 2025 through Dec 5 2025", + "agent: Let's check if you'll have enough PTO accrued by Dec 1 to accomodate that.", + "user_confirmed_tool_run: " + 'tool_result: {"enough_pto": True, "pto_hrs_remaining_after": 410}', + "agent: You do in fact have enough PTO to accommodate that, and will have 410 hours remaining after you come back. Do you want to check calendars for conflicts? If so, please provide one of the following: self, team, or both " + "user: both ", + "agent: Okay, checking both calendars for conflicts ", + "user_confirmed_tool_run: ", + 'tool_result: { "calendar": "self", "title": "Meeting with Karen", "date": "2025-12-02", "time": "10:00AM"}', + "agent: On your calendar, you have a conflict: Meeting with Karen at 10AM Dec 2, 2025. Do you want to book the PTO?" + "user: yes " + "user_confirmed_tool_run: ", + 'tool_result: { "status": "success" }', + "agent: PTO successfully booked! Would you like to speak to another agent? ", + ] + ), +) + #Add the goals to a list for more generic processing, like listing available agents goal_list: List[AgentGoal] = [] goal_list.append(goal_choose_agent_type) goal_list.append(goal_event_flight_invoice) goal_list.append(goal_match_train_invoice) +goal_list.append(goal_hr_schedule_pto) diff --git a/tools/tool_registry.py b/tools/tool_registry.py index f80aa8b..c438282 100644 --- a/tools/tool_registry.py +++ b/tools/tool_registry.py @@ -142,3 +142,74 @@ find_events_tool = ToolDefinition( ), ], ) + +current_pto_tool = ToolDefinition( + name="CurrentPTO", + description="Find how much PTO a user currently has accrued. " + "Returns the number of hours and (calculated) number of days of PTO. ", + arguments=[ + ToolArgument( + name="email", + type="string", + description="name of user, used to look up current PTO", + ), + ], +) + +future_pto_calc_tool = ToolDefinition( + name="FuturePTO", + description="Calculate if the user will have enough PTO as of their proposed date to accommodate the request. Returns a boolean enough_pto and " + "how many hours of PTO they will have if they take the proposed dates. ", + arguments=[ + ToolArgument( + name="start_date", + type="string", + description="Start date of proposed PTO", + ), + ToolArgument( + name="end_date", + type="string", + description="End date of proposed PTO", + ), + ], +) + +calendar_conflict_tool = ToolDefinition( + name="CalendarConflict", + description="Determine if the proposed PTO date(s) have conflicts. Returns list of conflicts. ", + arguments=[ + ToolArgument( + name="check_self_calendar", + type="boolean", + description="Check self calendar for conflicts?", + ), + ToolArgument( + name="check_team_calendar", + type="boolean", + description="Check team calendar for conflicts?", + ), + ], +) + +book_pto_tool = ToolDefinition( + name="BookPTO", + description="Book PTO start and end date. Either 1) makes calendar item, or 2) sends calendar invite to self and boss? " + "Returns a success indicator. ", + arguments=[ + ToolArgument( + name="start_date", + type="string", + description="Start date of proposed PTO", + ), + ToolArgument( + name="end_date", + type="string", + description="End date of proposed PTO", + ), + ToolArgument( + name="email", + type="string", + description="Email address of user, used to look up current PTO", + ), + ], +) \ No newline at end of file From 02473bb49ee091ad2e9c596439bc1ce080e904b9 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Thu, 13 Mar 2025 11:29:13 -0400 Subject: [PATCH 03/19] todo and readme updates --- README.md | 1 + todo.md | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 071bd08..f40bcd4 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ See [the architecture guide](./architecture.md). ## Productionalization & Adding Features - In a prod setting, I would need to ensure that payload data is stored separately (e.g. in S3 or a noSQL db - the claim-check pattern), or otherwise 'garbage collected'. Without these techniques, long conversations will fill up the workflow's conversation history, and start to breach Temporal event history payload limits. +- A single worker can easily support many workflows - setting workflow ID differently would enable this - Continue-as-new shouldn't be a big consideration for this use case (as it would take many conversational turns to trigger). Regardless, I should ensure that it's able to carry the agent state over to the new workflow execution. - Perhaps the UI should show when the LLM response is being retried (i.e. activity retry attempt because the LLM provided bad output) - Tests would be nice! diff --git a/todo.md b/todo.md index d477f4c..b779522 100644 --- a/todo.md +++ b/todo.md @@ -1,7 +1,8 @@ # todo list [ ] clean up workflow/make functions -[ ] make the debugging confirms optional
+[x] make the debugging confirms optional
+[ ] add confirmation env setting to setup guide

[ ] document *why* temporal for ai agents - scalability, durability, visibility in the readme
[ ] fix readme: move setup to its own page, demo to its own page, add the why /|\ section
From 5c3bfcf957d7d8925d5cd9bff79e6a3a707cbbbc Mon Sep 17 00:00:00 2001 From: Laine Date: Thu, 13 Mar 2025 11:33:38 -0400 Subject: [PATCH 04/19] Add source mocked data file, make current_pto tool functional, rename future_pto to future_pto_calc --- adding-goals-and-tools.md | 11 ++++++++ todo.md | 14 +++++----- tools/__init__.py | 6 ++--- tools/current_pto.py | 30 ++++++++++++++------- tools/data/employee_pto_data.json | 18 +++++++++++++ tools/{future_pto.py => future_pto_calc.py} | 2 +- tools/goal_registry.py | 7 ++--- tools/tool_registry.py | 2 +- 8 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 tools/data/employee_pto_data.json rename tools/{future_pto.py => future_pto_calc.py} (93%) diff --git a/adding-goals-and-tools.md b/adding-goals-and-tools.md index 57a8517..c20802d 100644 --- a/adding-goals-and-tools.md +++ b/adding-goals-and-tools.md @@ -17,6 +17,17 @@ The agent is set up to allow for multiple goals and to switch back to choosing a ### Adding Tools +#### Notes +Tools can be optional - you can indicate this in the tool listing of goal description (see above section re: goal registry) by adding something like, "This step is optional and can be skipped by moving to the next tool." Here is an example from the CalendarConflict tool/step of the [goal_hr_schedule_pto](tools/goal_registry.py#L134) goal: + +``` +description="Help the user gather args for these tools in order: " + "1. CurrentPTO: Tell the user how much PTO they currently have " + "2. FuturePTO: Tell the user how much PTO they will have as of the prospective date " + "3. CalendarConflict: Tell the user what conflicts if any exist around the prospective date on a list of calendars. This step is optional and can be skipped by moving to the next tool. " + "4. BookPTO: Book PTO " +``` + #### Add to Tool Registry - `tool_registry.py` contains the mapping of tool names to tool definitions (so the AI understands how to use them) - `name`: diff --git a/todo.md b/todo.md index ca4fdb2..81aecbc 100644 --- a/todo.md +++ b/todo.md @@ -17,12 +17,11 @@ [ ] create tests
[ ] create people management scenarios
-[ ] 1. Book PTO --- check current PTO level
--- determine PTO available as of date
--- check for personal calendar conflicts
--- check for team calendar conflicts
--- book PTO around a date (send calendar invite?) (https://developers.google.com/calendar/api/guides/overview)?
+[x] 1. Schedule PTO goal +-- [ ] check current PTO level
+-- [ ] determine PTO available as of date
+-- [ ] check for personal, team, or both calendar conflicts
+-- [ ] book PTO around a date (send calendar invite?) (https://developers.google.com/calendar/api/guides/overview)?
[ ] 2. Others: -- check pay status
-- book work travel
@@ -45,4 +44,5 @@ [ ] non-retry the api key error - "Invalid API Key provided: sk_test_**J..." and "AuthenticationError"
[ ] make it so you can yeet yourself out of a goal and pick a new one
-[ ] add visual feedback when workflow starting \ No newline at end of file +[ ] add visual feedback when workflow starting
+[ ] figure out how to allow user to list agents at any time - like end conversation
\ No newline at end of file diff --git a/tools/__init__.py b/tools/__init__.py index 89e8f74..ea8a0a8 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -11,7 +11,7 @@ from .transfer_control import transfer_control from .current_pto import current_pto from .book_pto import book_pto from .calendar_conflict import calendar_conflict -from .future_pto import future_pto +from .future_pto_calc import future_pto_calc def get_handler(tool_name: str): @@ -39,7 +39,7 @@ def get_handler(tool_name: str): return book_pto if tool_name == "CalendarConflict": return calendar_conflict - if tool_name == "FuturePTO": - return future_pto + if tool_name == "FuturePTOCalc": + return future_pto_calc raise ValueError(f"Unknown tool: {tool_name}") diff --git a/tools/current_pto.py b/tools/current_pto.py index b8d2d40..9e56248 100644 --- a/tools/current_pto.py +++ b/tools/current_pto.py @@ -1,14 +1,26 @@ +from pathlib import Path +import json + + def current_pto(args: dict) -> dict: email = args.get("email") - if email == "bob.johnson@emailzzz.com": - num_hours = 40 - else: - num_hours = 20 - num_days = float(num_hours/8) + file_path = Path(__file__).resolve().parent / "data" / "employee_pto_data.json" + if not file_path.exists(): + return {"error": "Data file not found."} + + data = json.load(open(file_path)) + employee_list = data["theCompany"]["employees"] - return { - "num_hours": num_hours, - "num_days": num_days, - } + for employee in employee_list: + if employee["email"] == email: + num_hours = int(employee["currentPTOHrs"]) + num_days = float(num_hours/8) + return { + "num_hours": num_hours, + "num_days": num_days, + } + + return_msg = "Employee not found with email address " + email + return {"error": return_msg} \ No newline at end of file diff --git a/tools/data/employee_pto_data.json b/tools/data/employee_pto_data.json new file mode 100644 index 0000000..bc41ab0 --- /dev/null +++ b/tools/data/employee_pto_data.json @@ -0,0 +1,18 @@ +{ + "theCompany": { + "weLove": "theCompany", + "accrualPer": "month", + "employees": [ + { + "email": "josh.smith@temporal.io", + "currentPTOHrs": 400, + "accrualHrsRate": 8 + }, + { + "email": "laine.smith@awesome.com", + "currentPTOHrs": 40, + "accrualHrsRate": 12 + } + ] + } +} \ No newline at end of file diff --git a/tools/future_pto.py b/tools/future_pto_calc.py similarity index 93% rename from tools/future_pto.py rename to tools/future_pto_calc.py index eaf9a12..3ae81e2 100644 --- a/tools/future_pto.py +++ b/tools/future_pto_calc.py @@ -1,4 +1,4 @@ -def future_pto(args: dict) -> dict: +def future_pto_calc(args: dict) -> dict: start_date = args.get("start_date") end_date = args.get("end_date") diff --git a/tools/goal_registry.py b/tools/goal_registry.py index ee7dfaf..015aaf1 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -131,6 +131,7 @@ goal_event_flight_invoice = AgentGoal( ), ) +# This goal uses the data/employee_pto_data.json file as dummy data. goal_hr_schedule_pto = AgentGoal( id = "goal_hr_schedule_pto", agent_name="Schedule PTO", @@ -144,8 +145,8 @@ goal_hr_schedule_pto = AgentGoal( ], description="Help the user gather args for these tools in order: " "1. CurrentPTO: Tell the user how much PTO they currently have " - "2. FuturePTO: Tell the user how much PTO they will have as of the prospective date " - "3. CalendarConflict: Tell the user what conflicts if any exist around the prospective date on a list of calendars " + "2. FuturePTOCalc: Tell the user how much PTO they will have as of the prospective date " + "3. CalendarConflict: Tell the user what conflicts if any exist around the prospective date on a list of calendars. This step is optional and can be skipped by moving to the next tool. " "4. BookPTO: Book PTO ", starter_prompt=starter_prompt_generic, example_conversation_history="\n ".join( @@ -170,7 +171,7 @@ goal_hr_schedule_pto = AgentGoal( "user: yes " "user_confirmed_tool_run: ", 'tool_result: { "status": "success" }', - "agent: PTO successfully booked! Would you like to speak to another agent? ", + "agent: PTO successfully booked! ", ] ), ) diff --git a/tools/tool_registry.py b/tools/tool_registry.py index c438282..28a3345 100644 --- a/tools/tool_registry.py +++ b/tools/tool_registry.py @@ -157,7 +157,7 @@ current_pto_tool = ToolDefinition( ) future_pto_calc_tool = ToolDefinition( - name="FuturePTO", + name="FuturePTOCalc", description="Calculate if the user will have enough PTO as of their proposed date to accommodate the request. Returns a boolean enough_pto and " "how many hours of PTO they will have if they take the proposed dates. ", arguments=[ From 943f8dc187c630ae251919cba7223288791ad31c Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Thu, 13 Mar 2025 11:54:04 -0400 Subject: [PATCH 05/19] readme updates --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f40bcd4..e33bd52 100644 --- a/README.md +++ b/README.md @@ -12,21 +12,21 @@ It's really helpful to [watch the demo (5 minute YouTube video)](https://www.you See [the Setup guide](./setup.md). ## Customizing Interaction & Tools -TODO +See [the guide to adding goals and tools](./adding-goals-and-tools.md). ## Architecture See [the architecture guide](./architecture.md). ## Productionalization & Adding Features - In a prod setting, I would need to ensure that payload data is stored separately (e.g. in S3 or a noSQL db - the claim-check pattern), or otherwise 'garbage collected'. Without these techniques, long conversations will fill up the workflow's conversation history, and start to breach Temporal event history payload limits. -- A single worker can easily support many workflows - setting workflow ID differently would enable this -- Continue-as-new shouldn't be a big consideration for this use case (as it would take many conversational turns to trigger). Regardless, I should ensure that it's able to carry the agent state over to the new workflow execution. +- A single worker can easily support many workflows - setting workflow ID differently would enable this. +- Continue-as-new shouldn't be a big consideration for this use case (as it would take many conversational turns to trigger). Regardless, we should verify that it's able to carry the agent state over to the new workflow execution. - Perhaps the UI should show when the LLM response is being retried (i.e. activity retry attempt because the LLM provided bad output) -- Tests would be nice! +- Tests would be nice! [See tests](./tests/). See [the todo](./todo.md) for more details. -See Customization for more details. <-- TODO +See [the guide to adding goals and tools](./adding-goals-and-tools.md) for more ways you can add features. ## For Temporal SAs Check out the [slides](https://docs.google.com/presentation/d/1wUFY4v17vrtv8llreKEBDPLRtZte3FixxBUn0uWy5NU/edit#slide=id.g3333e5deaa9_0_0) here and the enablement guide here (TODO). From 42641fe124e71abc8b0cbf7774331ad156bd4136 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Thu, 13 Mar 2025 11:55:33 -0400 Subject: [PATCH 06/19] doc updates --- adding-goals-and-tools.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/adding-goals-and-tools.md b/adding-goals-and-tools.md index c20802d..c878229 100644 --- a/adding-goals-and-tools.md +++ b/adding-goals-and-tools.md @@ -1,6 +1,8 @@ ## Customizing the Agent The agent is set up to allow for multiple goals and to switch back to choosing a new goal at the end of every successful goal. A goal is made up of a list of tools that the agent will guide the user through. +It may be helpful to review the [architecture](./architecture.md) for a guide and definition of goals, tools, etc. + ### Adding a Goal 1. Open [/tools/goal_registry.py](tools/goal_registry.py) - this file contains descriptions of goals and the tools used to achieve them 2. Pick a name for your goal! From 232d901054480a4088ad2d715890cd5778db705b Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Thu, 13 Mar 2025 12:15:47 -0400 Subject: [PATCH 07/19] adding why temporal section to readme --- README.md | 20 ++++++++++++++++++++ todo.md | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e33bd52..7650d7d 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,26 @@ It's really helpful to [watch the demo (5 minute YouTube video)](https://www.you [![Watch the demo](./assets/agent-youtube-screenshot.jpeg)](https://www.youtube.com/watch?v=GEXllEH2XiQ) +## Why Temporal? +There are a lot of AI and Agentic AI tools out there, and more on the way. But why Temporal? I asked one of the AI models used in this demo to answer this question (edited minorly): + +### Reliability and State Management: + Temporal ensures durability and fault tolerance, which are critical for agentic AI systems that involve long-running, complex workflows. For example, it preserves application state across failures, allowing AI agents to resume from where they left off without losing progress. Major AI companies use this for research experiments and agentic flows, where reliability is essential for continuous exploration. +### Handling Complex, Dynamic Workflows: +Agentic AI often involves unpredictable, multi-step processes like web crawling or data searching. Temporal’s workflow orchestration simplifies managing these tasks by abstracting complexity, providing features like retries, timeouts, and signals/queries. Temporal makes observability and resuming failed complex experiments and deep searches simple. +### Scalability and Speed: +Temporal enables rapid development and scaling, crucial for AI systems handling large-scale experiments or production workloads. AI model deployment and SRE teams use it to get code to production quickly with scale as a focus, while research teams can (and do!) run hundreds of experiments daily. Temporal customers report a significant reduction in development time (e.g., 20 weeks to 2 weeks for a feature). +### Observability and Debugging: +Agentic AI systems need insight into where processes succeed or fail. Temporal provides end-to-end visibility and durable workflow history, which Temporal customers are using to track agentic flows and understand failure points. +### Simplified Error Handling: +Temporal abstracts failure management (e.g., retries, rollbacks) so developers can focus on AI logic rather than "plumbing" code. This is vital for agentic AI, where external interactions (e.g., APIs, data sources) are prone to failure. +### Flexibility for Experimentation: +For research-heavy agentic AI, Temporal supports dynamic, code-first workflows and easy integration of new signals/queries, aligning with researchers needs to iterate quickly on experimental paths. + +In essence, Temporal’s value lies in its ability to make agentic AI systems more reliable, scalable, and easier to develop by handling the underlying complexity of distributed workflows for both research and applied AI tasks. + +Temporal was built to solve the problems of distributed computing, including scalability, reliability, security, visibility, and complexity. Agentic AI systems are complex distributed systems, so Temporal should fit well. Scaling, security, and productionalization are major pain points in March 2025 for building agentic systems. + ## Setup and Configuration See [the Setup guide](./setup.md). diff --git a/todo.md b/todo.md index b8e1f5e..624805e 100644 --- a/todo.md +++ b/todo.md @@ -4,7 +4,7 @@ [x] make the debugging confirms optional
[ ] add confirmation env setting to setup guide

-[ ] document *why* temporal for ai agents - scalability, durability, visibility in the readme
+[x] document *why* temporal for ai agents - scalability, durability, visibility in the readme
[ ] fix readme: move setup to its own page, demo to its own page, add the why /|\ section
[ ] add architecture to readme
- elements of app
From a7a90c32894eddfca6b0f82ea2bca04eb89aaaf1 Mon Sep 17 00:00:00 2001 From: Laine Date: Thu, 13 Mar 2025 14:19:13 -0400 Subject: [PATCH 08/19] Add functionality to future_pto_calc, remove calendar_conflict step from goal --- adding-goals-and-tools.md | 2 +- tools/__init__.py | 3 -- tools/calendar_conflict.py | 17 -------- tools/data/employee_pto_data.json | 5 +-- tools/future_pto_calc.py | 64 +++++++++++++++++++++++++------ tools/goal_registry.py | 37 +++++------------- tools/tool_registry.py | 16 ++++++-- 7 files changed, 78 insertions(+), 66 deletions(-) delete mode 100644 tools/calendar_conflict.py diff --git a/adding-goals-and-tools.md b/adding-goals-and-tools.md index c20802d..11f8f5e 100644 --- a/adding-goals-and-tools.md +++ b/adding-goals-and-tools.md @@ -9,7 +9,7 @@ The agent is set up to allow for multiple goals and to switch back to choosing a - `agent_name`: user-facing name for the agent/chatbot - `agent_friendly_description`: user-facing description of what the agent/chatbot does - `tools`: the list of tools the goal will walk the user through. -- Important! The last tool listed must be `list_agents_tool` +- Important! The last tool listed must be `list_agents_tool`. This allows the AI to let the user go back to choosing from the list of available goals. - `description`: - `starter-prompt`: - `example_conversation_history`: diff --git a/tools/__init__.py b/tools/__init__.py index ea8a0a8..b37b867 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -10,7 +10,6 @@ from .transfer_control import transfer_control from .current_pto import current_pto from .book_pto import book_pto -from .calendar_conflict import calendar_conflict from .future_pto_calc import future_pto_calc @@ -37,8 +36,6 @@ def get_handler(tool_name: str): return current_pto if tool_name == "BookPTO": return book_pto - if tool_name == "CalendarConflict": - return calendar_conflict if tool_name == "FuturePTOCalc": return future_pto_calc diff --git a/tools/calendar_conflict.py b/tools/calendar_conflict.py deleted file mode 100644 index 00b190c..0000000 --- a/tools/calendar_conflict.py +++ /dev/null @@ -1,17 +0,0 @@ -def calendar_conflict(args: dict) -> dict: - - check_self = args.get("check_self_calendar") - check_team = args.get("check_team_calendar") - - conflict_list = [] - conflict = { - "calendar": "self", - "title": "Meeting with Karen", - "date": "2025-12-02", - "time": "10:00AM", - } - conflict_list.append(conflict) - - return { - "conflicts": conflict_list, - } diff --git a/tools/data/employee_pto_data.json b/tools/data/employee_pto_data.json index bc41ab0..1f31a26 100644 --- a/tools/data/employee_pto_data.json +++ b/tools/data/employee_pto_data.json @@ -1,17 +1,16 @@ { "theCompany": { "weLove": "theCompany", - "accrualPer": "month", "employees": [ { "email": "josh.smith@temporal.io", "currentPTOHrs": 400, - "accrualHrsRate": 8 + "hrsAddedPerMonth": 8 }, { "email": "laine.smith@awesome.com", "currentPTOHrs": 40, - "accrualHrsRate": 12 + "hrsAddedPerMonth": 12 } ] } diff --git a/tools/future_pto_calc.py b/tools/future_pto_calc.py index 3ae81e2..b4e557b 100644 --- a/tools/future_pto_calc.py +++ b/tools/future_pto_calc.py @@ -1,17 +1,57 @@ +import json +import pandas +from pathlib import Path +from datetime import date, datetime +from dateutil.relativedelta import relativedelta + + def future_pto_calc(args: dict) -> dict: - start_date = args.get("start_date") - end_date = args.get("end_date") + file_path = Path(__file__).resolve().parent / "data" / "employee_pto_data.json" + if not file_path.exists(): + return {"error": "Data file not found."} + + start_date = datetime.strptime(args.get("start_date"), "%Y-%m-%d").date() + end_date = datetime.strptime(args.get("end_date"), "%Y-%m-%d").date() + email = args.get("email") - # get rate of accrual - need email? - # get total hrs of PTO available as of start date (accrual * time between today and start date) - # take into account other booked PTO?? - # calculate number of business hours of PTO: between start date and end date + #Next, set up the ability to calculate how much PTO will be added to the user's total by the start of the PTO request + today = date.today() - # enough_pto = total PTO as of start date - num biz hours of PTO > 0 - # pto_hrs_remaining_after = total PTO as of start date - num biz hours of PTO + if today > start_date: + return_msg = "PTO start date " + args.get("start_date") + "cannot be in the past" + return {"error": return_msg} + + if end_date < start_date: + return_msg = "PTO end date " + args.get("end_date") + " must be after PTO start date " + args.get("start_date") + return {"error": return_msg} + + #Get the number of business days, and then business hours (assume 8 hr biz day), included in the PTO request + biz_days_of_request = len(pandas.bdate_range(start=start_date, end=end_date, inclusive="both")) + biz_hours_of_request = biz_days_of_request * 8 + + #Assume PTO is added on the first of every month - month math compares rolling dates, so compare the PTO request with the first day of the current month. + today_first_of_month = date(today.year, today.month, 1) + time_difference = relativedelta(start_date, today_first_of_month) + months_to_accrue = time_difference.years * 12 + time_difference.months + + data = json.load(open(file_path)) + employee_list = data["theCompany"]["employees"] - return { - "enough_pto": True, - "pto_hrs_remaining_after": 410, - } + enough_pto = False + + for employee in employee_list: + if employee["email"] == email: + current_pto_hours = int(employee["currentPTOHrs"]) + hrs_added_per_month = int(employee["hrsAddedPerMonth"]) + pto_available_at_start = current_pto_hours + (months_to_accrue * hrs_added_per_month) + pto_hrs_remaining_after = pto_available_at_start - biz_hours_of_request + if pto_hrs_remaining_after >= 0: + enough_pto = True + return { + "enough_pto": enough_pto, + "pto_hrs_remaining_after": str(pto_hrs_remaining_after), + } + + return_msg = "Employee not found with email address " + email + return {"error": return_msg} diff --git a/tools/goal_registry.py b/tools/goal_registry.py index 015aaf1..6ffa293 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -1,22 +1,8 @@ from typing import List from models.tool_definitions import AgentGoal import tools.tool_registry as tool_registry -'''from tools.tool_registry import ( - search_fixtures_tool, - search_flights_tool, - search_trains_tool, - book_trains_tool, - create_invoice_tool, - find_events_tool, - change_goal_tool, - list_agents_tool, - current_pto_tool, - future_pto_calc_tool, - calendar_conflict_tool, - book_pto_tool, -)''' -starter_prompt_generic = "Welcome me, give me a description of what you can do, then ask me for the details you need to do your job" +starter_prompt_generic = "Welcome me, give me a description of what you can do, then ask me for the details you need to do your job. " goal_choose_agent_type = AgentGoal( id = "goal_choose_agent_type", @@ -28,14 +14,13 @@ goal_choose_agent_type = AgentGoal( ], description="The user wants to choose which type of agent they will interact with. " "Help the user gather args for these tools, in order: " - "1. ListAgents: List agents available to interact with " + "1. ListAgents: List agents available to interact with. Do not ask for user confirmation for this tool. " "2. ChangeGoal: Change goal of agent " "After these tools are complete, change your goal to the new goal as chosen by the user. ", - starter_prompt=starter_prompt_generic, + starter_prompt=starter_prompt_generic + "Begin by providing the output for the first tool included in this goal. ", example_conversation_history="\n ".join( [ - "user: I'd like to choose an agent", - "agent: Sure! Would you like me to list the available agents?", + "agent: Here are the currently available agents.", "user_confirmed_tool_run: ", "tool_result: { 'agent_name': 'Event Flight Finder', 'goal_id': 'goal_event_flight_invoice', 'agent_description': 'Helps users find interesting events and arrange travel to them' }", "agent: The available agents are: 1. Event Flight Finder. Which agent would you like to speak to?", @@ -135,19 +120,17 @@ goal_event_flight_invoice = AgentGoal( goal_hr_schedule_pto = AgentGoal( id = "goal_hr_schedule_pto", agent_name="Schedule PTO", - agent_friendly_description="Schedule PTO based on your available time, personal calendar, and team calendar.", + agent_friendly_description="Schedule PTO based on your available PTO.", tools=[ tool_registry.current_pto_tool, tool_registry.future_pto_calc_tool, - tool_registry.calendar_conflict_tool, tool_registry.book_pto_tool, tool_registry.list_agents_tool, #last tool must be list_agents to fasciliate changing back to picking an agent again at the end ], - description="Help the user gather args for these tools in order: " + description="The user wants to schedule paid time off (PTO) after today's date. To assist with that goal, help the user gather args for these tools in order: " "1. CurrentPTO: Tell the user how much PTO they currently have " - "2. FuturePTOCalc: Tell the user how much PTO they will have as of the prospective date " - "3. CalendarConflict: Tell the user what conflicts if any exist around the prospective date on a list of calendars. This step is optional and can be skipped by moving to the next tool. " - "4. BookPTO: Book PTO ", + "2. FuturePTOCalc: Tell the user how much PTO they will have as of the prospective future date " + "3. BookPTO: Book PTO after user types 'yes'", starter_prompt=starter_prompt_generic, example_conversation_history="\n ".join( [ @@ -158,8 +141,8 @@ goal_hr_schedule_pto = AgentGoal( "user_confirmed_tool_run: ", "tool_result: { 'num_hours': 400, 'num_days': 50 }", "agent: You have 400 hours, or 50 days, of PTO available. What dates would you like to take your time off? ", - "user: Dec 1 2025 through Dec 5 2025", - "agent: Let's check if you'll have enough PTO accrued by Dec 1 to accomodate that.", + "user: Dec 1 through Dec 5", + "agent: Let's check if you'll have enough PTO accrued by Dec 1 of this year to accomodate that.", "user_confirmed_tool_run: " 'tool_result: {"enough_pto": True, "pto_hrs_remaining_after": 410}', "agent: You do in fact have enough PTO to accommodate that, and will have 410 hours remaining after you come back. Do you want to check calendars for conflicts? If so, please provide one of the following: self, team, or both " diff --git a/tools/tool_registry.py b/tools/tool_registry.py index 28a3345..e641ae3 100644 --- a/tools/tool_registry.py +++ b/tools/tool_registry.py @@ -151,15 +151,15 @@ current_pto_tool = ToolDefinition( ToolArgument( name="email", type="string", - description="name of user, used to look up current PTO", + description="email address of user", ), ], ) future_pto_calc_tool = ToolDefinition( name="FuturePTOCalc", - description="Calculate if the user will have enough PTO as of their proposed date to accommodate the request. Returns a boolean enough_pto and " - "how many hours of PTO they will have if they take the proposed dates. ", + description="Calculate if the user will have enough PTO as of their proposed date to accommodate the request. The proposed start and end dates should be in the future. " + "Returns a boolean enough_pto and how many hours of PTO they will have remaining if they take the proposed dates. ", arguments=[ ToolArgument( name="start_date", @@ -171,6 +171,11 @@ future_pto_calc_tool = ToolDefinition( type="string", description="End date of proposed PTO", ), + ToolArgument( + name="email", + type="string", + description="email address of user", + ), ], ) @@ -211,5 +216,10 @@ book_pto_tool = ToolDefinition( type="string", description="Email address of user, used to look up current PTO", ), + ToolArgument( + name="userConfirmation", + type="string", + description="Indication of user's desire to book PTO", + ), ], ) \ No newline at end of file From ece3ac1d3c44de50cff1a12d3d3bf0d22221e6f0 Mon Sep 17 00:00:00 2001 From: Laine Date: Thu, 13 Mar 2025 14:53:03 -0400 Subject: [PATCH 09/19] Add the category tag to the goals and example env file, and filter the results based on tags in list_agents --- .env.example | 7 +++++-- models/tool_definitions.py | 1 + tools/goal_registry.py | 4 ++++ tools/list_agents.py | 28 ++++++++++++++++++++++------ 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index 4701495..ad5cffd 100644 --- a/.env.example +++ b/.env.example @@ -35,8 +35,11 @@ OPENAI_API_KEY=sk-proj-... # Uncomment if using API key (not needed for local dev server) # TEMPORAL_API_KEY=abcdef1234567890 -# Agent Goal Configuration -# AGENT_GOAL=goal_event_flight_invoice # (default) or goal_match_train_invoice +# Set starting goal of agent +AGENT_GOAL=goal_choose_agent_type # (default) + +#Choose which category(ies) of goals you want to be listed by the Agent - options are system (always included), hr, travel, or all. +GOAL_CATEGORIES=hr,travel # default is all # Set if the UI should force a user confirmation step or not SHOW_CONFIRM=True \ No newline at end of file diff --git a/models/tool_definitions.py b/models/tool_definitions.py index 76d9ab3..59cf27b 100644 --- a/models/tool_definitions.py +++ b/models/tool_definitions.py @@ -18,6 +18,7 @@ class ToolDefinition: @dataclass class AgentGoal: id: str + category_tag: str agent_name: str agent_friendly_description: str tools: List[ToolDefinition] diff --git a/tools/goal_registry.py b/tools/goal_registry.py index 6ffa293..055fee3 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -6,6 +6,7 @@ starter_prompt_generic = "Welcome me, give me a description of what you can do, goal_choose_agent_type = AgentGoal( id = "goal_choose_agent_type", + category_tag="system", agent_name="Choose Agent", agent_friendly_description="Choose the type of agent to assist you today.", tools=[ @@ -33,6 +34,7 @@ goal_choose_agent_type = AgentGoal( goal_match_train_invoice = AgentGoal( id = "goal_match_train_invoice", + category_tag="travel", agent_name="UK Premier League Match Trip Booking", agent_friendly_description="Book a trip to a city in the UK around the dates of a premier league match.", tools=[ @@ -80,6 +82,7 @@ goal_match_train_invoice = AgentGoal( goal_event_flight_invoice = AgentGoal( id = "goal_event_flight_invoice", + category_tag="travel", agent_name="Australia and New Zealand Event Flight Booking", agent_friendly_description="Book a trip to a city in Australia or New Zealand around the dates of events in that city.", tools=[ @@ -119,6 +122,7 @@ goal_event_flight_invoice = AgentGoal( # This goal uses the data/employee_pto_data.json file as dummy data. goal_hr_schedule_pto = AgentGoal( id = "goal_hr_schedule_pto", + category_tag="hr", agent_name="Schedule PTO", agent_friendly_description="Schedule PTO based on your available PTO.", tools=[ diff --git a/tools/list_agents.py b/tools/list_agents.py index 1fc56f3..ba9aa20 100644 --- a/tools/list_agents.py +++ b/tools/list_agents.py @@ -1,16 +1,32 @@ +import os import tools.goal_registry as goals def list_agents(args: dict) -> dict: + goal_categories_start = os.getenv("GOAL_CATEGORIES") + if goal_categories_start is None: + goal_categories = ["all"] # default to 'all' categories + else: + goal_categories_start.strip().lower() # handle extra spaces or non-lowercase + goal_categories = goal_categories_start.split(",") + + # always show goals labeled as "system," like the goal chooser + if "system" not in goal_categories: + goal_categories.append("system") + agents = [] if goals.goal_list is not None: for goal in goals.goal_list: - agents.append( - { - "agent_name": goal.agent_name, - "goal_id": goal.id, - "agent_description": goal.agent_friendly_description, - } + # add to list if either + # - all + # - current goal's tag is in goal_categories + if "all" in goal_categories or goal.category_tag in goal_categories: + agents.append( + { + "agent_name": goal.agent_name, + "goal_id": goal.id, + "agent_description": goal.agent_friendly_description, + } ) return { "agents": agents, From 4cfe472ca0996ddf4721565a1d4705c6392fb21c Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:10:43 -0400 Subject: [PATCH 10/19] notes about tools --- adding-goals-and-tools.md | 1 + 1 file changed, 1 insertion(+) diff --git a/adding-goals-and-tools.md b/adding-goals-and-tools.md index c878229..e1f4437 100644 --- a/adding-goals-and-tools.md +++ b/adding-goals-and-tools.md @@ -41,6 +41,7 @@ description="Help the user gather args for these tools in order: " - The file name and function name will be the same as each other and should also be the same as the name of the tool, without "tool" - so future_pto_tool would be future_pto.py with a function named future_pto within it. - The function should have `args: dict` as the input and also return a `dict` - The return dict should match the output format you specified in the goal's `example_conversation_history` +- tools are where the user input+model output becomes deterministic. Add validation here to make sure what the system is doing is valid and acceptable #### Add to `tools/__init__.py` - In `tools/__init__.py`, add an import statement for each new tool as well as an applicable return statement in `get_handler`. The tool name here should match the tool name as described in the goal's `description` field. From 72fe6384852c3c15402a991caf1449ec6e4eacc1 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:11:33 -0400 Subject: [PATCH 11/19] more notes about tools --- architecture.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/architecture.md b/architecture.md index f1a5d7b..a97c02d 100644 --- a/architecture.md +++ b/architecture.md @@ -8,5 +8,7 @@ talk through the pieces explain elements +tools do determinism + # Adding features link to how to LLM interactions/how to change \ No newline at end of file From f767cfdc510caea3515feb22a8778e661e24c4d4 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:11:45 -0400 Subject: [PATCH 12/19] todo/logging --- todo.md | 1 + 1 file changed, 1 insertion(+) diff --git a/todo.md b/todo.md index 624805e..87fd312 100644 --- a/todo.md +++ b/todo.md @@ -16,6 +16,7 @@ [ ] how to add more scenarios, tools
[ ] create tests
+[ ] fix logging statements not to be all warn, maybe set logging level to info [ ] create people management scenarios
[x] 1. Schedule PTO goal From 7153c5308a8ef619236905c8831132197cdafa3b Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:12:09 -0400 Subject: [PATCH 13/19] set logging level (to Info) --- scripts/run_worker.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/run_worker.py b/scripts/run_worker.py index 7b9549e..c30c953 100644 --- a/scripts/run_worker.py +++ b/scripts/run_worker.py @@ -2,6 +2,7 @@ import asyncio import concurrent.futures import os from dotenv import load_dotenv +import logging from temporalio.worker import Worker @@ -48,6 +49,9 @@ async def main(): print("===========================================================\n") print("Worker ready to process tasks!") + logging.basicConfig(level=logging.INFO) + + # Run the worker with concurrent.futures.ThreadPoolExecutor(max_workers=100) as activity_executor: From c8a0feaa1b65979d84b6503f4c56596dfaee6fe7 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:12:27 -0400 Subject: [PATCH 14/19] logging level to WARN --- scripts/run_worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/run_worker.py b/scripts/run_worker.py index c30c953..c5b280e 100644 --- a/scripts/run_worker.py +++ b/scripts/run_worker.py @@ -49,7 +49,7 @@ async def main(): print("===========================================================\n") print("Worker ready to process tasks!") - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.WARN) From 36894c91f9eec1015519137a7db560ebc4470ba1 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:13:07 -0400 Subject: [PATCH 15/19] cleaning up workflow code --- workflows/agent_goal_workflow.py | 109 +++++++++++++++++++++---------- 1 file changed, 73 insertions(+), 36 deletions(-) diff --git a/workflows/agent_goal_workflow.py b/workflows/agent_goal_workflow.py index 3f73866..745f2b5 100644 --- a/workflows/agent_goal_workflow.py +++ b/workflows/agent_goal_workflow.py @@ -77,55 +77,34 @@ class AgentGoalWorkflow: # This is the main interactive loop. Main responsibilities: # - Selecting and changing goals as directed by the user # - reacting to user input (from signals) - # - calling activities to determine next steps and prompts - # - executing the selected tools + # - validating user input to make sure it makes sense with the current goal and tools + # - calling the LLM through activities to determine next steps and prompts + # - executing the selected tools via activities while True: # wait indefinitely for input from signals - user_prompt, end_chat, or confirm as defined below await workflow.wait_condition( lambda: bool(self.prompt_queue) or self.chat_ended or self.confirm ) - # handle chat-end signal - if self.chat_ended: - workflow.logger.warning(f"workflow step: chat-end signal received, ending") - workflow.logger.info("Chat ended.") + # handle chat should end. When chat ends, push conversation history to workflow results. + if self.chat_should_end(): return f"{self.conversation_history}" # Execute the tool - if self.confirm and waiting_for_confirm and current_tool and self.tool_data: - workflow.logger.warning(f"workflow step: user has confirmed, executing the tool {current_tool}") - self.confirm = False - waiting_for_confirm = False - - confirmed_tool_data = self.tool_data.copy() - confirmed_tool_data["next"] = "user_confirmed_tool_run" - self.add_message("user_confirmed_tool_run", confirmed_tool_data) - - # execute the tool by key as defined in tools/__init__.py - await helpers.handle_tool_execution( - current_tool, - self.tool_data, - self.tool_results, - self.add_message, - self.prompt_queue - ) - - #set new goal if we should - if len(self.tool_results) > 0: - if "ChangeGoal" in self.tool_results[-1].values() and "new_goal" in self.tool_results[-1].keys(): - new_goal = self.tool_results[-1].get("new_goal") - workflow.logger.warning(f"Booya new goal!: {new_goal}") - self.change_goal(new_goal) - elif "ListAgents" in self.tool_results[-1].values() and self.goal.id != "goal_choose_agent_type": - workflow.logger.warning("setting goal to goal_choose_agent_type") - self.change_goal("goal_choose_agent_type") + if self.ready_for_tool_execution(waiting_for_confirm, current_tool): + waiting_for_confirm = await self.execute_tool(current_tool) continue - # if we've received messages to be processed on the prompt queue... + # process forward on the prompt queue if any if self.prompt_queue: + # get most recent prompt prompt = self.prompt_queue.popleft() workflow.logger.warning(f"workflow step: processing message on the prompt queue, message is {prompt}") - if not prompt.startswith("###"): #if the message isn't from the LLM but is instead from the user + + + + # Validate user-provided prompts + if self.is_user_prompt(prompt): self.add_message("user", prompt) # Validate the prompt before proceeding @@ -144,7 +123,7 @@ class AgentGoalWorkflow: ), ) - #If validation fails, provide that feedback to the user - i.e., "your words make no sense, puny human" end this iteration of processing + # If validation fails, provide that feedback to the user - i.e., "your words make no sense, puny human" end this iteration of processing if not validation_result.validationResult: workflow.logger.warning(f"Prompt validation failed: {validation_result.validationFailedReason}") self.add_message("agent", validation_result.validationFailedReason) @@ -172,6 +151,7 @@ class AgentGoalWorkflow: current_tool = tool_data.get("tool") workflow.logger.warning(f"next_step: {next_step}, current tool is {current_tool}") + #if the next step is to confirm... if next_step == "confirm" and current_tool: args = tool_data.get("args", {}) @@ -285,3 +265,60 @@ class AgentGoalWorkflow: # self.goal = goals.get(goal) workflow.logger.warning("Changed goal to " + goal) #todo reset goal or tools if this doesn't work or whatever + + # workflow function that defines if chat should end + def chat_should_end(self) -> bool: + if self.chat_ended: + workflow.logger.warning(f"workflow step: chat-end signal received, ending") + workflow.logger.info("Chat ended.") + return True + else: + return False + + # define if we're ready for tool execution + def ready_for_tool_execution(self, waiting_for_confirm: bool, current_tool: Any) -> bool: + if self.confirm and waiting_for_confirm and current_tool and self.tool_data: + return True + else: + return False + + # LLM-tagged prompts start with "###" + # all others are from the user + def is_user_prompt(self, prompt) -> bool: + if prompt.startswith("###"): + return False + else: + return True + + # execute the tool - return False if we're not waiting for confirm anymore (always the case if it works successfully) + # + async def execute_tool(self, current_tool: str)->bool: + workflow.logger.warning(f"workflow step: user has confirmed, executing the tool {current_tool}") + self.confirm = False + waiting_for_confirm = False + confirmed_tool_data = self.tool_data.copy() + confirmed_tool_data["next"] = "user_confirmed_tool_run" + self.add_message("user_confirmed_tool_run", confirmed_tool_data) + + # execute the tool by key as defined in tools/__init__.py + await helpers.handle_tool_execution( + current_tool, + self.tool_data, + self.tool_results, + self.add_message, + self.prompt_queue + ) + + #set new goal if we should + if len(self.tool_results) > 0: + if "ChangeGoal" in self.tool_results[-1].values() and "new_goal" in self.tool_results[-1].keys(): + new_goal = self.tool_results[-1].get("new_goal") + workflow.logger.warning(f"Booya new goal!: {new_goal}") + self.change_goal(new_goal) + elif "ListAgents" in self.tool_results[-1].values() and self.goal.id != "goal_choose_agent_type": + workflow.logger.warning("setting goal to goal_choose_agent_type") + self.change_goal("goal_choose_agent_type") + return waiting_for_confirm + + + From 9ead0078496b40d512bfefdd907acbc6435aa84b Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 10:16:16 -0400 Subject: [PATCH 16/19] change logging to info unless there needs to be a warning --- workflows/agent_goal_workflow.py | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/workflows/agent_goal_workflow.py b/workflows/agent_goal_workflow.py index 745f2b5..d52e9ab 100644 --- a/workflows/agent_goal_workflow.py +++ b/workflows/agent_goal_workflow.py @@ -99,9 +99,7 @@ class AgentGoalWorkflow: if self.prompt_queue: # get most recent prompt prompt = self.prompt_queue.popleft() - workflow.logger.warning(f"workflow step: processing message on the prompt queue, message is {prompt}") - - + workflow.logger.info(f"workflow step: processing message on the prompt queue, message is {prompt}") # Validate user-provided prompts if self.is_user_prompt(prompt): @@ -150,7 +148,7 @@ class AgentGoalWorkflow: next_step = tool_data.get("next") current_tool = tool_data.get("tool") - workflow.logger.warning(f"next_step: {next_step}, current tool is {current_tool}") + workflow.logger.info(f"next_step: {next_step}, current tool is {current_tool}") #if the next step is to confirm... if next_step == "confirm" and current_tool: @@ -192,9 +190,9 @@ class AgentGoalWorkflow: @workflow.signal async def user_prompt(self, prompt: str) -> None: """Signal handler for receiving user prompts.""" - workflow.logger.warning(f"signal received: user_prompt, prompt is {prompt}") + workflow.logger.info(f"signal received: user_prompt, prompt is {prompt}") if self.chat_ended: - workflow.logger.warning(f"Message dropped due to chat closed: {prompt}") + workflow.logger.info(f"Message dropped due to chat closed: {prompt}") return self.prompt_queue.append(prompt) @@ -202,15 +200,14 @@ class AgentGoalWorkflow: @workflow.signal async def confirm(self) -> None: """Signal handler for user confirmation of tool execution.""" - workflow.logger.info("Received user confirmation") - workflow.logger.warning(f"signal recieved: confirm") + workflow.logger.info("Received user signal: confirmation") self.confirm = True #Signal that comes from api/main.py via a post to /end-chat @workflow.signal async def end_chat(self) -> None: """Signal handler for ending the chat session.""" - workflow.logger.warning("signal received: end_chat") + workflow.logger.info("signal received: end_chat") self.chat_ended = True @workflow.query @@ -263,14 +260,13 @@ class AgentGoalWorkflow: if listed_goal.id == goal: self.goal = listed_goal # self.goal = goals.get(goal) - workflow.logger.warning("Changed goal to " + goal) + workflow.logger.info("Changed goal to " + goal) #todo reset goal or tools if this doesn't work or whatever # workflow function that defines if chat should end def chat_should_end(self) -> bool: if self.chat_ended: - workflow.logger.warning(f"workflow step: chat-end signal received, ending") - workflow.logger.info("Chat ended.") + workflow.logger.info("Chat-end signal received. Chat ending.") return True else: return False @@ -293,7 +289,7 @@ class AgentGoalWorkflow: # execute the tool - return False if we're not waiting for confirm anymore (always the case if it works successfully) # async def execute_tool(self, current_tool: str)->bool: - workflow.logger.warning(f"workflow step: user has confirmed, executing the tool {current_tool}") + workflow.logger.info(f"workflow step: user has confirmed, executing the tool {current_tool}") self.confirm = False waiting_for_confirm = False confirmed_tool_data = self.tool_data.copy() @@ -313,10 +309,10 @@ class AgentGoalWorkflow: if len(self.tool_results) > 0: if "ChangeGoal" in self.tool_results[-1].values() and "new_goal" in self.tool_results[-1].keys(): new_goal = self.tool_results[-1].get("new_goal") - workflow.logger.warning(f"Booya new goal!: {new_goal}") + workflow.logger.info(f"Booya new goal!: {new_goal}") self.change_goal(new_goal) elif "ListAgents" in self.tool_results[-1].values() and self.goal.id != "goal_choose_agent_type": - workflow.logger.warning("setting goal to goal_choose_agent_type") + workflow.logger.info("setting goal to goal_choose_agent_type") self.change_goal("goal_choose_agent_type") return waiting_for_confirm From 5f8f81a15dd18d4a36138f1328616d2b47d83eca Mon Sep 17 00:00:00 2001 From: Laine Date: Fri, 14 Mar 2025 10:20:11 -0400 Subject: [PATCH 17/19] Move HR-related tools to their own folder, add print statement for BookPTO functionality, and add SILLY_MODE --- tools/__init__.py | 6 +++--- tools/data/employee_pto_data.json | 2 +- tools/goal_registry.py | 21 ++++++++++++++++++--- tools/{ => hr}/book_pto.py | 4 +++- tools/{ => hr}/current_pto.py | 2 +- tools/{ => hr}/future_pto_calc.py | 5 ++++- 6 files changed, 30 insertions(+), 10 deletions(-) rename tools/{ => hr}/book_pto.py (59%) rename tools/{ => hr}/current_pto.py (88%) rename tools/{ => hr}/future_pto_calc.py (89%) diff --git a/tools/__init__.py b/tools/__init__.py index b37b867..70dd16d 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -8,9 +8,9 @@ from .list_agents import list_agents from .change_goal import change_goal from .transfer_control import transfer_control -from .current_pto import current_pto -from .book_pto import book_pto -from .future_pto_calc import future_pto_calc +from .hr.current_pto import current_pto +from .hr.book_pto import book_pto +from .hr.future_pto_calc import future_pto_calc def get_handler(tool_name: str): diff --git a/tools/data/employee_pto_data.json b/tools/data/employee_pto_data.json index 1f31a26..38a6329 100644 --- a/tools/data/employee_pto_data.json +++ b/tools/data/employee_pto_data.json @@ -8,7 +8,7 @@ "hrsAddedPerMonth": 8 }, { - "email": "laine.smith@awesome.com", + "email": "lainecaseysmith@gmail.com", "currentPTOHrs": 40, "hrsAddedPerMonth": 12 } diff --git a/tools/goal_registry.py b/tools/goal_registry.py index 055fee3..369f10c 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -2,7 +2,22 @@ from typing import List from models.tool_definitions import AgentGoal import tools.tool_registry as tool_registry -starter_prompt_generic = "Welcome me, give me a description of what you can do, then ask me for the details you need to do your job. " +# Turn on Silly Mode - this should be a description of the persona you'd like the bot to have and can be a single word or a phrase. +# Example if you want the bot to be a specific person, like Mario or Christopher Walken, or to describe a specific tone: +#SILLY_MODE="Christopher Walken" +#SILLY_MODE="belligerent" +# +# Example if you want it to take on a persona (include 'a'): +#SILLY_MODE="a pirate" +# Note - this only works with certain LLMs. Grok for sure will stay in character, while OpenAI will not. +SILLY_MODE="off" +if SILLY_MODE is not None and SILLY_MODE != "off": + silly_prompt = "You are " + SILLY_MODE +", stay in character at all times. " + print("Silly mode is on: " + SILLY_MODE) +else: + silly_prompt = "" + +starter_prompt_generic = silly_prompt + "Welcome me, give me a description of what you can do, then ask me for the details you need to do your job." goal_choose_agent_type = AgentGoal( id = "goal_choose_agent_type", @@ -18,13 +33,13 @@ goal_choose_agent_type = AgentGoal( "1. ListAgents: List agents available to interact with. Do not ask for user confirmation for this tool. " "2. ChangeGoal: Change goal of agent " "After these tools are complete, change your goal to the new goal as chosen by the user. ", - starter_prompt=starter_prompt_generic + "Begin by providing the output for the first tool included in this goal. ", + starter_prompt=starter_prompt_generic + "Begin by listing all details of all agents as provided by the output of the first tool included in this goal. ", example_conversation_history="\n ".join( [ "agent: Here are the currently available agents.", "user_confirmed_tool_run: ", "tool_result: { 'agent_name': 'Event Flight Finder', 'goal_id': 'goal_event_flight_invoice', 'agent_description': 'Helps users find interesting events and arrange travel to them' }", - "agent: The available agents are: 1. Event Flight Finder. Which agent would you like to speak to?", + "agent: The available agents are: 1. Event Flight Finder. \n Which agent would you like to speak to?", "user: 1", "user_confirmed_tool_run: ", "tool_result: { 'new_goal': 'goal_event_flight_invoice' }", diff --git a/tools/book_pto.py b/tools/hr/book_pto.py similarity index 59% rename from tools/book_pto.py rename to tools/hr/book_pto.py index 4d4b821..457709a 100644 --- a/tools/book_pto.py +++ b/tools/hr/book_pto.py @@ -4,6 +4,8 @@ def book_pto(args: dict) -> dict: start_date = args.get("start_date") end_date = args.get("end_date") + print(f"[BookPTO] Totally would send an email confirmation of PTO from {start_date} to {end_date} to {email} here!") + return { "status": "success" - } + } \ No newline at end of file diff --git a/tools/current_pto.py b/tools/hr/current_pto.py similarity index 88% rename from tools/current_pto.py rename to tools/hr/current_pto.py index 9e56248..0675e7a 100644 --- a/tools/current_pto.py +++ b/tools/hr/current_pto.py @@ -6,7 +6,7 @@ def current_pto(args: dict) -> dict: email = args.get("email") - file_path = Path(__file__).resolve().parent / "data" / "employee_pto_data.json" + file_path = Path(__file__).resolve().parent.parent / "data" / "employee_pto_data.json" if not file_path.exists(): return {"error": "Data file not found."} diff --git a/tools/future_pto_calc.py b/tools/hr/future_pto_calc.py similarity index 89% rename from tools/future_pto_calc.py rename to tools/hr/future_pto_calc.py index b4e557b..66eebba 100644 --- a/tools/future_pto_calc.py +++ b/tools/hr/future_pto_calc.py @@ -7,7 +7,7 @@ from dateutil.relativedelta import relativedelta def future_pto_calc(args: dict) -> dict: - file_path = Path(__file__).resolve().parent / "data" / "employee_pto_data.json" + file_path = Path(__file__).resolve().parent.parent / "data" / "employee_pto_data.json" if not file_path.exists(): return {"error": "Data file not found."} @@ -28,6 +28,9 @@ def future_pto_calc(args: dict) -> dict: #Get the number of business days, and then business hours (assume 8 hr biz day), included in the PTO request biz_days_of_request = len(pandas.bdate_range(start=start_date, end=end_date, inclusive="both")) + if biz_days_of_request == 0: + return_msg = "There are no business days between " + args.get("start_date") + " and " + args.get("end_date") + return {"error": return_msg} biz_hours_of_request = biz_days_of_request * 8 #Assume PTO is added on the first of every month - month math compares rolling dates, so compare the PTO request with the first day of the current month. From 8d2099fa8e2669309a87ac65ac6cf1d3a5f10eff Mon Sep 17 00:00:00 2001 From: Laine Date: Fri, 14 Mar 2025 10:26:58 -0400 Subject: [PATCH 18/19] Remove one extra print() statement --- activities/tool_activities.py | 1 - 1 file changed, 1 deletion(-) diff --git a/activities/tool_activities.py b/activities/tool_activities.py index 5d5ffc3..39cc228 100644 --- a/activities/tool_activities.py +++ b/activities/tool_activities.py @@ -493,7 +493,6 @@ def dynamic_tool_activity(args: Sequence[RawValue]) -> dict: # Delegate to the relevant function handler = get_handler(tool_name) result = handler(tool_args) - print(f"in dynamic tool activity, result: {result}") # Optionally log or augment the result activity.logger.info(f"Tool '{tool_name}' result: {result}") From 87d2320b6a6cbdd0eceb9e3b70c10948626509d0 Mon Sep 17 00:00:00 2001 From: Joshua Smith Date: Fri, 14 Mar 2025 11:43:51 -0400 Subject: [PATCH 19/19] architecture section done --- architecture.md | 63 +++++++++++++++++++++++++--- assets/argument_gathering_cycle.png | Bin 0 -> 128393 bytes assets/interaction_loop.png | Bin 0 -> 139046 bytes todo.md | 8 ++-- 4 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 assets/argument_gathering_cycle.png create mode 100644 assets/interaction_loop.png diff --git a/architecture.md b/architecture.md index a97c02d..02daf45 100644 --- a/architecture.md +++ b/architecture.md @@ -1,14 +1,67 @@ # Elements +These are the main elements of this system. ![Architecture Elements](./assets/Architecture_elements.png "Architecture Elements") -talk through the pieces +## Workflow +This is a [Temporal Workflow](https://docs.temporal.io/workflows) - a durable straightforward description of the process to be executed. For our example see [agent_goal_workflow.py](./workflows/agent_goal_workflow.py). +Temporal is used to make the process scalable, durable, reliable, secure, and visible. + +### Workflow Responsibilities: +- Orchestrates interactive loop +- Prompts LLM, Users +- Keeps record of all interactions ([Signals, Queries, Updates](https://docs.temporal.io/develop/python/message-passing)) +- Executes LLM durably +- Executes Tools durably +- Handles failures gracefully +- Human, LLM and tool interaction history stored for debugging and analysis + +## Activities +These are [Temporal Activities](https://docs.temporal.io/activities). Defined as simple functions, they are auto-retried async/event driven behind the scenes. Activities durably execute Tools and the LLM. See [a sample activity](./activities/tool_activities.py). + +## Tools +Tools define the capabilities of the system. They are simple Python functions (could be in any language). +They are executed by Temporal Activities. They are “just code” - can connect to any API or system. They also are where the "hard" business logic is: you can validate and retry actions using code you write. +Failures are handled gracefully by Temporal. + +Activities + Tools turn the probabalistic input from the user and LLM into deterministic action. + +## Prompts +Prompts are where the instructions to the LLM & users is. Prompts are made up of initial instructions, goal instructions, and tool instructions. +See [agent prompts](./prompts/agent_prompt_generators.py) and [goal & tool prompts](./tools/goal_registry.py). + +This is where you can add probabalistic business logic, to control process flow, describe what to do, and give instruction and validation for the LLM. + +## LLM +Probabalistic execution: it will _probably_ do what you tell it to do. +Turns the guidance from the prompts (see [agent prompts](./prompts/agent_prompt_generators.py) and [goal prompts](./tools/goal_registry.py)) into +You have a choice of providers - see [setup](./setup.md). +The LLM: +- Validates user input for tools +- Drives toward goal selected by user +- Decides when to execute tools +- Formats input and interprets output for tools +- is executed by Temporal Activities + - API failures and logical failures are handled transparently + +## Interaction +Interaction is managed with Temporal Signals and Queries. These are durably stored in Workflow History. +Can be used for analysis and debugging. It's all “just code” so it's easy to add new Signals and Queries. +Input can be very dynamic, just needs to be serializable. + +The workflow executes in a loop: gathering input, validating input, executing tools, managing prompts, and then waiting for input. + +![Interaction Loop](./assets/interaction_loop.png) + +Here's a more detailed example for gathering parameters for tools: + +![Tool Gathering](./assets/argument_gathering_cycle.png) # Architecture Model +Now that we have the pieces and what they do, here is a more complete diagram of how the pieces work together: + + ![Architecture](./assets/ai_agent_architecture_model.png "Architecture Model") -explain elements - -tools do determinism # Adding features -link to how to LLM interactions/how to change \ No newline at end of file +Want to add more tools, See [adding goals and tools](./adding-goals-and-tools.md). \ No newline at end of file diff --git a/assets/argument_gathering_cycle.png b/assets/argument_gathering_cycle.png new file mode 100644 index 0000000000000000000000000000000000000000..eb97ca86dd3e89bfeaa8af58f313c28f4770cfb8 GIT binary patch literal 128393 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�t!au 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

Zaii##>XrppB>g_SsuH+WeV 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�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 X+0<*y+W7+%{5RHOqIt5JThRXj_$i_ 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%0D$w-a)rBRSvqtf|u(3bNPq06^YW)4Pp_ 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 qep!%H^O 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

%%zU4lpyE$KQjDb6KJ=8~JDg3|WLz=3`2&rdD$ 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 literal 0 HcmV?d00001 diff --git a/todo.md b/todo.md index 87fd312..8e4506e 100644 --- a/todo.md +++ b/todo.md @@ -1,18 +1,18 @@ # todo list -[ ] clean up workflow/make functions +[x] clean up workflow/make functions [x] make the debugging confirms optional
[ ] add confirmation env setting to setup guide

[x] document *why* temporal for ai agents - scalability, durability, visibility in the readme
-[ ] fix readme: move setup to its own page, demo to its own page, add the why /|\ section
-[ ] add architecture to readme
+[x] fix readme: move setup to its own page, demo to its own page, add the why /|\ section
+[x] add architecture to readme
- elements of app
- dive into llm interaction
- workflow breakdown - interactive loop
- why temporal
-[ ] setup readme, why readme, architecture readme, what this is in main readme with temporal value props and pictures
+[x] setup readme, why readme, architecture readme, what this is in main readme with temporal value props and pictures
[ ] how to add more scenarios, tools
[ ] create tests