This repository host the adventure day agent
Regions that this deployment can be executed:
- uksouth
- swedencentral
- canadaeast
- australiaeast
Important hint: Make sure you log into a private browser session using the correct identity provided in the team portal and log into http://portal.azure.com there with this identity! Otherwise, you might end up using the wrong Azure subscription! Make sure you are providing the device codes in this private browser session using the correct identity mentioned!
The following lines of code will connect your Codespace az cli and azd cli to the right Azure subscription:
# log in with the provided credentials - OPEN A PRIVATE BROWSER SESSION
az login --use-device-code
# "log into azure dev cli - only once" - OPEN A PRIVATE BROWSER SESSION
azd auth login --use-device-code
Now deploy the infrastructure components
# "provisioning all the resources with the azure dev cli"
azd up
Get the values for some env variables
# "get and set the value for AZURE_ENV_NAME"
azd env get-values | grep AZURE_ENV_NAME
source <(azd env get-values)
Last but not least: deploy a dummy container in Azure Container Apps.
echo "building and deploying the agent for phase 1"
bash ./azd-hooks/deploy.sh phase1 $AZURE_ENV_NAME
If the following request provides a useful answer, you are ready to go with Phase 1. Make sure to provide the correct URL.
PHASE1_URL="https://phase1..swedencentral.azurecontainerapps.io"
curl -X 'POST' \
"$PHASE1_URL/ask" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Who is the actor behind iron man? 1. Bill Gates, 2. Robert Downey Jr, 3. Jeff Bezos",
"type": "multiple_choice",
"correlationToken": "fgsdfgsd"
}'
Go to directory src-agents/phase1 (for other phases, pick the correct folder) in bash.
Start up the agent api
pip install -r requirements.txt
uvicorn main:app --reload
This starts a local python webserver which hosts your main.py. Now you can work on localhost to test your application. If you get errors here, your stuff also won't run in the cloud.
Test the api with eg:
URL='http://localhost:8000'
# URL='https://phase1..uksouth.azurecontainerapps.io'
curl -X 'POST' \
"$URL/ask" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Who is the actor behind iron man? 1. Bill Gates, 2. Robert Downey Jr, 3. Jeff Bezos",
"type": "multiple_choice",
"correlationToken": "1234567890"
}'
curl -X 'POST' \
"$URL/ask" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Which of the options below is a correct genre for the movie The Smoorgh Crusade? Action, Drama, Comedy, Adventure",
"type": "multiple_choice",
"correlationToken": "1234567890"
}'
curl -X 'POST' \
"$URL/ask" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Does The Lost City have any sequels planned? True or False",
"type": "true_or_false",
"correlationToken": "1234567890"
}'
curl -X 'POST' \
"$URL/ask" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"question": "Which country does The Lost Planet take place in?",
"type": "multiple_choice",
"correlationToken": "1234567890"
}'
Run the following script
azd env get-values | grep AZURE_ENV_NAME
source <(azd env get-values | grep AZURE_ENV_NAME)
bash ./azd-hooks/deploy.sh phase3 $AZURE_ENV_NAME
All the other phases work the same.
The deployment will automatically inject the following environment variables into each running container:
AZURE_AI_SEARCH_NAME=
AZURE_AI_SEARCH_ENDPOINT=
AZURE_AI_SEARCH_KEY=
Here is some sample code that you can use to interact with the deployed Azure AI Search instance.
from azure.core.credentials import AzureKeyCredential
credential = AzureKeyCredential(os.environ["AZURE_AI_SEARCH_KEY"]) if len(os.environ["AZURE_AI_SEARCH_KEY"]) > 0 else DefaultAzureCredential()
from azure.search.documents import SearchClient
index_name = "movies-semantic-index"
search_client = SearchClient(
os.environ["AZURE_AI_SEARCH_ENDPOINT"],
azure_ai_search_index_name,
AzureKeyCredential(azure_ai_search_api_key)
)
query = "What are the best movies about superheroes?"
results = list(search_client.search(
search_text=query,
query_type="simple",
include_total_count=True,
top=5
))
The deployment will automatically inject the following environment variables into each running container:
REDIS_PASSWORD=
REDIS_HOST=redis
REDIS_ENDPOINT=redis:6379
REDIS_PORT=6379
Here is some sample code that you can use to interact with the deployed redis instance.
import redis
import os
# Redis connection details
redis_host = os.getenv('REDIS_HOST')
redis_port = os.getenv('REDIS_PORT')
redis_password = os.getenv('REDIS_PASSWORD')
# Connect to the Redis server
conn = redis.Redis(host=redis_host, port=redis_port, password=redis_password, encoding='utf-8', decode_responses=True)
if conn.ping():
print("Connected to Redis")