코드에서 워크플로 사용
Microsoft Foundry 시각적 디자이너에서 워크플로를 디자인하고 테스트한 후 Azure AI Projects SDK를 사용하여 애플리케이션에 통합할 수 있습니다. 이를 통해 워크플로 기반 자동화를 웹앱, API, 백 엔드 서비스 및 기타 소프트웨어 솔루션에 포함할 수 있습니다.
워크플로는 기본 YAML 정의를 생성하는 시각적 디자이너를 사용하여 Foundry 포털에서 만들어집니다. 워크플로가 프로젝트에 저장되면 해당 이름을 참조하여 프로그래밍 방식으로 호출할 수 있습니다. 포털에서 워크플로의 YAML 정의를 다운로드하여 코드베이스에 포함할 수도 있습니다.
워크플로 호출
워크플로를 실행하기 전에 AIProjectClient을(를) 사용하여 Microsoft Foundry 프로젝트에 연결을 설정합니다. 이 클라이언트는 인증을 처리하고 대화를 실행하고 워크플로를 호출하기 위해 OpenAI 호환 API에 대한 액세스를 제공합니다. 프로젝트에서 기존 워크플로를 실행하려면 대화를 만들고 이름으로 워크플로를 호출합니다.
# Reference a workflow created in the Foundry portal
workflow_name = "triage-workflow"
# Create a conversation context for the workflow
conversation = openai_client.conversations.create()
# Execute the workflow, passing input to drive the workflow logic
stream = openai_client.responses.create(
conversation=conversation.id,
extra_body={"agent": {"name": workflow_name, "type": "agent_reference"}},
input="Users can't reset their password from the mobile app.",
stream=True,
)
이 input 매개 변수를 사용하면 워크플로에 프롬프트 또는 메시지를 전달할 수 있습니다. 워크플로는 사용자 요청 처리, 지원 티켓 심사 또는 질문 답변과 같은 논리를 구동하는 데 사용할 수 있습니다. 워크플로를 디자인하는 방법에 따라 이 입력은 다음과 같습니다.
- 에이전트가 분석하고 응답하는 사용자 질문
- 분류 및 라우팅에 대한 지원 티켓 설명
- 처리 논리를 트리거하는 데이터 페이로드
- 특정 입력 없이 워크플로를 시작하는 빈 문자열
워크플로 이벤트 처리
스트리밍을 사용하도록 설정하면 워크플로가 실행될 때 애플리케이션이 이벤트를 받습니다. 이러한 이벤트를 사용하면 실시간 진행률을 표시하고, 에이전트 출력을 캡처하고, 워크플로 작업에 응답할 수 있습니다.
for event in stream:
if event.type == "response.completed":
print("Workflow completed:")
for message in event.response.output:
if message.content:
for content_item in message.content:
if content_item.type == 'output_text':
print(content_item.text)
if (event.type == "response.output_item.done") and event.item.type == ItemType.WORKFLOW_ACTION:
print(f"Action '{event.item.action_id}' completed with status: {event.item.status}")
일반적인 이벤트 유형은 다음과 같습니다.
| 이벤트 유형 | Description |
|---|---|
response.completed |
워크플로가 실행을 완료하고 최종 응답을 반환했습니다. |
response.output_item.done |
완료된 개별 출력 항목(예: 워크플로 작업) |
이러한 이벤트를 모니터링하여 워크플로가 실시간으로 진행되는 방식을 확인하거나 워크플로 상태에 따라 외부 작업을 트리거할 수 있습니다. 또는 전체 워크플로가 완료되기를 기다렸다가 스트리밍 없이 최종 응답을 처리하도록 선택할 수 있습니다. 휴먼 인 더 루프 패턴을 포함하는 워크플로의 경우 애플리케이션은 워크플로가 사용자 입력을 기다리는 일시 중지를 처리해야 할 수 있습니다. 이러한 경우 대화에 추가 메시지를 보내 요청된 입력을 제공하고 워크플로 실행을 다시 시작할 수 있습니다.
코드 통합의 이점
워크플로를 코드에 통합하면 다음과 같은 여러 시나리오가 가능합니다.
| Scenario | 이익 |
|---|---|
| 웹 애플리케이션 | 사용자 연결 앱에 직접 AI 기반 워크플로 포함 |
| API 및 마이크로 서비스 | REST 엔드포인트를 통해 워크플로 기능 노출 |
| 일괄 처리 | 대량 작업을 위해 프로그래밍 방식으로 워크플로 호출 |
| 테스트 및 유효성 검사 | CI/CD 파이프라인의 일부로 워크플로 테스트 자동화 |
| 사용자 지정 인터페이스 | 특정 워크플로 사용 사례에 맞게 특수화된 UI 빌드 |
Foundry 포털의 시각적 디자인 환경과 코드 통합의 유연성을 결합하여 기존 소프트웨어 아키텍처에 원활하게 맞는 강력한 AI 기반 솔루션을 만들 수 있습니다.