Skip to content

Commit 8458b4a

Browse files
authored
Agent name as required for AzureAIClient (#2198)
1 parent e516322 commit 8458b4a

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

python/packages/azure-ai/agent_framework_azure_ai/_client.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def __init__(
7373
7474
Keyword Args:
7575
project_client: An existing AIProjectClient to use. If not provided, one will be created.
76-
agent_name: The name to use when creating new agents.
76+
agent_name: The name to use when creating new agents or using existing agents.
7777
agent_version: The version of the agent to use.
7878
conversation_id: Default conversation ID to use for conversations. Can be overridden by
7979
conversation_id property when making a request.
@@ -194,17 +194,21 @@ async def _get_agent_reference_or_create(
194194
"""Determine which agent to use and create if needed.
195195
196196
Returns:
197-
str: The agent_name to use
197+
dict[str, str]: The agent reference to use.
198198
"""
199-
agent_name = self.agent_name or "UnnamedAgent"
199+
# Agent name must be explicitly provided by the user.
200+
if self.agent_name is None:
201+
raise ServiceInitializationError(
202+
"Agent name is required. Provide 'agent_name' when initializing AzureAIClient "
203+
"or 'name' when initializing ChatAgent."
204+
)
200205

201206
# If no agent_version is provided, either use latest version or create a new agent:
202207
if self.agent_version is None:
203208
# Try to use latest version if requested and agent exists
204209
if self.use_latest_version:
205210
try:
206-
existing_agent = await self.project_client.agents.get(agent_name)
207-
self.agent_name = existing_agent.name
211+
existing_agent = await self.project_client.agents.get(self.agent_name)
208212
self.agent_version = existing_agent.versions.latest.version
209213
return {"name": self.agent_name, "version": self.agent_version, "type": "agent_reference"}
210214
except ResourceNotFoundError:
@@ -241,13 +245,12 @@ async def _get_agent_reference_or_create(
241245
args["instructions"] = "".join(combined_instructions)
242246

243247
created_agent = await self.project_client.agents.create_version(
244-
agent_name=agent_name, definition=PromptAgentDefinition(**args)
248+
agent_name=self.agent_name, definition=PromptAgentDefinition(**args)
245249
)
246250

247-
self.agent_name = created_agent.name
248251
self.agent_version = created_agent.version
249252

250-
return {"name": agent_name, "version": self.agent_version, "type": "agent_reference"}
253+
return {"name": self.agent_name, "version": self.agent_version, "type": "agent_reference"}
251254

252255
async def _close_client_if_needed(self) -> None:
253256
"""Close project_client session if we created it."""
@@ -276,6 +279,7 @@ def _prepare_input(self, messages: MutableSequence[ChatMessage]) -> tuple[list[C
276279
async def prepare_options(
277280
self, messages: MutableSequence[ChatMessage], chat_options: ChatOptions
278281
) -> dict[str, Any]:
282+
"""Take ChatOptions and create the specific options for Azure AI."""
279283
chat_options.store = bool(chat_options.store or chat_options.store is None)
280284
prepared_messages, instructions = self._prepare_input(messages)
281285
run_options = await super().prepare_options(prepared_messages, chat_options)

python/packages/azure-ai/tests/test_azure_ai_client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,16 @@ async def test_azure_ai_client_get_agent_reference_or_create_existing_version(
161161
assert agent_ref == {"name": "existing-agent", "version": "1.0", "type": "agent_reference"}
162162

163163

164+
async def test_azure_ai_client_get_agent_reference_or_create_missing_agent_name(
165+
mock_project_client: MagicMock,
166+
) -> None:
167+
"""Test _get_agent_reference_or_create raises when agent_name is missing."""
168+
client = create_test_azure_ai_client(mock_project_client, agent_name=None)
169+
170+
with pytest.raises(ServiceInitializationError, match="Agent name is required"):
171+
await client._get_agent_reference_or_create({}, None) # type: ignore
172+
173+
164174
async def test_azure_ai_client_get_agent_reference_or_create_new_agent(
165175
mock_project_client: MagicMock,
166176
azure_ai_unit_test_env: dict[str, str],

python/samples/getting_started/agents/azure_ai/azure_ai_with_code_interpreter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ async def main() -> None:
2222
async with (
2323
AzureCliCredential() as credential,
2424
AzureAIClient(async_credential=credential).create_agent(
25+
name="MyCodeInterpreterAgent",
2526
instructions="You are a helpful assistant that can write and execute Python code to solve problems.",
2627
tools=HostedCodeInterpreterTool(),
2728
) as agent,

0 commit comments

Comments
 (0)