readme update

This commit is contained in:
Steve Androulakis
2025-01-01 17:01:38 -08:00
parent 245d64fca9
commit 443401ba83
2 changed files with 8 additions and 12 deletions

View File

@@ -2,7 +2,7 @@
Work in progress (very early!). 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 ## Setup
* Install [Ollama](https://ollama.com) and the Mistral model (`ollama run qwen2.5:14b`). (note this model is more than 10GB to download). * 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` 1. Run the worker: `poetry run python run_worker.py`
2. In another terminal run the client with a prompt. 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. 3. View the worker's output for the response.
4. Give followup prompts by signaling the workflow. 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. 5. Get the conversation history summary by querying the workflow.
Example: `poetry run python get_history.py` 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. Run query get_tool_data to see the data the tool has collected so far.
## TODO ## TODO
- This is currently a good single tool workflow. It could be a child as part of a planning workflow (multiple tools). - The LLM prompts move through 3 mock tools (FindEvents, SearchFlights, CreateInvoice) but I should make them contact real APIs.
- I should integrate another tool. Perhaps something that consumes web sites hunting for destinations to go to in the first place. - I need to add a human in the loop confirmation step before it executes any tools.
- 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. - 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?

View File

@@ -16,8 +16,8 @@ def search_flights(args: dict) -> dict:
return { return {
"tool": "SearchFlights", "tool": "SearchFlights",
"searchResults": [ "searchResults": [
"Mock flight 1", "QF 123: $1200",
"Mock flight 2", "VA 456: $1000",
], ],
"status": "search-complete", "status": "search-complete",
"args": args, "args": args,