Agente Canvas do Painel de IA
- OpenAI
- Gemini
Interfaces Generativas ·Avançado
Um quadro kanban orientado por chat onde o utilizador e o agente trabalham na mesma lista de tarefas.
OPENAI_API_KEYLicença Apache-2.0 · conteúdo curado, traduzido e mantido pelo Doutor AI.
Um quadro kanban orientado por chat onde tu e o agente trabalham na mesma lista de tarefas. Construído com CopilotKit, AG-UI e LangGraph em cima do Next.js. Também serve como um ponto de partida para UI gen declarativa via A2UI (exemplo de pesquisa de voos incluído).
Conceito de UI Gen - estado partilhado do agente. O quadro (colunas A Fazer / Feito) vive no agente e sincroniza bidirecionalmente com o React através de useAgent(). O agente move cartões através de chamadas de ferramentas; tu clicas, editas e reorganizas no UI. Ambos os lados observam e reagem ao mesmo estado - sem armazenamento frontend separado, sem sincronização manual.
https://github.com/user-attachments/assets/47761912-d46a-4fb3-b9bd-cb41ddd02e34
npm install
Instalação do Agente Python
Pré-requisitos
Antes de começares, assegura-te de que tens os seguintes requisitos instalados:
Instalação
pip install python-agent
Isto também instalará as dependências do agente Python através de uv sync.
cp .env.example .env
Configuração do Projeto
Pré-requisitos
Antes de começares, certifica-te de que tens os seguintes requisitos instalados:
Instalação
git clone https://github.com/usuario/projeto.git
cd projeto
npm install
Configuração do Ambiente
Depois, edita o ficheiro .env e adiciona a tua chave de API do OpenAI:
OPENAI_API_KEY=your_api_key_here
Execução
Para iniciar o projeto, utiliza o seguinte comando:
npm start
Contribuição
Se quiseres contribuir, por favor, cria um fork do repositório e envia um pull request com as tuas alterações.
Licença
Este projeto está licenciado sob a Licença MIT. Consulta o ficheiro LICENSE para mais informações.
OPENAI_API_KEY=your-openai-api-key-here
npm run dev
Isto irá iniciar tanto os servidores de UI como de agente em simultâneo.
Scripts Disponíveis
Os seguintes scripts também podem ser executados utilizando o teu gestor de pacotes preferido:
dev - Inicia ambos os servidores de UI e de agente em modo de desenvolvimentodev:debug - Inicia os servidores de desenvolvimento com registo de depuração ativadodev:ui - Inicia apenas o servidor de UI do Next.jsdev:agent - Inicia apenas o servidor do agente LangGraphbuild - Compila a aplicação Next.js para produçãostart - Inicia o servidor de produçãoinstall:agent - Instala as dependências Python para o agenteEstrutura do Projeto
├── src/ # Next.js frontend source
│ ├── app/
│ │ ├── page.tsx # Main page
│ │ └── api/copilotkit/ # CopilotKit API route
│ ├── components/
│ │ ├── example-canvas/ # Todo list UI
│ │ ├── example-layout/ # Layout: chat + canvas side-by-side
│ │ └── generative-ui/ # Example generative UI components
│ └── hooks/
├── agent/ # LangGraph Python agent
│ ├── main.py # Agent entry point
│ └── src/
│ ├── todos.py # Todo tools and state schema
│ └── query.py # Example data query tool
├── scripts/ # Agent setup and run scripts
│ ├── setup-agent.sh / .bat
│ └── run-agent.sh / .bat
├── public/ # Static assets
├── next.config.ts
├── tsconfig.json
└── package.json
Este starter inclui suporte para A2UI, permitindo que o agente gere superfícies de UI ricas e interativas de forma declarativa. Em vez de devolver texto simples, o agente envia uma descrição JSON da UI que deseja renderizar, e o frontend transforma-a em componentes reais.
A2UI utiliza três conceitos:
layout.tsx através de <CopilotKitProvider a2ui={{ catalog: demonstrationCatalog }}>.a2ui.render(operations=[...]) de uma ferramenta, que o middleware transmite para o frontend.| Padrão | Descrição | Ferramenta do agente | Frontend |
|---|---|---|---|
| Esquema fixo | Layout de componente pré-definido. Apenas os dados mudam por invocação. | search_flights | Esquema em a2ui/schemas/flight_schema.json |
| Esquema dinâmico | Um LLM secundário gera tanto componentes como dados com base na conversa. | generate_a2ui | Componentes decididos em tempo de execução |
Ambos os padrões utilizam o mesmo catálogo no frontend - a diferença está na origem da árvore de componentes.
| Propósito | Caminho |
|---|---|
| Definições do catálogo (esquemas Zod) | src/app/declarative-generative-ui/definitions.ts |
| Renderizadores do catálogo (componentes React) | src/app/declarative-generative-ui/renderers.tsx |
| Registo do catálogo | src/app/layout.tsx |
| Ferramenta do agente com esquema fixo | agent/src/a2ui_fixed_schema.py |
| Ferramenta do agente com esquema dinâmico | agent/src/a2ui_dynamic_schema.py |
| JSON do esquema de voo | agent/src/a2ui/schemas/flight_schema.json |
| Configuração da montra | showcase.json |
definitions.ts: MyWidget: {
description: "A brief description for the agent.",
props: z.object({ title: z.string(), value: z.number() }),
},
renderers.tsx: MyWidget: ({ props }) => (
<div>{props.title}: {props.value}</div>
),
Renderers são verificados quanto ao tipo em relação às definições - TypeScript irá gerar um erro se as props não corresponderem.
agent/src/a2ui/schemas/ que descreva a árvore de componentes.a2ui.load_schema() e retorna a2ui.render(operations=[...]) com os teus dados. Consulta a2ui_fixed_schema.py para o padrão.showcase.json controla quais as sugestões que são visualmente destacadas. Define "showcase": "a2ui" para destacar as demonstrações do A2UI, ou "showcase": "default" para não haver destaques. Isto é configurado automaticamente ao criar a estrutura via npx copilotkit create --framework a2ui.
Um assistente de investigação profunda que planeia, pesquisa na web, escreve num sistema de ficheiros virtual e apresenta cada chamada de ferramenta c…
Um coach financeiro multi-agente que analisa o seu orçamento, planeia as suas poupanças e constrói estratégias de pagamento de dívidas - apresentadas …
Precisa de uma solução à medida?
Não sabe por onde começar a usar IA no seu negócio? Receba uma avaliação gratuita e um plano à medida - sem compromisso.
O Doutor AI dá-lhe 1859 prompts de IA prontos a copiar, por indústria e em português simples - mais uma biblioteca técnica completa para quem quer ir mais longe.