Skip to content

Commit 1a7154d

Browse files
authored
Merge pull request #619 from Fr4nc3/macae-rfp-af-101725
Update index_name for RFP analysis team agents
2 parents 764858c + 3841b53 commit 1a7154d

File tree

8 files changed

+246
-580
lines changed

8 files changed

+246
-580
lines changed

data/agent_teams/rfp_analysis_team.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"use_mcp": false,
2222
"use_bing": false,
2323
"use_reasoning": false,
24-
"index_name": "rfp-index",
24+
"index_name": "macae-rfp-index",
2525
"index_foundry_name": "",
2626
"index_endpoint": "",
2727
"coding_tools": false
@@ -38,7 +38,7 @@
3838
"use_mcp": false,
3939
"use_bing": false,
4040
"use_reasoning": false,
41-
"index_name": "rfp-index",
41+
"index_name": "macae-rfp-index",
4242
"index_foundry_name": "",
4343
"index_endpoint": "",
4444
"coding_tools": false
@@ -55,7 +55,7 @@
5555
"use_mcp": false,
5656
"use_bing": false,
5757
"use_reasoning": false,
58-
"index_name": "rfp-index",
58+
"index_name": "macae-rfp-index",
5959
"index_foundry_name": "",
6060
"index_endpoint": "",
6161
"coding_tools": false

src/backend/.env.sample

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,4 @@ SUPPORTED_MODELS='["o3","o4-mini","gpt-4.1","gpt-4.1-mini"]'
3131
AZURE_AI_SEARCH_CONNECTION_NAME=
3232
AZURE_AI_SEARCH_INDEX_NAME=
3333
AZURE_AI_SEARCH_ENDPOINT=
34-
AZURE_AI_SEARCH_API_KEY=
3534
BING_CONNECTION_NAME=

src/backend/uv.lock

Lines changed: 227 additions & 230 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/backend/v4/magentic_agents/foundry_agent.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ async def _create_azure_search_enabled_client(self):
105105
a) API key + endpoint, OR
106106
b) Managed Identity (RBAC enabled on the Search service with Search Service Contributor + Search Index Data Reader).
107107
- search_config.index_name must exist in the Search service.
108-
- search_config.connection_name OR search_config.connection_id must reference the desired connection.
108+
109109
110110
Returns:
111111
AzureAIAgentClient | None
@@ -114,10 +114,10 @@ async def _create_azure_search_enabled_client(self):
114114
self.logger.error("Search configuration missing.")
115115
return None
116116

117-
desired_connection_id = getattr(self.search, "connection_id", None)
117+
118118
desired_connection_name = getattr(self.search, "connection_name", None)
119119
index_name = getattr(self.search, "index_name", "")
120-
query_type = getattr(self.search, "search_query_type", "vector")
120+
query_type = getattr(self.search, "search_query_type", "simple")
121121

122122
if not index_name:
123123
self.logger.error("index_name not provided in search_config; aborting Azure Search path.")
@@ -128,33 +128,27 @@ async def _create_azure_search_enabled_client(self):
128128
try:
129129
async for connection in self.project_client.connections.list():
130130
if connection.type == ConnectionType.AZURE_AI_SEARCH:
131-
# Allow direct id override
132-
if desired_connection_id and connection.id == desired_connection_id:
133-
resolved_connection_id = connection.id
134-
break
135-
# Else match by name
131+
136132
if desired_connection_name and connection.name == desired_connection_name:
137133
resolved_connection_id = connection.id
138134
break
139135
# Fallback: if no specific connection requested and none resolved yet, take the first
140-
if not desired_connection_id and not desired_connection_name and not resolved_connection_id:
136+
if not desired_connection_name and not resolved_connection_id:
141137
resolved_connection_id = connection.id
142138
# Do not break yet; we log but allow chance to find a name match later. If not, this stays.
143139

144140
if not resolved_connection_id:
145141
self.logger.error(
146142
"No Azure AI Search connection resolved. "
147-
"Provided connection_id=%s, connection_name=%s",
148-
desired_connection_id,
143+
"connection_name=%s",
149144
desired_connection_name,
150145
)
151146
# return None
152147

153148
self.logger.info(
154-
"Using Azure AI Search connection (id=%s, requested_name=%s, requested_id=%s).",
149+
"Using Azure AI Search connection (id=%s, requested_name=%s).",
155150
resolved_connection_id,
156151
desired_connection_name,
157-
desired_connection_id,
158152
)
159153
except Exception as ex:
160154
self.logger.error("Failed to enumerate connections: %s", ex)
@@ -176,7 +170,7 @@ async def _create_azure_search_enabled_client(self):
176170
{
177171
"index_connection_id": resolved_connection_id,
178172
"index_name": index_name,
179-
"query_type": "simple",
173+
"query_type": query_type,
180174
}
181175
]
182176
}

src/backend/v4/magentic_agents/magentic_agent_factory.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,17 @@ async def create_agent_from_config(self, user_id: str, agent_obj: SimpleNamespac
8585
)
8686

8787
# Only create configs for explicitly requested capabilities
88+
index_name = getattr(agent_obj, "index_name", None)
8889
search_config = (
89-
SearchConfig.from_env() if getattr(agent_obj, "use_rag", False) else None
90+
SearchConfig.from_env(index_name) if getattr(agent_obj, "use_rag", False) else None
9091
)
9192
mcp_config = (
9293
MCPConfig.from_env() if getattr(agent_obj, "use_mcp", False) else None
9394
)
9495
# bing_config = BingConfig.from_env() if getattr(agent_obj, 'use_bing', False) else None
9596

9697
self.logger.info(
97-
f"Creating agent '{agent_obj.name}' with model '{deployment_name}' "
98+
f"Creating agent '{agent_obj.name}' with model '{deployment_name}' {index_name} "
9899
f"(Template: {'Reasoning' if use_reasoning else 'Foundry'})"
99100
)
100101

src/backend/v4/magentic_agents/models/agent_models.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ class SearchConfig:
6161
connection_name: str | None = None
6262
endpoint: str | None = None
6363
index_name: str | None = None
64-
api_key: str | None = None # API key for Azure AI Search
64+
6565

6666
@classmethod
67-
def from_env(cls) -> "SearchConfig":
67+
def from_env(cls, index_name: str) -> "SearchConfig":
6868
connection_name = config.AZURE_AI_SEARCH_CONNECTION_NAME
69-
index_name = config.AZURE_AI_SEARCH_INDEX_NAME
69+
index_name = index_name or config.AZURE_AI_SEARCH_INDEX_NAME
7070
endpoint = config.AZURE_AI_SEARCH_ENDPOINT
71-
api_key = config.AZURE_AI_SEARCH_API_KEY
71+
7272

7373
# Raise exception if any required environment variable is missing
7474
if not all([connection_name, index_name, endpoint]):
@@ -79,6 +79,5 @@ def from_env(cls) -> "SearchConfig":
7979
return cls(
8080
connection_name=connection_name,
8181
index_name=index_name,
82-
endpoint=endpoint,
83-
api_key=api_key,
82+
endpoint=endpoint
8483
)

src/backend/v4/magentic_agents/reasoning_agent.py

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from v4.magentic_agents.common.lifecycle import MCPEnabledBase
2121
from v4.magentic_agents.models.agent_models import MCPConfig, SearchConfig
22-
from v4.magentic_agents.reasoning_search import ReasoningSearch, create_reasoning_search
2322
from v4.config.agent_registry import agent_registry
2423

2524

@@ -73,8 +72,6 @@ def __init__(
7372
self._credential: Optional[DefaultAzureCredential] = None
7473
self._client: Optional[AzureAIAgentClient] = None
7574

76-
# Search integration
77-
self.reasoning_search: Optional[ReasoningSearch] = None
7875

7976
self.logger = logging.getLogger(__name__)
8077

@@ -100,16 +97,6 @@ async def _after_open(self) -> None:
10097
self.model_deployment_name
10198
)
10299

103-
# Initialize search capabilities if configured
104-
if self.search_config:
105-
self.reasoning_search = await create_reasoning_search(self.search_config)
106-
if self.reasoning_search.is_available():
107-
self.logger.info(
108-
"Initialized Azure AI Search with index '%s'",
109-
self.search_config.index_name
110-
)
111-
else:
112-
self.logger.warning("Azure AI Search initialization failed or incomplete config")
113100

114101
# Initialize MCP tools (called after stack is ready)
115102
await self._prepare_mcp_tool()
@@ -153,10 +140,6 @@ async def _after_open(self) -> None:
153140
async def close(self) -> None:
154141
"""Close all resources."""
155142
try:
156-
# Close reasoning search
157-
if self.reasoning_search:
158-
await self.reasoning_search.close()
159-
self.reasoning_search = None
160143

161144
# Unregister from registry
162145
try:
@@ -169,55 +152,6 @@ async def close(self) -> None:
169152
self._client = None
170153
self._credential = None
171154

172-
async def _augment_with_search(self, prompt: str) -> str:
173-
"""
174-
Augment the prompt with relevant search results.
175-
176-
Args:
177-
prompt: Original user prompt
178-
179-
Returns:
180-
Augmented instructions including search results
181-
"""
182-
instructions = self.base_instructions
183-
184-
if not self.reasoning_search or not self.reasoning_search.is_available():
185-
return instructions
186-
187-
if not prompt.strip():
188-
return instructions
189-
190-
try:
191-
# Fetch relevant documents
192-
docs = await self.reasoning_search.search_documents(
193-
query=prompt,
194-
limit=self.max_search_docs
195-
)
196-
197-
if docs:
198-
# Format documents for inclusion
199-
doc_context = "\n\n".join(
200-
f"[Document {i+1}]\n{doc}"
201-
for i, doc in enumerate(docs)
202-
)
203-
204-
# Append to instructions
205-
instructions = (
206-
f"{instructions}\n\n"
207-
f"**Relevant Reference Documents:**\n{doc_context}\n\n"
208-
f"Use the above documents only if they help answer the user's question. "
209-
f"Do not mention the documents unless directly relevant."
210-
)
211-
212-
self.logger.debug(
213-
"Augmented prompt with %d search documents",
214-
len(docs)
215-
)
216-
except Exception as ex:
217-
self.logger.warning("Search augmentation failed: %s", ex)
218-
219-
return instructions
220-
221155
def _prepare_tools(self) -> list:
222156
"""
223157
Prepare tools for reasoning model invocation.

0 commit comments

Comments
 (0)