mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: Replaced obsolete create_response method in samples (#3542)
* Replaced obsolete create_response method in samples * Addressed PR comments
This commit is contained in:
committed by
GitHub
Unverified
parent
f3e0be9555
commit
493891620d
+10
-10
@@ -9,8 +9,8 @@ from typing import cast
|
||||
from agent_framework import (
|
||||
ChatAgent,
|
||||
ChatMessage,
|
||||
Content,
|
||||
FileCheckpointStorage,
|
||||
FunctionApprovalRequestContent,
|
||||
HandoffBuilder,
|
||||
HandoffUserInputRequest,
|
||||
RequestInfoEvent,
|
||||
@@ -26,7 +26,7 @@ from azure.identity import AzureCliCredential
|
||||
Sample: Handoff Workflow with Tool Approvals + Checkpoint Resume
|
||||
|
||||
Demonstrates the two-step pattern for resuming a handoff workflow from a checkpoint
|
||||
while handling both HandoffUserInputRequest prompts and FunctionApprovalRequestContent
|
||||
while handling both HandoffUserInputRequest prompts and function approval request Content
|
||||
for tool calls (e.g., submit_refund).
|
||||
|
||||
Scenario:
|
||||
@@ -137,7 +137,7 @@ def _print_handoff_request(request: HandoffUserInputRequest, request_id: str) ->
|
||||
print(f"{'=' * 60}\n")
|
||||
|
||||
|
||||
def _print_function_approval_request(request: FunctionApprovalRequestContent, request_id: str) -> None:
|
||||
def _print_function_approval_request(request: Content, request_id: str) -> None:
|
||||
"""Log pending tool approval details for debugging."""
|
||||
args = request.function_call.parse_arguments() or {}
|
||||
print(f"\n{'=' * 60}")
|
||||
@@ -161,10 +161,10 @@ def _build_responses_for_requests(
|
||||
if user_response is None:
|
||||
raise ValueError("User response is required for HandoffUserInputRequest")
|
||||
responses[request.request_id] = user_response
|
||||
elif isinstance(request.data, FunctionApprovalRequestContent):
|
||||
elif isinstance(request.data, Content) and request.data.type == "function_approval_request":
|
||||
if approve_tools is None:
|
||||
raise ValueError("Approval decision is required for FunctionApprovalRequestContent")
|
||||
responses[request.request_id] = request.data.create_response(approved=approve_tools)
|
||||
raise ValueError("Approval decision is required for function approval request")
|
||||
responses[request.request_id] = request.data.to_function_approval_response(approved=approve_tools)
|
||||
else:
|
||||
raise ValueError(f"Unsupported request type: {type(request.data)}")
|
||||
return responses
|
||||
@@ -201,7 +201,7 @@ async def run_until_user_input_needed(
|
||||
pending_requests.append(event)
|
||||
if isinstance(event.data, HandoffUserInputRequest):
|
||||
_print_handoff_request(event.data, event.request_id)
|
||||
elif isinstance(event.data, FunctionApprovalRequestContent):
|
||||
elif isinstance(event.data, Content) and event.data.type == "function_approval_request":
|
||||
_print_function_approval_request(event.data, event.request_id)
|
||||
|
||||
elif isinstance(event, WorkflowOutputEvent):
|
||||
@@ -258,7 +258,7 @@ async def resume_with_responses(
|
||||
restored_requests.append(event)
|
||||
if isinstance(event.data, HandoffUserInputRequest):
|
||||
_print_handoff_request(event.data, event.request_id)
|
||||
elif isinstance(event.data, FunctionApprovalRequestContent):
|
||||
elif isinstance(event.data, Content) and event.data.type == "function_approval_request":
|
||||
_print_function_approval_request(event.data, event.request_id)
|
||||
|
||||
if not restored_requests:
|
||||
@@ -291,7 +291,7 @@ async def resume_with_responses(
|
||||
new_pending_requests.append(event)
|
||||
if isinstance(event.data, HandoffUserInputRequest):
|
||||
_print_handoff_request(event.data, event.request_id)
|
||||
elif isinstance(event.data, FunctionApprovalRequestContent):
|
||||
elif isinstance(event.data, Content) and event.data.type == "function_approval_request":
|
||||
_print_function_approval_request(event.data, event.request_id)
|
||||
|
||||
return new_pending_requests, latest_checkpoint.checkpoint_id
|
||||
@@ -362,7 +362,7 @@ async def main() -> None:
|
||||
workflow_step, _, _, _ = create_workflow(checkpoint_storage=storage)
|
||||
|
||||
needs_user_input = any(isinstance(req.data, HandoffUserInputRequest) for req in pending_requests)
|
||||
needs_tool_approval = any(isinstance(req.data, FunctionApprovalRequestContent) for req in pending_requests)
|
||||
needs_tool_approval = any(isinstance(req.data, Content) and req.data.type == "function_approval_request" for req in pending_requests)
|
||||
|
||||
user_response = None
|
||||
if needs_user_input:
|
||||
|
||||
Reference in New Issue
Block a user