O que é isso?
Isso é um workflow em YAML do Foundry, geralmente usado para orquestrar fluxos de IA conversacional, integrando agentes e manipulando lógicas como condições e gerenciamento de variáveis.
Explicação passo a passo
Este workflow foi projetado para lidar com uma conversa que começa com uma pergunta sobre um dos três assuntos: matemática, química ou português. Dependendo da resposta do usuário, o fluxo direciona a conversa para o agente apropriado.
Passo a Passo
- Trigger (Disparo)
O workflow começa (trigger: OnConversationStart) quando uma nova conversa é iniciada. - Ação de Pergunta
- O usuário recebe o prompt:
“Pergunte-me sobre um destes assuntos: matemática, química ou português.” - A resposta do usuário é armazenada na variável (
Local.Var8053). - A resposta é sempre uma constante: MATH: PORT, CHEM.
- O usuário recebe o prompt:
- InvokeAzureAgent: AskMeOrchestrator
- Envia a mensagem do usuário (
System.LastMessage) para um agente orquestrador chamadoAskMeOrchestrator. - Recebe uma resposta do agente e armazena em
Local.Var3381.
- Envia a mensagem do usuário (
- SetVariable
- Atualiza
Local.Var3381para o primeiro texto retornado pelo orquestrador.
- Atualiza
- ConditionGroup (Grupo de Condições)
- Com base no valor de
Local.Var3381, o fluxograma verifica sobre qual assunto o usuário perguntou:- Se for “MATH”: Aciona o agente
AgentMath. - Se for “CHEM”: Aciona o agente
AgentChemistry. - Se for “PORT”: Aciona o agente
AgentPort.
- Se for “MATH”: Aciona o agente
- Se não corresponder a nenhum desses:
- Responde: “Nenhuma das perguntas está relacionada.“
- E volta a perguntar novamente sobre o assunto.
- Com base no valor de
- EndConversation
- O workflow encerra a conversa após as respostas.
O que posso fazer com isso ?
O fluxo pode ser usado com o Microsoft Agent Framework.
Um arquivo YML precisa ser criado no projeto para que o framework possa acessá-lo.
kind: workflow
trigger:
kind: OnConversationStart
id: trigger_wf
actions:
- kind: Question
variable: Local.Var8053
id: action-1766012108311
entity: StringPrebuiltEntity
skipQuestionMode: SkipOnFirstExecutionIfVariableHasValue
prompt: Ask me about one of these subjects math, chemistry or portuguese.
- kind: InvokeAzureAgent
id: action-1766012203059
agent:
name: AskMeOrchestrator
input:
messages: =System.LastMessage
output:
autoSend: true
text: Local.Var3381
messages: Local.Var3381
- kind: SetVariable
id: action-1766163586338
variable: Local.Var3381
value: =First(Local.Var3381).Text
- kind: ConditionGroup
conditions:
- condition: =Local.Var3381 = "MATH"
actions:
- kind: InvokeAzureAgent
id: action-1766151735124
agent:
name: AgentMath
input:
messages: =System.LastMessage
output:
autoSend: true
id: if-action-1766151324628-0
- condition: =Local.Var3381 = "CHEM"
actions:
- kind: InvokeAzureAgent
id: action-1766151712877
agent:
name: AgentChemistry
input:
messages: =System.LastMessage
output:
autoSend: true
id: if-action-1766151324628-x28nxpqm
- condition: =Local.Var3381 = "PORT"
actions:
- kind: InvokeAzureAgent
id: action-1766151693326
agent:
name: AgentPort
input:
messages: =System.LastMessage
output:
autoSend: true
id: if-action-1766151324628-pkqj9bls
id: action-1766151324628
elseActions:
- kind: SendActivity
activity: None of the question are related.
id: action-1766151840843
- kind: GotoAction
actionId: action-1766012108311
id: action-1766151903284
- kind: EndConversation
id: action-1766152014002
id: ""
name: questions
description: ""
Usando isso no código
No código, depois de instalado todos pacotes necessários, é preciso ter localmente um arquivo yaml que representa a estrutura do workflow em si.

Output a execução.

Conclusão
Workflow Foundry é bastante útil e também intuitivo. A Microsoft acerta na criação dessa ferramente que não existe muito segredo para montar, mas levar ao código exige conhecimento do Microsoft Agent Framework.