Spaces:
Runtime error
Runtime error
warleygsantos
commited on
Commit
•
76e15e7
1
Parent(s):
2c00fa1
Add application file
Browse files- .gitignore +0 -0
- app.py +125 -0
- 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
|