mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: small fixes in foundry (#297)
* small fixes in foundry * other samples updated * make it optional * added instructions and response format to create agent * mypy fix * shortened main readme and improved python readme
This commit is contained in:
committed by
GitHub
Unverified
parent
30fc2b6e9b
commit
c39845d473
@@ -245,7 +245,7 @@ class FoundryChatClient(ChatClientBase):
|
||||
raise ValueError("No thread ID was provided, but chat messages includes tool results.")
|
||||
|
||||
# Determine which agent to use and create if needed
|
||||
agent_id = await self._get_agent_id_or_create()
|
||||
agent_id = await self._get_agent_id_or_create(run_options)
|
||||
|
||||
# Create the streaming response
|
||||
stream, thread_id = await self._create_agent_stream(thread_id, agent_id, run_options, tool_results)
|
||||
@@ -254,7 +254,7 @@ class FoundryChatClient(ChatClientBase):
|
||||
async for update in self._process_stream_events(stream, thread_id):
|
||||
yield update
|
||||
|
||||
async def _get_agent_id_or_create(self) -> str:
|
||||
async def _get_agent_id_or_create(self, run_options: dict[str, Any] | None = None) -> str:
|
||||
"""Determine which agent to use and create if needed.
|
||||
|
||||
Returns:
|
||||
@@ -266,9 +266,15 @@ class FoundryChatClient(ChatClientBase):
|
||||
raise ServiceInitializationError("Model deployment name is required for agent creation.")
|
||||
|
||||
agent_name = self._foundry_settings.agent_name
|
||||
created_agent = await self.client.agents.create_agent(
|
||||
model=self._foundry_settings.model_deployment_name, name=agent_name
|
||||
)
|
||||
args = {"model": self._foundry_settings.model_deployment_name, "name": agent_name}
|
||||
if run_options:
|
||||
if "tools" in run_options:
|
||||
args["tools"] = run_options["tools"]
|
||||
if "instructions" in run_options:
|
||||
args["instructions"] = run_options["instructions"]
|
||||
if "response_format" in run_options:
|
||||
args["response_format"] = run_options["response_format"]
|
||||
created_agent = await self.client.agents.create_agent(**args) # type: ignore[arg-type]
|
||||
self.agent_id = created_agent.id
|
||||
self._should_delete_agent = True
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import sys
|
||||
from collections.abc import AsyncIterable, Callable, MutableMapping, Sequence
|
||||
from contextlib import AbstractAsyncContextManager
|
||||
from enum import Enum
|
||||
from typing import Any, ClassVar, Literal, Protocol, TypeVar, runtime_checkable
|
||||
from uuid import uuid4
|
||||
@@ -417,7 +418,7 @@ class ChatClientAgent(AgentBase):
|
||||
|
||||
If the chat_client supports async context management, enter its context.
|
||||
"""
|
||||
if hasattr(self.chat_client, "__aenter__") and hasattr(self.chat_client, "__aexit__"):
|
||||
if isinstance(self.chat_client, AbstractAsyncContextManager):
|
||||
await self.chat_client.__aenter__() # type: ignore[reportUnknownMemberType]
|
||||
return self
|
||||
|
||||
@@ -426,7 +427,7 @@ class ChatClientAgent(AgentBase):
|
||||
|
||||
If the chat_client supports async context management, exit its context.
|
||||
"""
|
||||
if hasattr(self.chat_client, "__aenter__") and hasattr(self.chat_client, "__aexit__"):
|
||||
if isinstance(self.chat_client, AbstractAsyncContextManager):
|
||||
await self.chat_client.__aexit__(exc_type, exc_val, exc_tb) # type: ignore[reportUnknownMemberType]
|
||||
|
||||
async def run(
|
||||
|
||||
Reference in New Issue
Block a user