Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions Projetos Python/CopilotStudio_Tutorial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# 🚀 Guia Rápido: Criando um Agente no Copilot Studio

Se você acabou de começar a explorar o **Microsoft Copilot Studio**, este guia é para você! Aqui você vai aprender como criar um agente (chatbot) de duas formas:

1. Usando um prompt (modelo pré-definido)
2. Criando um agente do zero

---

## 📌 O que é o Copilot Studio?

O **Copilot Studio** é uma plataforma da Microsoft que permite criar **agentes de conversação (chatbots)** inteligentes usando IA. Ele é parte do ecossistema Power Platform e permite criar soluções com **fluxos de conversa, lógica personalizada e integração com APIs**.

---

## 🧠 1. Criando um agente usando prompt (modelo pré-definido)

### Passos:

1. **Acesse** o portal: [https://copilotstudio.microsoft.com](https://copilotstudio.microsoft.com)
2. Clique em **“Criar agente”**
3. Escolha a opção **"Descrever o que o agente deve fazer"**
4. No campo de prompt, **digite uma descrição do que você quer**, por exemplo:

Quero um agente que ajude clientes a acompanhar pedidos online.

6. O Copilot irá **gerar um agente base automaticamente**, com fluxos e intenções pré-configurados.
7. Revise e ajuste os tópicos/conversas criadas, se necessário.
8. Clique em **Publicar** para disponibilizar seu agente.

✅ **Vantagem**: Rápido e fácil para começar, mesmo sem experiência.

---

## 🛠️ 2. Criando um agente do zero

### Passos:

1. **Acesse** o portal: [https://copilotstudio.microsoft.com](https://copilotstudio.microsoft.com)
2. Clique em **“Criar agente”**
3. Escolha a opção **“Começar do zero”**
4. Dê um nome ao seu agente (ex: `AgenteAjudaTech`)
5. Escolha o idioma principal do agente
6. Depois de criado, vá até a seção **“Tópicos”** para começar a construir:

- Clique em **“Novo tópico”**
- Defina **gatilhos** (palavras-chave ou frases que iniciam o tópico)
- Crie o **fluxo da conversa** com blocos de texto, perguntas e ações

7. Use a aba **“Ações”** para conectar com APIs, fluxos do Power Automate, etc.
8. Teste seu agente no painel lateral.
9. Quando estiver pronto, clique em **Publicar**.

✅ **Vantagem**: Total controle sobre o comportamento do agente.

---

## 💡 Dicas para começar bem

- Use linguagem simples nos prompts
- Teste sempre que fizer alterações
- Aproveite os **modelos prontos** para aprender com exemplos
- Você pode importar dados ou usar plugins e fluxos externos para deixar seu agente mais inteligente

---

## 📎 Recursos úteis

- [Documentação oficial do Copilot Studio](https://learn.microsoft.com/pt-br/microsoft-copilot-studio/)
- [Exemplos no Power Platform](https://powerusers.microsoft.com/)
- [Templates da comunidade](https://learn.microsoft.com/pt-br/microsoft-copilot-studio/samples/)

---

## 🧪 Exemplo de prompt para criar um agente automático:

Crie um agente que ajude funcionários a abrir chamados de TI e acompanhar o status.

---

Feito por Lucas Siqueira



311 changes: 311 additions & 0 deletions Projetos Python/SistemabancoPOO.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
import textwrap
from abc import ABC, abstractmethod
from datetime import datetime


class Usuario:
def __init__(self, endereco):
self.endereco = endereco
self.contas = []

def executar_transacao(self, conta, operacao):
operacao.processar(conta)

def vincular_conta(self, conta):
self.contas.append(conta)


class Pessoa(Usuario):
def __init__(self, nome, nascimento, cpf, endereco):
super().__init__(endereco)
self.nome = nome
self.nascimento = nascimento
self.cpf = cpf


class ContaBancaria:
def __init__(self, numero, usuario):
self._numero = numero
self._usuario = usuario
self._agencia = "0001"
self._saldo = 0.0
self._historico = RegistroOperacoes()

@classmethod
def criar_conta(cls, usuario, numero):
return cls(numero, usuario)

@property
def saldo(self):
return self._saldo

@property
def numero(self):
return self._numero

@property
def agencia(self):
return self._agencia

@property
def cliente(self):
return self._usuario

@property
def historico(self):
return self._historico

def sacar(self, quantia):
if quantia <= 0:
print("\n@@@ Valor inválido para saque. @@@")
return False

if quantia > self._saldo:
print("\n@@@ Saldo insuficiente. @@@")
return False

self._saldo -= quantia
print("\n=== Saque realizado com sucesso! ===")
return True

def depositar(self, quantia):
if quantia <= 0:
print("\n@@@ Valor inválido para depósito. @@@")
return False

self._saldo += quantia
print("\n=== Depósito realizado com sucesso! ===")
return True


class ContaCorrente(ContaBancaria):
def __init__(self, numero, usuario, limite=500, saques_disponiveis=3):
super().__init__(numero, usuario)
self._limite = limite
self._saques_disponiveis = saques_disponiveis

def sacar(self, quantia):
saques_realizados = len(
[op for op in self.historico.transacoes if op["tipo"] == Saque.__name__]
)

if quantia > self._limite:
print("\n@@@ Limite de saque excedido. @@@")
return False

if saques_realizados >= self._saques_disponiveis:
print("\n@@@ Limite de saques atingido. @@@")
return False

return super().sacar(quantia)

def __str__(self):
return f"""\
Agência:\t{self.agencia}
Conta:\t\t{self.numero}
Cliente:\t{self.cliente.nome}
"""


class RegistroOperacoes:
def __init__(self):
self._eventos = []

@property
def transacoes(self):
return self._eventos

def registrar(self, operacao):
self._eventos.append({
"tipo": operacao.__class__.__name__,
"valor": operacao.valor,
"data": datetime.now().strftime("%d-%m-%Y %H:%M:%S")
})


class Operacao(ABC):
@property
@abstractmethod
def valor(self):
pass

@abstractmethod
def processar(self, conta):
pass


class Saque(Operacao):
def __init__(self, valor):
self._valor = valor

@property
def valor(self):
return self._valor

def processar(self, conta):
if conta.sacar(self.valor):
conta.historico.registrar(self)


class Deposito(Operacao):
def __init__(self, valor):
self._valor = valor

@property
def valor(self):
return self._valor

def processar(self, conta):
if conta.depositar(self.valor):
conta.historico.registrar(self)


# Funções auxiliares
def menu():
opcoes = """\n
======== MENU PRINCIPAL ========
[d] Depositar
[s] Sacar
[e] Extrato
[nu] Novo Usuário
[nc] Nova Conta
[lc] Listar Contas
[q] Sair
=> """
return input(textwrap.dedent(opcoes))


def localizar_cliente(cpf, lista_clientes):
return next((c for c in lista_clientes if c.cpf == cpf), None)


def selecionar_conta(cliente):
if not cliente.contas:
print("\n@@@ Cliente ainda não possui conta bancária. @@@")
return None
return cliente.contas[0] # pode ser adaptado para permitir escolha


def criar_usuario(lista_usuarios):
cpf = input("CPF: ")
if localizar_cliente(cpf, lista_usuarios):
print("\n@@@ CPF já cadastrado. @@@")
return

nome = input("Nome completo: ")
nascimento = input("Data de nascimento (dd-mm-aaaa): ")
endereco = input("Endereço (rua, número - bairro - cidade/UF): ")

novo_usuario = Pessoa(nome, nascimento, cpf, endereco)
lista_usuarios.append(novo_usuario)
print("\n=== Usuário criado com sucesso! ===")


def abrir_conta(num_conta, lista_usuarios, lista_contas):
cpf = input("CPF do usuário: ")
usuario = localizar_cliente(cpf, lista_usuarios)

if not usuario:
print("\n@@@ Usuário não encontrado. @@@")
return

conta = ContaCorrente.criar_conta(usuario, num_conta)
lista_contas.append(conta)
usuario.vincular_conta(conta)

print("\n=== Conta aberta com sucesso! ===")


def mostrar_contas(lista_contas):
for conta in lista_contas:
print("=" * 80)
print(str(conta))


def executar_deposito(lista_usuarios):
cpf = input("CPF do cliente: ")
usuario = localizar_cliente(cpf, lista_usuarios)

if not usuario:
print("\n@@@ Cliente não encontrado. @@@")
return

conta = selecionar_conta(usuario)
if not conta:
return

valor = float(input("Valor do depósito: "))
op = Deposito(valor)
usuario.executar_transacao(conta, op)


def executar_saque(lista_usuarios):
cpf = input("CPF do cliente: ")
usuario = localizar_cliente(cpf, lista_usuarios)

if not usuario:
print("\n@@@ Cliente não encontrado. @@@")
return

conta = selecionar_conta(usuario)
if not conta:
return

valor = float(input("Valor do saque: "))
op = Saque(valor)
usuario.executar_transacao(conta, op)


def ver_extrato(lista_usuarios):
cpf = input("CPF do cliente: ")
usuario = localizar_cliente(cpf, lista_usuarios)

if not usuario:
print("\n@@@ Cliente não encontrado. @@@")
return

conta = selecionar_conta(usuario)
if not conta:
return

print("\n========== EXTRATO ==========")
historico = conta.historico.transacoes

if not historico:
print("Nenhuma movimentação realizada.")
else:
for item in historico:
print(f"{item['tipo']}:\tR$ {item['valor']:.2f} ({item['data']})")

print(f"\nSaldo disponível:\tR$ {conta.saldo:.2f}")
print("=============================")


# Execução principal
def main():
usuarios = []
contas = []

while True:
escolha = menu()

if escolha == "d":
executar_deposito(usuarios)
elif escolha == "s":
executar_saque(usuarios)
elif escolha == "e":
ver_extrato(usuarios)
elif escolha == "nu":
criar_usuario(usuarios)
elif escolha == "nc":
abrir_conta(len(contas) + 1, usuarios, contas)
elif escolha == "lc":
mostrar_contas(contas)
elif escolha == "q":
print("\n=== Encerrando o sistema. ===")
break
else:
print("\n@@@ Opção inválida. Tente novamente. @@@")

# Iniciar sistema
main()
Loading