diff --git a/README.md b/README.md index c279d2e..c266bdc 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Work in progress (very early!). -This demo shows a multi-turn conversation with an AI agent running inside a Temporal workflow. The goal is to collect information towards a goal. There's a simple DSL input for collecting information (currently set up to search for flights, see `send_message.py`). The AI will respond with clarifications and ask for any missing information (e.g., origin city, destination, travel dates). It uses a local LLM via Ollama. +This demo shows a multi-turn conversation with an AI agent running inside a Temporal workflow. The goal is to collect information towards a goal. There's a simple DSL input for collecting information (currently set up to use mock functions to search for events, book flights around those events then generate an invoice for those flights, see `send_message.py`). The AI will respond with clarifications and ask for any missing information to that goal. It uses a local LLM via Ollama. ## Setup * Install [Ollama](https://ollama.com) and the Mistral model (`ollama run qwen2.5:14b`). (note this model is more than 10GB to download). @@ -16,12 +16,12 @@ From the /scripts directory: 1. Run the worker: `poetry run python run_worker.py` 2. In another terminal run the client with a prompt. - Example: `poetry run python send_message.py 'I want to book a flight'` + Example: `poetry run python send_message.py 'Can you find events in march in oceania?'` 3. View the worker's output for the response. 4. Give followup prompts by signaling the workflow. - Example: `poetry run python send_message.py 'From San Francisco'` + Example: `poetry run python send_message.py 'sure, book flights'` 5. Get the conversation history summary by querying the workflow. Example: `poetry run python get_history.py` @@ -32,10 +32,6 @@ The chat session will end if it has collected enough information to complete the Run query get_tool_data to see the data the tool has collected so far. ## TODO -- This is currently a good single tool workflow. It could be a child as part of a planning workflow (multiple tools). -- I should integrate another tool. Perhaps something that consumes web sites hunting for destinations to go to in the first place. -- I should make this workflow execute a Search for flights as right now it will finish without doing anything. - - Almost there. I have a dynamic activity for the tool's execution. I just need to make it actually do something. -- I need to add a human in the loop confirmation step before it executes tools. -- I need to build a chat interface so it's not cli-controlled. Also want to show some 'behind the scenes' of the agents being used as they run. -- Should I add tools that determine a destination, and also maybe generate a Stripe invoice for the flight? \ No newline at end of file +- The LLM prompts move through 3 mock tools (FindEvents, SearchFlights, CreateInvoice) but I should make them contact real APIs. +- I need to add a human in the loop confirmation step before it executes any tools. +- I need to build a chat interface so it's not cli-controlled. Also want to show some 'behind the scenes' of the agents being used as they run. \ No newline at end of file diff --git a/tools/search_flights.py b/tools/search_flights.py index 0fe03fc..fe9730b 100644 --- a/tools/search_flights.py +++ b/tools/search_flights.py @@ -16,8 +16,8 @@ def search_flights(args: dict) -> dict: return { "tool": "SearchFlights", "searchResults": [ - "Mock flight 1", - "Mock flight 2", + "QF 123: $1200", + "VA 456: $1000", ], "status": "search-complete", "args": args,