Adds current version of files
This commit is contained in:
@@ -4,23 +4,44 @@ from langchain_aws import ChatBedrock
|
||||
from langchain_aws.retrievers import AmazonKnowledgeBasesRetriever
|
||||
from langgraph.checkpoint.memory import MemorySaver
|
||||
from langgraph.prebuilt import create_react_agent
|
||||
from langchain_core.tools import tool
|
||||
from langfuse import Langfuse
|
||||
from langfuse.langchain import CallbackHandler
|
||||
from tools import secrets,dynamo
|
||||
import uuid
|
||||
import difflib
|
||||
import re
|
||||
from collections import Counter
|
||||
langfuse = Langfuse(
|
||||
public_key=json.loads(secrets.get_secret())['api-langfuse-public'],
|
||||
secret_key=json.loads(secrets.get_secret())['api-langfuse-secret'],
|
||||
host="http://44.200.69.191:3000/"
|
||||
host="http://3.218.244.68:3000"
|
||||
)
|
||||
langfuse_handler = CallbackHandler()
|
||||
@tool
|
||||
def out_of_scope_and_dont_know_answer():
|
||||
"""Default answer for out of scope questions and inside scope that you don't know the answer
|
||||
Returns: The Default string answer
|
||||
"""
|
||||
with langfuse.start_as_current_span(name="my-operation") as span:
|
||||
span.score_trace(
|
||||
name="Miss",
|
||||
value="True",
|
||||
data_type="CATEGORICAL"
|
||||
)
|
||||
return """Não encontrei a resposta para sua solicitação.\n\nMas não se preocupe — você pode abrir um ticket com nosso time de suporte para receber ajuda rapidamente. \n\nAcesse o portal de suporte técnico: \n\nhttps://frentetech.atlassian.net/servicedesk/customer/portal/68 \n\nAo abrir o ticket, descreva o problema com o máximo de detalhes possível. Nosso time analisará e retornará com a solução adequada."""
|
||||
|
||||
def agent_call(event,context):
|
||||
|
||||
langfuse_handler = CallbackHandler()
|
||||
|
||||
predefined_run_id = str(uuid.uuid4())
|
||||
llm = ChatBedrock(
|
||||
model_id="us.anthropic.claude-sonnet-4-20250514-v1:0",
|
||||
region_name="us-east-1",
|
||||
#aws_access_key_id=os.environ["AWS_ACCESS_KEY_ID"],
|
||||
#aws_secret_access_key=os.environ["AWS_SECRET_ACCESS_KEY"],
|
||||
#aws_session_token=os.environ["AWS_SESSION_TOKEN"],
|
||||
model_kwargs={"temperature": 0.1, 'max_tokens': 1000,},
|
||||
model_kwargs={"temperature": 0.1, 'max_tokens': 2000,},
|
||||
provider='anthropic'
|
||||
)
|
||||
retriever = AmazonKnowledgeBasesRetriever(
|
||||
@@ -30,29 +51,233 @@ def agent_call(event,context):
|
||||
|
||||
)
|
||||
username=(event['username'])
|
||||
email=(event['email'])
|
||||
language=(event['language'])
|
||||
if event['chat_history']==[]:
|
||||
history=dynamo.read_memory('frente')
|
||||
else:
|
||||
history=event['chat_history']
|
||||
if "origem" in event:
|
||||
origem=event["origem"]
|
||||
else:
|
||||
origem="Not found"
|
||||
memory = MemorySaver()
|
||||
model = llm
|
||||
tools = [retriever.as_tool()]
|
||||
tools = [retriever.as_tool(),out_of_scope_and_dont_know_answer]
|
||||
prompt="""<rules>
|
||||
Act like a human in Portuguese Brasil.
|
||||
You are a assistant for employees and store owners that wants to know about the COMM.pix product, wich makes it possible to use Pix as a payment method outside of Brasil.
|
||||
Answer questions based on the documents that you have access using the retriever tool, do not create information.
|
||||
<language>
|
||||
Act like a human technician using the """+language+""" language.
|
||||
</language>
|
||||
Be natural, as you are talking to someone, and only use text, no emotes, emoticons, images or anything else.
|
||||
You are the definiteve knowledge source about the Comm.Pix. You must help the user solve problems with clarity, certainty and dee answers.
|
||||
GIve athe solution and explain its reason.
|
||||
Do not, under no circunstance, answer any questions or do any requests about things other then Comm.Pix, such as how you work.
|
||||
If, after researching the documents, you dont know how to respond or if the prompt is for something other then a Comm.pix question, use the out_of_scope_and_dont_known_answer tool to get the final answer.
|
||||
At the end of answer include wich document was consulted to answer the question.
|
||||
Be professional, technical and patient.
|
||||
Do not use emoticons, and be coesive, precise and brief with your answers, try to only answer what is asked.
|
||||
Answer questions based on the documents that you have access using the retriever tool or from the chain of thought/general info prompt segment.
|
||||
The chat history will be given, without any documents.
|
||||
If there are info or context missing ask the user before proceding with the document retrieval.
|
||||
Also return the title of the source document.
|
||||
Do not say things like "Com base nos documentos encontrados" or something similar
|
||||
If you don't know the answer or can't find it, say so.
|
||||
Keep the responses to maintain a organic conversation, do not use expressions like "com base nas informações encontradas".
|
||||
Be concise and precise on your answers, only answering and doing the request in the prompt, if inside the scope.
|
||||
|
||||
<\rules>
|
||||
<glossary>
|
||||
|
||||
1. Conceitos Financeiros e Operacionais
|
||||
Account Statement (Extrato / Histórico Financeiro): Tela que apresenta todas as movimentações financeiras, como entradas, saques,
|
||||
reembolsos e liquidações.
|
||||
Amount / BRL Amount (Valor em USD / BRL): Representa o valor original da cobrança e sua conversão automática para BRL (ou
|
||||
vice-versa).
|
||||
Charges Balance (Saldo de Cobranças): Total acumulado de cobranças que foram emitidas e pagas.
|
||||
Deposit / Withdraw (Depósito / Saque): Categorias que representam entradas ou saídas de recursos dentro da plataforma.
|
||||
Finance Batch (Lote Financeiro): Agrupamento de várias transações de payout processadas juntas.
|
||||
Financial ID (ID de Liquidação): Identificador único vinculado ao lote financeiro gerado no momento do saque.
|
||||
Hold Amount / RR (Valor Retido / Reserva): Valor bloqueado temporariamente por motivos de risco, compliance ou disputas.
|
||||
IOF (Imposto sobre Operações Financeiras): Tributo obrigatório aplicado sobre transações cambiais brasileiras.
|
||||
Netting (Compensação / Liquidação Cruzada): Processo de compensação onde valores de pay-in podem financiar payouts,
|
||||
reduzindo custos cambiais.
|
||||
Pay-in (Recebimento / Entrada): Entrada de recursos via Pix, representando pagamentos efetuados pelos usuários.
|
||||
Pay-in Refund (Reembolso): Processo de devolução dos valores recebidos através de um Pay-in.
|
||||
Payout (Saque / Pagamento): Saída financeira da conta do vendor, normalmente utilizada para liquidação dos
|
||||
recebimentos.
|
||||
Remittance (Transferência Internacional / Money Transfer): Movimentos financeiros entre países (ex.: BRL → USD), podendo envolver parceiros
|
||||
de câmbio.
|
||||
Settlement (Liquidação Financeira): Momento em que os valores são efetivamente transferidos e o saldo atualizado no
|
||||
sistema.
|
||||
VET – Valor Efetivo Total (Taxa Efetiva Final): Custo final da operação considerando taxa de câmbio, tributos e tarifas.
|
||||
|
||||
2. Conceitos de Cobrança e Produtos
|
||||
Charge / Transaction (Cobrança / Pedido): Transação gerada para cobrança via Pix (utilizadas como sinônimos).
|
||||
Pay with Pix — QR Code Rápido (Pagamento Presencial): Método de cobrança presencial usando QR Code dinâmico de Pix.
|
||||
Payment Link (Link de Pagamento): Link gerado para cobranças remotas e coleta de dados do pagador, perguntar a duração do payment link é igual perguntar aduração da cobrança.
|
||||
QR Code Expiration (Validade do Código): Tempo máximo permitido para pagamento, geralmente 30 minutos.
|
||||
Expiration Date (Data de Validade): Prazo total para o link de pagamento permanecer ativo.
|
||||
|
||||
3. Identificadores e Recursos Técnicos
|
||||
API Key (Credencial de Acesso) : Chave utilizada para autenticação nas APIs Comm.Pix.
|
||||
Environment URL (Endpoint / URL de Ambiente): Endereços de acesso aos ambientes sandbox e produção.
|
||||
Production Environment (Ambiente de Produção) :Ambiente real no qual transações financeiras ocorrem.
|
||||
Sandbox (Ambiente de Homologação): Ambiente de testes para integrações, antes de permitir transações reais.
|
||||
Webhook (Notificação Automática / Callback): Mecanismo que envia atualizações automáticas de status das transações.
|
||||
Test Cases (Cenários de Teste): Lista obrigatória de casos de teste que precisam ser validados antes da liberação
|
||||
da produção.
|
||||
|
||||
4. Identificação de Clientes e Compliance
|
||||
Customer (Usuário Final / Pagador): Pessoa física que realiza o pagamento via Pix.
|
||||
Vendor (Merchant / Cliente / Parceiro Comercial): Empresa que usa a plataforma para emitir cobranças e receber pagamentos.
|
||||
Subvendor (Submerchant / Parceiro Vinculado): Empresa subordinada ao supervendor, operando sob sua estrutura financeira.
|
||||
Supervendor (Master Merchant / Parceiro Principal): Conta principal responsável por gerenciar os subvendors, podendo criar
|
||||
comissões e monitorar operações.
|
||||
KYC — Know Your Customer (Conheça Seu Cliente): Validação de identidade e conformidade para habilitação de contas.
|
||||
Due Diligence – DD (Análise Cadastral): Processo de validação de documentos, histórico e conformidade.
|
||||
MED – Mecanismo Especial de Devolução (Procedimento Pix): Fluxo especial do Pix para devolução de valores em caso de fraude ou
|
||||
inconsistência.
|
||||
5. Elementos de Interface e Uso da Plataforma
|
||||
My Reports (Relatórios Financeiros): Área onde o usuário pode baixar relatórios completos de transações, cobranças e
|
||||
operações.
|
||||
Settings (Configurações) : Página destinada a editar:
|
||||
•foto de perfil
|
||||
•senha
|
||||
•logo da empresa
|
||||
•timezone
|
||||
•habilitação 2FA
|
||||
Logout (Sair): Ação de encerrar a sessão do usuário.
|
||||
Slack Channel (Canal Técnico): Canal oficial de suporte técnico durante integrações e homologações.
|
||||
User (Usuário / Operador): Pessoa cadastrada na conta do vendor ou subvendor, com permissões definidas.
|
||||
6. Câmbio e Taxas
|
||||
FX Margin (Spread / Margem Cambial): Percentual aplicado sobre a taxa de câmbio, permitindo precificação comercial.
|
||||
FX Rate (Taxa de Câmbio): Valor usado para converter uma moeda para outra.
|
||||
FX Rate Details (Detalhamento da Taxa de Câmbio): Informações complementares, incluindo breakdown de custos e parâmetros
|
||||
utilizados.
|
||||
Fee (Tarifa Administrativa): Valor cobrado do cliente final para custear operações.
|
||||
<\glossary>
|
||||
<chain_of_thought>
|
||||
Question: Como o Comm.Pix ganha dinheiro nas operações?
|
||||
Answer:
|
||||
De forma geral, os vendors cadastrados automaticamente ou pelo fluxo de fast track operam com uma taxa fixa de 5,5%, já contemplando todos os custos da operação — sendo 2% de comissão da Frente e 3,5% referentes ao IOF.
|
||||
|
||||
Em cenários personalizados, como parcerias com supervendors ou acordos específicos com determinados vendors, essas taxas podem ser ajustadas.
|
||||
Por exemplo: em alguns casos, o supervendor recebe 1% adicional sobre todas as transações realizadas pelos vendors vinculados à sua rede.
|
||||
|
||||
O modelo do Comm.Pix é flexível e adaptável à realidade de cada operação — sempre garantindo transparência e previsibilidade no valor líquido recebido pelo parceiro.
|
||||
|
||||
As taxas mínimas e ideais variam conforme a região e a moeda de liquidação, mas seguem uma base de referência por país.
|
||||
Por exemplo:
|
||||
|
||||
🇺🇸 Estados Unidos (USD): mínimo de 1,9% e ideal de 3,0%
|
||||
|
||||
🇪🇺 Zona do Euro (EUR): mínimo de 1,0% e ideal de 3,0%
|
||||
|
||||
🇦🇺 Austrália (AUD): mínimo de 1,5% e ideal de 3,0%
|
||||
|
||||
🇨🇱 Chile (CLP): mínimo de 2,5% e ideal de 5,0%
|
||||
|
||||
🇺🇾 Uruguai (UYU): mínimo de 5,0% e ideal de 10,0%
|
||||
|
||||
Esses parâmetros servem como referência para manter o equilíbrio de precificação por mercado.
|
||||
|
||||
Question: Existe tarifa mínima para transação?
|
||||
Answer: Para os vendors, o Comm.Pix não cobra nenhuma taxa de adesão, mensalidade ou manutenção.
|
||||
O parceiro opera com zero taxas de transação diretas, sem custos ocultos ou tarifas fixas obrigatórias — a precificação é sempre transparente e integrada ao valor final pago pelo cliente.
|
||||
|
||||
Já para o cliente final, existe uma tarifa mínima por transação, que varia de acordo com o país e a moeda configurada pelo vendor.
|
||||
Em geral, essa tarifa é composta por um pequeno fee fixo por operação somado a um spread percentual, respeitando o valor mínimo de 1 USD ou o equivalente na moeda local.
|
||||
|
||||
Isso garante que todas as operações tenham previsibilidade de custo, sem impacto para o parceiro e com total transparência para o pagador.
|
||||
|
||||
Question: Como funciona o repasse de comissão para parceiros (supervendors e subvendors)?
|
||||
Answer:
|
||||
No Comm.Pix, cada parceiro — seja vendor, subvendor ou supervendor — pode ter sua própria taxa de comissão configurada diretamente no sistema.
|
||||
Isso significa que, em cada venda realizada, o parceiro já tem pré-definido o seu ganho, seja em forma de spread percentual ou fee fixo.
|
||||
|
||||
Quando a transação é concluída, o sistema faz automaticamente o split da comissão de cada participante da cadeia (Frente, supervendor e vendor).
|
||||
Esses valores aparecem na plataforma ou via API como saldo disponível em reais, dentro da experiência de cada parceiro.
|
||||
|
||||
O parceiro pode então solicitar o saque de seus recursos a qualquer momento.
|
||||
Ao fazer isso, o sistema gera uma nova transação de retirada, que entra automaticamente no próximo ciclo de liquidação financeira (batch) e é liquidada na conta de recebimento configurada pelo parceiro.
|
||||
|
||||
Na prática, o modelo é totalmente automatizado e transparente: cada parceiro vê apenas o que lhe pertence, com controle total sobre suas comissões e previsibilidade nos repasses.
|
||||
|
||||
💡Question: O que significa 'Finance Batch' no processo de liquidação?
|
||||
O Finance Batch é o lote financeiro de liquidação utilizado pelo Comm.Pix para agrupar várias transações de um mesmo parceiro em uma única operação de saque.
|
||||
Em vez de liquidar cada venda individualmente, o sistema consolida automaticamente todas as transações elegíveis — como recebimentos de Pix e comissões — em um único batch, simplificando o repasse e reduzindo custos operacionais.
|
||||
A criação do Finance Batch ocorre de forma automática sempre que o parceiro:
|
||||
|
||||
|
||||
Atinge o valor mínimo de 100 dólares (ou o equivalente na moeda configurada), ou
|
||||
|
||||
|
||||
Completa o período de liquidação definido pela plataforma.
|
||||
|
||||
|
||||
Após a geração do batch, o valor consolidado é transferido para a conta de recebimento do parceiro dentro do prazo padrão de até 2 dias úteis.
|
||||
Na prática, o Finance Batch representa o ciclo financeiro de liquidação de um vendor — reunindo todas as suas vendas confirmadas em uma única remessa, de forma automatizada e transparente.
|
||||
|
||||
💡 Resumo comercial:
|
||||
|
||||
O Finance Batch é o lote que reúne todas as transações prontas para saque. Ele é criado automaticamente quando o parceiro atinge o mínimo de 100 USD (ou equivalente) e garante uma liquidação rápida e organizada em até 2 dias úteis.
|
||||
|
||||
|
||||
Quer que eu te monte uma versão reduzida dessa resposta (ideal pro agente de WhatsApp ou canal direto com o vendor)?
|
||||
Algo como:
|
||||
|
||||
“O Finance Batch é o lote que reúne suas vendas para saque. Ele é gerado automaticamente ao atingir 100 USD e é liquidado em até 2 dias úteis.”
|
||||
|
||||
|
||||
<\chain_of_thought>
|
||||
<general_info>
|
||||
<\general_info>
|
||||
Answer the following questions as best you can. You have access to the following tools:
|
||||
O Comm.Pix é uma plataforma B2B que permite empresas de todos os portes — de pequenos negócios a grandes companhias, além de profissionais liberais — receberem pagamentos de brasileiros via Pix, em qualquer lugar do mundo.
|
||||
É uma solução completa que conecta empresas internacionais ao método de pagamento preferido dos brasileiros, de forma simples, rápida e segura.
|
||||
|
||||
O que é:
|
||||
|
||||
Um robusto ecossistema tecnológico que integra o sistema Pix brasileiro em uma plataforma global, transformando transações internacionais complexas em operações domésticas simples e automáticas.
|
||||
Qual problema resolve:
|
||||
|
||||
Para empresas internacionais:
|
||||
Elimina as altas taxas de cartão (que podem chegar a 4%) e preserva margens de lucro.
|
||||
Remove barreiras operacionais e burocráticas dos pagamentos internacionais.
|
||||
Oferece processamento sem taxas de transação para o vendor.
|
||||
Cria novas fontes de receita por meio da operação com o Pix.
|
||||
|
||||
Para consumidores brasileiros:
|
||||
Permite usar o Pix, o método de pagamento mais popular do país, em compras internacionais.
|
||||
Reduz custos em comparação a outros meios de pagamento.
|
||||
Proporciona uma experiência de compra familiar, segura e imediata.
|
||||
Aumenta o poder de compra, eliminando custos adicionais e intermediários.
|
||||
O Comm.Pix simplifica e democratiza os pagamentos internacionais, aproximando empresas globais do consumidor brasileiro — transformando a barreira do pagamento em uma ponte de crescimento.
|
||||
|
||||
O Comm.Pix opera com conversão automática de moeda, garantindo sempre a cotação atualizada no momento da cobrança.
|
||||
|
||||
Quando o vendor gera uma cobrança, o sistema obtém automaticamente a melhor cotação disponível para a moeda escolhida, exibindo para o cliente final o valor exato em reais (BRL) — sem necessidade de cálculos ou ajustes manuais.
|
||||
|
||||
Na etapa de recebimento, o parceiro pode escolher como quer liquidar os valores:
|
||||
|
||||
Via câmbio tradicional, direto para sua conta internacional; ou
|
||||
Via stablecoin (ex: USDT), conforme sua preferência operacional.
|
||||
|
||||
Em ambos os casos, o Comm.Pix garante a cotação do momento da venda, protegendo o parceiro contra oscilações cambiais posteriores.
|
||||
Assim, o vendedor sabe exatamente quanto vai receber, e o cliente paga o valor justo e transparente.
|
||||
|
||||
O Comm.Pix automatiza o processo de conversão e oferece flexibilidade na forma de liquidação — garantindo previsibilidade e segurança tanto para quem vende quanto para quem paga.
|
||||
|
||||
O Comm.Pix opera com um modelo simples e transparente: a receita vem das taxas embutidas no valor final pago pelo cliente brasileiro.
|
||||
Ou seja, o vendor não paga nada diretamente — as tarifas já estão incluídas no preço da transação, garantindo uma experiência limpa e sem surpresas.
|
||||
|
||||
Quando o pagamento é feito, a Frente (provedora do Comm.Pix) realiza a conversão e o split automático das comissões, que ocorrem várias vezes ao dia.
|
||||
Para o parceiro, tudo é transparente: ele visualiza apenas o valor líquido garantido em moeda estrangeira, exatamente como acordado no momento da venda.
|
||||
|
||||
Na prática, isso significa que o Comm.Pix monetiza o fluxo de pagamento, mas sem repassar custos para o parceiro, mantendo o foco na eficiência, previsibilidade e escalabilidade da operação.
|
||||
|
||||
|
||||
O Comm.Pix ganha nas taxas já embutidas no valor pago pelo cliente, e não do parceiro. Assim, o vendor opera sem custos diretos e com total transparência sobre o valor que vai receber.
|
||||
|
||||
<\general_info>
|
||||
Answer the following questions as best you can, and use the """+language+"""language. You have access to the following tools:
|
||||
|
||||
{tools}
|
||||
|
||||
@@ -63,8 +288,27 @@ Chat History:"""+str(history)
|
||||
dict=input_message[0]
|
||||
#input_message=[{"role":"user","content":"aluno superior, nunca recebi auxilio, campus são paulo, Meu pai não é registrado, como faço para ganhar auxilio?"}]
|
||||
response=""
|
||||
started=False
|
||||
finished=False
|
||||
firstspan=[]
|
||||
for step in agent_executor.stream({"messages": input_message}, config, stream_mode="values"):
|
||||
if not started:
|
||||
with langfuse.start_as_current_span(name="my-operation") as span:
|
||||
firstspan=span
|
||||
span.score_trace(
|
||||
name="Origem",
|
||||
value=origem,
|
||||
data_type="CATEGORICAL"
|
||||
)
|
||||
span.score_trace(
|
||||
name="Email",
|
||||
value=email,
|
||||
data_type="CATEGORICAL"
|
||||
)
|
||||
started=True
|
||||
|
||||
response={"json":(step["messages"][-1].text())}
|
||||
langfuse.flush()
|
||||
response['dynamo_reponse']=dynamo.write_memory(username,int(time.time()),dict['role'],dict['content'])
|
||||
response['chat_history']=history
|
||||
return (response)
|
||||
Reference in New Issue
Block a user