mirror of
https://github.com/temporal-community/temporal-ai-agent.git
synced 2026-03-15 14:08:08 +01:00
README and its create invoice not generate
This commit is contained in:
14
README.md
14
README.md
@@ -2,16 +2,16 @@
|
||||
|
||||
Work in progress.
|
||||
|
||||
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.
|
||||
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 create 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
|
||||
* Requires an OpenAI key for the gpt-4o model. Set this in the `OPENAI_API_KEY` environment variable in .env
|
||||
* Requires a rapidapi key for sky-scrapper (how we find flights). Set this in the `RAPIDAPI_KEY` environment variable in .env
|
||||
* It's free to sign up and get a key at [RapidAPI](https://rapidapi.com/apiheya/api/sky-scrapper)
|
||||
* If you're lazy go to `tools/search_flights.py` and replace the `get_flights` function with the mock `search_flights_example` that exists in the same file.
|
||||
* Requires a Stripe key for the `generate_invoice` tool. Set this in the `STRIPE_API_KEY` environment variable in .env
|
||||
* 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/generate_invoice.py` and replace the `generate_invoice` function with the mock `generate_invoice_example` that exists in the same file.
|
||||
* 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.
|
||||
* See .env_example for the required environment variables.
|
||||
* Install and run Temporal. Follow the instructions in the [Temporal documentation](https://learn.temporal.io/getting_started/python/dev_environment/#set-up-a-local-temporal-service-for-development-with-temporal-cli) to install and run the Temporal server.
|
||||
* Install the dependencies: `poetry install`
|
||||
@@ -22,6 +22,8 @@ Deprecated:
|
||||
|
||||
## Running the example
|
||||
|
||||
### Temporal
|
||||
|
||||
From the /scripts directory:
|
||||
|
||||
1. Run the worker: `poetry run python run_worker.py`
|
||||
@@ -46,11 +48,11 @@ 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.
|
||||
|
||||
## API
|
||||
### API
|
||||
- `poetry run uvicorn api.main:app --reload` to start the API server.
|
||||
- Access the API at `/docs` to see the available endpoints.
|
||||
|
||||
## UI
|
||||
### UI
|
||||
- `cd frontend`
|
||||
- `npm install` to install the dependencies.
|
||||
- `npm run dev` to start the dev server.
|
||||
@@ -62,8 +64,6 @@ Run query get_tool_data to see the data the tool has collected so far.
|
||||
- See main.py where some tool-specific logic is defined (todo, move this to the tool definition)
|
||||
|
||||
## TODO
|
||||
- Code GenerateInvoice against the Stripe API
|
||||
- I should prove this out with other tool definitions outside of the event/flight search case (take advantage of my nice DSL).
|
||||
- Currently hardcoded to the Temporal dev server at localhost:7233. Need to support options incl Temporal Cloud.
|
||||
- UI: Make prettier
|
||||
- UI: Tool Confirmed state could be better represented
|
||||
@@ -104,7 +104,7 @@ export default function App() {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col h-screen">
|
||||
<NavBar title="Temporal AI Agent" />
|
||||
<NavBar title="Temporal AI Agent 🤖" />
|
||||
|
||||
{/* Centered content, but no manual bottom margin */}
|
||||
<div className="flex-grow flex justify-center px-4 py-2 overflow-hidden">
|
||||
|
||||
@@ -10,7 +10,7 @@ goal_event_flight_invoice = AgentGoal(
|
||||
description="Help the user gather args for these tools in order: "
|
||||
"1. FindEvents: Find an event to travel to "
|
||||
"2. SearchFlights: search for a flight around the event dates "
|
||||
"3. GenerateInvoice: Create a simple invoice for the cost of that flight ",
|
||||
"3. CreateInvoice: Create a simple invoice for the cost of that flight ",
|
||||
example_conversation_history="\n ".join(
|
||||
[
|
||||
"user: I'd like to travel to an event",
|
||||
|
||||
Reference in New Issue
Block a user