mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-06 23:49:24 +00:00
* feat: adopt directory-based docs versioning with Edge channel Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com> * style: resolve linter issues --------- Co-authored-by: Cursor <cursoragent@cursor.com>
158 lines
7.6 KiB
Plaintext
158 lines
7.6 KiB
Plaintext
---
|
|
title: "Workflows HITL"
|
|
description: "Aprenda como implementar workflows Human-In-The-Loop no CrewAI para decisões aprimoradas"
|
|
icon: "user-check"
|
|
mode: "wide"
|
|
---
|
|
|
|
Human-In-The-Loop (HITL) é uma abordagem poderosa que combina inteligência artificial com expertise humana para aprimorar a tomada de decisão e melhorar os resultados das tarefas. Este guia mostra como implementar HITL dentro do CrewAI Enterprise.
|
|
|
|
## Abordagens HITL no CrewAI
|
|
|
|
CrewAI oferece duas abordagens para implementar workflows human-in-the-loop:
|
|
|
|
| Abordagem | Melhor Para | Versão |
|
|
|----------|----------|---------|
|
|
| **Baseada em Flow** (decorador `@human_feedback`) | Produção com UI Enterprise, workflows email-first, recursos completos da plataforma | **1.8.0+** |
|
|
| **Baseada em Webhook** | Integrações customizadas, sistemas externos (Slack, Teams, etc.), configurações legadas | Todas as versões |
|
|
|
|
## HITL Baseado em Flow com Plataforma Enterprise
|
|
|
|
<Note>
|
|
O decorador `@human_feedback` requer **CrewAI versão 1.8.0 ou superior**.
|
|
</Note>
|
|
|
|
Ao usar o decorador `@human_feedback` em seus Flows, o CrewAI Enterprise oferece um **sistema HITL email-first** que permite que qualquer pessoa com um endereço de email responda a solicitações de revisão:
|
|
|
|
<CardGroup cols={2}>
|
|
<Card title="Design Email-First" icon="envelope">
|
|
Respondentes recebem notificações por email e podem responder diretamente—nenhum login necessário.
|
|
</Card>
|
|
<Card title="Revisão no Dashboard" icon="desktop">
|
|
Revise e responda a solicitações HITL no dashboard Enterprise quando preferir.
|
|
</Card>
|
|
<Card title="Roteamento Flexível" icon="route">
|
|
Direcione solicitações para emails específicos com base em padrões de método ou obtenha do estado do flow.
|
|
</Card>
|
|
<Card title="Resposta Automática" icon="clock">
|
|
Configure respostas automáticas de fallback quando nenhum humano responder dentro do timeout.
|
|
</Card>
|
|
</CardGroup>
|
|
|
|
### Principais Benefícios
|
|
|
|
- **Respondentes externos**: Qualquer pessoa com email pode responder, mesmo não sendo usuário da plataforma
|
|
- **Atribuição dinâmica**: Obtenha o email do responsável do estado do flow (ex: `account_owner_email`)
|
|
- **Configuração simples**: Roteamento baseado em email é mais fácil de configurar do que gerenciamento de usuários/funções
|
|
- **Fallback do criador do deployment**: Se nenhuma regra de roteamento corresponder, o criador do deployment é notificado
|
|
|
|
<Tip>
|
|
Para detalhes de implementação do decorador `@human_feedback`, consulte o guia [Feedback Humano em Flows](/pt-BR/learn/human-feedback-in-flows).
|
|
</Tip>
|
|
|
|
## Configurando Workflows HITL Baseados em Webhook
|
|
|
|
Para integrações customizadas com sistemas externos como Slack, Microsoft Teams ou suas próprias aplicações, você pode usar a abordagem baseada em webhook:
|
|
|
|
<Steps>
|
|
<Step title="Configure Sua Tarefa">
|
|
Configure sua tarefa com a entrada humana habilitada:
|
|
<Frame>
|
|
<img src="/images/enterprise/crew-human-input.png" alt="Crew Human Input" />
|
|
</Frame>
|
|
</Step>
|
|
|
|
<Step title="Forneça o URL do Webhook">
|
|
Ao iniciar seu crew, inclua um URL de webhook para entrada humana:
|
|
<Frame>
|
|
<img src="/images/enterprise/crew-webhook-url.png" alt="Crew Webhook URL" />
|
|
</Frame>
|
|
</Step>
|
|
|
|
<Step title="Receba a Notificação do Webhook">
|
|
Assim que o crew concluir a tarefa que requer entrada humana, você receberá uma notificação do webhook contendo:
|
|
- **ID de Execução**
|
|
- **ID da Tarefa**
|
|
- **Saída da Tarefa**
|
|
</Step>
|
|
|
|
<Step title="Revise a Saída da Tarefa">
|
|
O sistema irá pausar no estado `Pending Human Input`. Revise cuidadosamente a saída da tarefa.
|
|
</Step>
|
|
|
|
<Step title="Envie o Feedback Humano">
|
|
Chame o endpoint de retomada do seu crew com as seguintes informações:
|
|
<Frame>
|
|
<img src="/images/enterprise/crew-resume-endpoint.png" alt="Crew Resume Endpoint" />
|
|
</Frame>
|
|
|
|
<Warning>
|
|
**Crítico: URLs de Webhook Devem Ser Fornecidas Novamente**:
|
|
Você **deve** fornecer as mesmas URLs de webhook (`taskWebhookUrl`, `stepWebhookUrl`, `crewWebhookUrl`) na chamada de resume que você usou na chamada de kickoff. As configurações de webhook **NÃO** são automaticamente transferidas do kickoff - elas devem ser explicitamente incluídas na solicitação de resume para continuar recebendo notificações de conclusão de tarefa, etapas do agente e conclusão do crew.
|
|
</Warning>
|
|
|
|
Exemplo de chamada resume com webhooks:
|
|
```bash
|
|
curl -X POST {BASE_URL}/resume \
|
|
-H "Authorization: Bearer YOUR_API_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"execution_id": "abcd1234-5678-90ef-ghij-klmnopqrstuv",
|
|
"task_id": "research_task",
|
|
"human_feedback": "Ótimo trabalho! Por favor, adicione mais detalhes.",
|
|
"is_approve": true,
|
|
"taskWebhookUrl": "https://your-server.com/webhooks/task",
|
|
"stepWebhookUrl": "https://your-server.com/webhooks/step",
|
|
"crewWebhookUrl": "https://your-server.com/webhooks/crew"
|
|
}'
|
|
```
|
|
|
|
<Warning>
|
|
**Impacto do Feedback na Execução da Tarefa**:
|
|
É crucial ter cuidado ao fornecer o feedback, pois todo o conteúdo do feedback será incorporado como contexto adicional para as próximas execuções da tarefa.
|
|
</Warning>
|
|
Isso significa:
|
|
- Todas as informações do seu feedback passam a fazer parte do contexto da tarefa.
|
|
- Detalhes irrelevantes podem prejudicar a execução.
|
|
- Feedbacks concisos e relevantes ajudam a manter o foco e a eficiência da tarefa.
|
|
- Sempre revise atentamente seu feedback antes de enviá-lo para garantir que ele contém apenas informações pertinentes que irão guiar positivamente a execução da tarefa.
|
|
</Step>
|
|
<Step title="Lide com Feedback Negativo">
|
|
Se você fornecer um feedback negativo:
|
|
- O crew irá tentar executar novamente a tarefa com o contexto adicional do seu feedback.
|
|
- Você receberá uma nova notificação de webhook para nova revisão.
|
|
- Repita os passos 4-6 até estar satisfeito.
|
|
</Step>
|
|
|
|
<Step title="Continuação da Execução">
|
|
Quando você enviar um feedback positivo, a execução prosseguirá para as próximas etapas.
|
|
</Step>
|
|
</Steps>
|
|
|
|
## Melhores Práticas
|
|
|
|
- **Seja Específico**: Forneça feedback claro e acionável que trate diretamente da tarefa em questão
|
|
- **Mantenha a Relevância**: Inclua apenas informações que possam ajudar a melhorar a execução da tarefa
|
|
- **Seja Ágil**: Responda rapidamente aos prompts HITL para evitar atrasos no workflow
|
|
- **Revise Cuidadosamente**: Verifique duas vezes o seu feedback antes de enviá-lo para garantir precisão
|
|
|
|
## Casos de Uso Comuns
|
|
|
|
Workflows HITL são particularmente valiosos para:
|
|
- Garantia de qualidade e validação
|
|
- Cenários de tomada de decisão complexa
|
|
- Operações sensíveis ou de alto risco
|
|
- Tarefas criativas que exigem julgamento humano
|
|
- Revisões de conformidade e regulatórias
|
|
|
|
## Saiba Mais
|
|
|
|
<CardGroup cols={2}>
|
|
<Card title="Gerenciamento HITL para Flows" icon="users-gear" href="/pt-BR/enterprise/features/flow-hitl-management">
|
|
Explore os recursos completos da plataforma HITL para Flows, incluindo notificações por email, regras de roteamento, resposta automática e análises.
|
|
</Card>
|
|
<Card title="Feedback Humano em Flows" icon="code" href="/pt-BR/learn/human-feedback-in-flows">
|
|
Guia de implementação para o decorador `@human_feedback` em seus Flows.
|
|
</Card>
|
|
</CardGroup>
|