Workflow + Orchestration com “If”

Author:

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

  1. Trigger (Disparo)
    O workflow começa (trigger: OnConversationStart) quando uma nova conversa é iniciada.
  2. 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.
  3. InvokeAzureAgent: AskMeOrchestrator
    • Envia a mensagem do usuário (System.LastMessage) para um agente orquestrador chamado AskMeOrchestrator.
    • Recebe uma resposta do agente e armazena em Local.Var3381.
  4. SetVariable
    • Atualiza Local.Var3381 para o primeiro texto retornado pelo orquestrador.
  5. 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 não corresponder a nenhum desses:
      • Responde: “Nenhuma das perguntas está relacionada.
      • E volta a perguntar novamente sobre o assunto.
  6. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *