From c8f5f2461ade7e099c6fd8d7d20f0fea8447d7ec Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Thu, 5 Dec 2024 17:16:03 -0800 Subject: [PATCH] add demo folder for currency conversion --- demos/currency_exchange/README.md | 1 + demos/currency_exchange/arch_config.yaml | 50 +++++++++++++++++++++ demos/currency_exchange/docker-compose.yaml | 21 +++++++++ demos/currency_exchange/run_demo.sh | 47 +++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 demos/currency_exchange/README.md create mode 100644 demos/currency_exchange/arch_config.yaml create mode 100644 demos/currency_exchange/docker-compose.yaml create mode 100644 demos/currency_exchange/run_demo.sh diff --git a/demos/currency_exchange/README.md b/demos/currency_exchange/README.md new file mode 100644 index 00000000..83089538 --- /dev/null +++ b/demos/currency_exchange/README.md @@ -0,0 +1 @@ +This demo shows how you can use a publicly hosted rest api and interact it using arch gateway. diff --git a/demos/currency_exchange/arch_config.yaml b/demos/currency_exchange/arch_config.yaml new file mode 100644 index 00000000..397a30e3 --- /dev/null +++ b/demos/currency_exchange/arch_config.yaml @@ -0,0 +1,50 @@ +version: v0.1 + +listener: + address: 0.0.0.0 + port: 10000 + message_format: huggingface + connect_timeout: 0.005s + +llm_providers: + - name: gpt-4o + access_key: $OPENAI_API_KEY + provider: openai + model: gpt-4o + +system_prompt: | + You are a helpful assistant. + +prompt_guards: + input_guards: + jailbreak: + on_exception: + message: Looks like you're curious about my abilities, but I can only provide assistance for currency exchange. + +prompt_targets: + - name: currency_exchange + description: Get currency exchange rate from USD to other currencies + parameters: + - name: currency_symbol + description: the currency that needs conversion + required: true + type: str + in_path: true + http_method: GET + endpoint: + name: frankfurther_api + path: /v1/latest?base=USD&symbols={currency_symbol} + system_prompt: | + You are a helpful assistant. Show me the currency symbol you want to convert from USD. + + - name: get_supported_currencies + description: Get list of supported currencies for conversion + http_method: GET + endpoint: + name: frankfurther_api + path: /v1/currencies + +endpoints: + frankfurther_api: + endpoint: api.frankfurter.dev:443 + protocol: https diff --git a/demos/currency_exchange/docker-compose.yaml b/demos/currency_exchange/docker-compose.yaml new file mode 100644 index 00000000..32e52c40 --- /dev/null +++ b/demos/currency_exchange/docker-compose.yaml @@ -0,0 +1,21 @@ +services: + chatbot_ui: + build: + context: ../shared/chatbot_ui + ports: + - "18080:8080" + environment: + # this is only because we are running the sample app in the same docker container environemtn as archgw + - CHAT_COMPLETION_ENDPOINT=http://host.docker.internal:10000/v1 + extra_hosts: + - "host.docker.internal:host-gateway" + volumes: + - ./arch_config.yaml:/app/arch_config.yaml + + jaeger: + build: + context: ../shared/jaeger + ports: + - "16686:16686" + - "4317:4317" + - "4318:4318" diff --git a/demos/currency_exchange/run_demo.sh b/demos/currency_exchange/run_demo.sh new file mode 100644 index 00000000..e6c678e8 --- /dev/null +++ b/demos/currency_exchange/run_demo.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -e + +# Function to start the demo +start_demo() { + # Step 1: Check if .env file exists + if [ -f ".env" ]; then + echo ".env file already exists. Skipping creation." + else + # Step 2: Create `.env` file and set OpenAI key + if [ -z "$OPENAI_API_KEY" ]; then + echo "Error: OPENAI_API_KEY environment variable is not set for the demo." + exit 1 + fi + + echo "Creating .env file..." + echo "OPENAI_API_KEY=$OPENAI_API_KEY" > .env + echo ".env file created with OPENAI_API_KEY." + fi + + # Step 3: Start Arch + echo "Starting Arch with arch_config.yaml..." + archgw up arch_config.yaml + + # Step 4: Start Network Agent + echo "Starting Network Agent using Docker Compose..." + docker compose up -d # Run in detached mode +} + +# Function to stop the demo +stop_demo() { + # Step 1: Stop Docker Compose services + echo "Stopping Network Agent using Docker Compose..." + docker compose down + + # Step 2: Stop Arch + echo "Stopping Arch..." + archgw down +} + +# Main script logic +if [ "$1" == "down" ]; then + stop_demo +else + # Default action is to bring the demo up + start_demo +fi