Skip to content

Commit 59e01c8

Browse files
committed
Refactors to scripts
1 parent 5682b67 commit 59e01c8

39 files changed

+273
-527
lines changed

Diff for: app/backend/app.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ async def setup_clients():
395395
AZURE_SEARCH_INDEX = os.environ["AZURE_SEARCH_INDEX"]
396396
# Shared by all OpenAI deployments
397397
OPENAI_HOST = os.getenv("OPENAI_HOST", "azure")
398-
OPENAI_CHATGPT_MODEL = os.environ["AZURE_OPENAI_CHATGPT_MODEL"]
398+
OPENAI_CHATGPT_MODEL = "phi3.5:latest"
399399
OPENAI_EMB_MODEL = os.getenv("AZURE_OPENAI_EMB_MODEL_NAME", "text-embedding-ada-002")
400400
OPENAI_EMB_DIMENSIONS = int(os.getenv("AZURE_OPENAI_EMB_DIMENSIONS", 1536))
401401
# Used with Azure OpenAI deployments
@@ -448,8 +448,16 @@ async def setup_clients():
448448
# The managed identity is setup in the infra/ folder.
449449
azure_credential: Union[AzureDeveloperCliCredential, ManagedIdentityCredential]
450450
if RUNNING_ON_AZURE:
451-
current_app.logger.info("Setting up Azure credential using ManagedIdentityCredential")
452-
azure_credential = ManagedIdentityCredential()
451+
if AZURE_CLIENT_ID := os.getenv("AZURE_CLIENT_ID"):
452+
# ManagedIdentityCredential should use AZURE_CLIENT_ID if set in env, but its not working for some reason,
453+
# so we explicitly pass it in as the client ID here. This is necessary for user-assigned managed identities.
454+
current_app.logger.info(
455+
"Setting up Azure credential using ManagedIdentityCredential with client_id %s", AZURE_CLIENT_ID
456+
)
457+
azure_credential = ManagedIdentityCredential(client_id=AZURE_CLIENT_ID)
458+
else:
459+
current_app.logger.info("Setting up Azure credential using ManagedIdentityCredential")
460+
azure_credential = ManagedIdentityCredential()
453461
elif AZURE_TENANT_ID:
454462
current_app.logger.info(
455463
"Setting up Azure credential using AzureDeveloperCliCredential with tenant_id %s", AZURE_TENANT_ID
@@ -705,9 +713,10 @@ def create_app():
705713
# Log levels should be one of https://docs.python.org/3/library/logging.html#logging-levels
706714
# Set root level to WARNING to avoid seeing overly verbose logs from SDKS
707715
logging.basicConfig(level=logging.WARNING)
708-
# Set the app logger level to INFO by default
709-
default_level = "INFO"
710-
app.logger.setLevel(os.getenv("APP_LOG_LEVEL", default_level))
716+
# Set our own logger levels to INFO by default
717+
app_level = os.getenv("APP_LOG_LEVEL", "INFO")
718+
app.logger.setLevel(os.getenv("APP_LOG_LEVEL", app_level))
719+
logging.getLogger("ragapp").setLevel(app_level)
711720

712721
if allowed_origin := os.getenv("ALLOWED_ORIGIN"):
713722
app.logger.info("ALLOWED_ORIGIN is set, enabling CORS for %s", allowed_origin)

Diff for: app/backend/approaches/chatreadretrieveread.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def __init__(
5151
self.content_field = content_field
5252
self.query_language = query_language
5353
self.query_speller = query_speller
54-
self.chatgpt_token_limit = get_token_limit(chatgpt_model)
54+
self.chatgpt_token_limit = get_token_limit(chatgpt_model, default_to_minimum=True)
5555

5656
@property
5757
def system_message_chat_conversation(self):

Diff for: app/backend/approaches/retrievethenread.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def __init__(
6666
self.content_field = content_field
6767
self.query_language = query_language
6868
self.query_speller = query_speller
69-
self.chatgpt_token_limit = get_token_limit(chatgpt_model)
69+
self.chatgpt_token_limit = get_token_limit(chatgpt_model, default_to_minimum=True)
7070

7171
async def run(
7272
self,
@@ -121,6 +121,7 @@ async def run(
121121
few_shots=[{"role": "user", "content": self.question}, {"role": "assistant", "content": self.answer}],
122122
new_user_content=user_content,
123123
max_tokens=self.chatgpt_token_limit - response_token_limit,
124+
fallback_to_default=True,
124125
)
125126

126127
chat_completion = await self.openai_client.chat.completions.create(

Diff for: app/backend/load_azd_env.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import json
2+
import logging
3+
import subprocess
4+
5+
from dotenv import load_dotenv
6+
7+
logger = logging.getLogger("ragapp")
8+
9+
10+
def load_azd_env():
11+
"""Get path to current azd env file and load file using python-dotenv"""
12+
result = subprocess.run("azd env list -o json", shell=True, capture_output=True, text=True)
13+
if result.returncode != 0:
14+
raise Exception("Error loading azd env")
15+
env_json = json.loads(result.stdout)
16+
env_file_path = None
17+
for entry in env_json:
18+
if entry["IsDefault"]:
19+
env_file_path = entry["DotEnvPath"]
20+
if not env_file_path:
21+
raise Exception("No default azd env file found")
22+
logger.info(f"Loading azd env from {env_file_path}")
23+
load_dotenv(env_file_path, override=True)

Diff for: app/backend/main.py

+9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import os
2+
13
from app import create_app
4+
from load_azd_env import load_azd_env
5+
6+
# WEBSITE_HOSTNAME is always set by App Service, RUNNING_IN_PRODUCTION is set in main.bicep
7+
RUNNING_ON_AZURE = os.getenv("WEBSITE_HOSTNAME") is not None or os.getenv("RUNNING_IN_PRODUCTION") is not None
8+
9+
if not RUNNING_ON_AZURE:
10+
load_azd_env()
211

312
app = create_app()

0 commit comments

Comments
 (0)