warleygsantos commited on
Commit
76e15e7
1 Parent(s): 2c00fa1

Add application file

Browse files
Files changed (3) hide show
  1. .gitignore +0 -0
  2. app.py +125 -0
  3. requirements.txt +7 -0
.gitignore ADDED
File without changes
app.py ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from langchain.output_parsers import ResponseSchema
3
+ from langchain.output_parsers import StructuredOutputParser
4
+ from langchain.chat_models import ChatOpenAI
5
+ from langchain.prompts import PromptTemplate
6
+
7
+ template = '''
8
+ Primeiro, limpe todo o historico, não deixe conversas anteriores influenciar no que vem a seguir.
9
+ Categorize o comentário relacionando com a tag escrita pelo um vendedor relatando a objeção do cliente que se recusou a realizar a compra. Tome como base os exemplos para tomar a decisar de qual categoria escolher:
10
+
11
+ Vou apresentar as categorias, uma descrição e exemplos:
12
+
13
+ Muito negativo:
14
+ Nesta categoria, a perspectiva de venda futura é considerada muito baixa, indicando a impossiblidade de fechar futuros negócios. Exemplos:
15
+ 1. Cliente expressou que não deseja mais comprar.
16
+ 2. Cliente fora do perfil
17
+ 3. O cliente é pessoa físlica
18
+ 4. O cliente é consumidor final
19
+ 5. O cliente solicitou produto ou serviço que não trabalhamos
20
+ 6. O cliente é prestador de serviço
21
+ 7. O cliente mudou de ramo de atividade
22
+ 8. O cliente é sem perfil
23
+ 9. O cliente encerrou as atividades
24
+ 10. CNPJ baixado
25
+ 11. O clinte fechou
26
+ 12. Problema de cadastro do cliente
27
+ 13. Numero de telefone do cliente não existe
28
+ 14. Cliente prefere em outro canal de vendas
29
+ 15. O cliente opta por contato através de outros vendedores, Representantes Comerciais Autônomos (RCA), compras presenciais, televendas, aplicativo, site, vendedor externo ou no balcão.
30
+ 16. Excluir cliente da base
31
+ 17. Remover do agendamento
32
+ 18. Cliente pediu cancelamento
33
+
34
+ Negativa:
35
+ Aqui, há um reconhecimento de que a venda não foi concretizada devido a algum obstáculo ou desafio específico. Exemplos:
36
+ 1. Problemas financeiros: Sem limite de crédito, sem prazo para compra, inadimplentes, com boletos a pagar, negativado, devendo.
37
+ 2. Problemas logísticos: Aguardando data da rota de entrega, local do cliente não contemplado pela rota, espera pelo caminhão encher para iniciar as rotas, cliente precisa do produto antes da data de entrega.
38
+ 3. Problemas de concorrência: Melhor preço ou prazo oferecido pelo concorrente.
39
+ 4. Problemas de estoque do vendedor: Produto indisponível ou quantidade insuficiente em estoque no estoque do vendedor.
40
+ 5. Cliente se recusa a atender a ligação: Nunca atende as ligações
41
+ 6. Problemas com vendas: Os produtos estão represados
42
+ 7. Cliente bloqueado
43
+
44
+ Neutra:
45
+ Refere-se a situações em que a comunicação com o cliente não foi bem-sucedida ou que o cliente ainda não possue demanda, o que pode impactar a conclusão da venda. Exemplos:
46
+ 1. Cliente não atendeu: Ligação caiu na caixa postal, ligação chamou até cair, contato sem sucesso, comprador auxente, cx postal
47
+ 2. Cliente não estava no momento: O comprador não estava no momento, o comprador não podia conversar no momento
48
+ 3. Cliente abastecido: Cliente com estoque elevado, Cliente não tem demanda, comprou recentimente
49
+ 4. Cliente esta aguardando recebimento de pedidos
50
+ 5. Cliente ligou para pedir informações
51
+ 6. Pós venda
52
+ 7. Cliente reagendado
53
+ 8. Cliente ausente
54
+ 9. Envio de campanha: Envio de ofertas e promoções
55
+ 10. Aguardando recebimento de pedidos
56
+ 11. O vendedor não forneceu informações claras ou suficientes para categorizar a experiência
57
+ 12. Atendimento repetido: O agendamento de ligar para o cliente foi feito por engano, deixando o atendimento duplicado
58
+
59
+ Positiva:
60
+ O cliente prefere adquirir o produto diretamente do vendedor que esta realizando o atendimento, sem utilizar outro canal.
61
+ 1. Cliente realizou uma cotação: cliente perguntou os preços, cliente pediu um orçamento
62
+
63
+ Muito positiva:
64
+ Esta é a situação mais otimista, indicando uma perspectiva positiva por parte do cliente de que pode realizar compras diretamente do vendedor que esta realizando o atendimento, sem utilizar outro canal no futuro próximo.
65
+ 1. O cliente vai verificar o seu estoque e realizar o pedido posteriormente.
66
+
67
+ Apenas retorne o array JSON para cada analise, não adicione NADA.
68
+ Não tente muitas imterpretações, siga os exemplos.
69
+ Lembrese que quem escreveu o comentário e marcou a tag foi o vendedor.
70
+ Não seja otimista, priorise as piores experiencias.
71
+
72
+ Id: {id}
73
+
74
+ Tag: {tag}
75
+
76
+ Comentário: {input}
77
+
78
+ {format_instructions}
79
+
80
+
81
+ '''
82
+
83
+ id_schema = ResponseSchema(
84
+ name='id', description='Mesmo id recebido na entrada'
85
+ )
86
+ sentiment_schema = ResponseSchema(
87
+ name='experiencia',
88
+ description='O texto é "muito positivo", "positivo", "neutro", "negativo", "muito negativo"? Utilize apenas estas palavras.'
89
+ )
90
+ subject_schema = ResponseSchema(
91
+ name='assunto', description='Qual o assunto do texto? Utilize até tres palavras.'
92
+ )
93
+ explanation_schema = ResponseSchema(
94
+ name='explicacao', description='Explique o motivo de ter escolhido a experiencia. Não invente, SEM INTERPRETAÇÃO'
95
+ )
96
+
97
+ response_schemas = [id_schema, sentiment_schema, subject_schema, explanation_schema]
98
+
99
+ parser = StructuredOutputParser.from_response_schemas(response_schemas)
100
+ format_instructions = parser.get_format_instructions()
101
+
102
+ chat = ChatOpenAI(temperature=0.0)
103
+
104
+ prompt = PromptTemplate(
105
+ template=template,
106
+ input_variables=['input', 'tag'],
107
+ partial_variables={'format_instructions': format_instructions},
108
+ )
109
+
110
+ chain = prompt | chat | parser
111
+
112
+
113
+ def greet(entrada, tag):
114
+ dados_lista = [{
115
+ 'id': 1,
116
+ 'input': entrada,
117
+ 'tag': tag
118
+ }]
119
+ resposta = chain.batch(dados_lista)
120
+ return resposta[0]['assunto']
121
+
122
+
123
+ # cria a interface com o gradio
124
+ iface = gr.Interface(fn=greet, inputs=["text", "text"], outputs="text")
125
+ iface.launch(share=True)
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ langchain==0.0.348
2
+ openai==1.3.8
3
+ pyspark==3.5.0
4
+ matplotlib==3.7.1
5
+ numpy==1.23.5
6
+ gradio
7
+ google