Trabalhoemcasa commited on
Commit
69e63c7
·
verified ·
1 Parent(s): 05def3d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -65
app.py CHANGED
@@ -1,101 +1,59 @@
1
  import os
2
  import gradio as gr
3
  from mistralai.client import MistralClient
4
- # Importação correta para ChatMessage, compatível com a versão 0.1.2 da biblioteca mistralai
5
- from mistralai.models import ChatMessage
6
 
7
  # --- Configuração da API da Mistral ---
8
-
9
- # Acesse a chave da API a partir da variável de ambiente (o nome do Secret em maiúsculas)
10
- # O nome do seu Secret nas configurações do Space é 'Chat01', então a variável de ambiente é 'CHAT01'
11
  api_key = os.environ.get("CHAT01")
 
12
 
13
- # Verificação se a chave foi encontrada e inicialização do cliente
14
- mistral_client = None # Começa com o cliente como None
15
  if not api_key:
16
- # Se a chave não estiver configurada, imprime um aviso nos logs
17
  print("AVISO: A chave da API Mistral (CHAT01) não está configurada nas variáveis de ambiente.")
18
- print("Por favor, adicione a chave 'Chat01' nas configurações/Secrets do seu Space.")
19
- # O bot não poderá responder usando a Mistral neste caso
20
  else:
21
- # Se a chave foi encontrada, tenta inicializar o cliente
22
  try:
23
  mistral_client = MistralClient(api_key=api_key)
24
- print("Cliente Mistral inicializado com sucesso!")
25
  except Exception as e:
26
- # Em caso de erro na inicialização (chave inválida, etc.), imprime o erro
27
- print(f"ERRO: Ocorreu um erro ao inicializar o cliente Mistral com a chave fornecida: {e}")
28
- print("Verifique se a chave da API Mistral nas configurações está correta.")
29
- mistral_client = None # Mantém o cliente como None em caso de erro
30
-
31
- # --- Função de Chat que usa a API da Mistral ---
32
 
 
33
  def chatbot_response(message, history):
34
- """
35
- Processa a mensagem do usuário, obtém uma resposta da API da Mistral,
36
- e gerencia o histórico da conversa.
37
- """
38
- # 'history' é uma lista de listas, onde cada sublista é [user_message, bot_response]
39
- # Gradio passa o histórico acumulado da conversa aqui.
40
-
41
- # Se o cliente Mistral não foi inicializado (por falta ou erro na chave),
42
- # retorna uma mensagem de erro e não tenta chamar a API.
43
  if mistral_client is None:
44
- print("Não foi possível responder: Cliente Mistral não está disponível.")
45
- return "Desculpe, o serviço de inteligência artificial não está disponível no momento. Por favor, verifique a configuração da chave da API."
46
 
47
- # Formata o histórico da conversa para o formato que a API da Mistral espera
48
  messages = []
49
  for human, assistant in history:
50
- # Adiciona as mensagens anteriores do histórico
51
- messages.append(ChatMessage(role="user", content=human))
52
- messages.append(ChatMessage(role="assistant", content=assistant))
53
-
54
- # Adiciona a mensagem atual do usuário
55
- messages.append(ChatMessage(role="user", content=message))
56
 
57
  try:
58
- # Chama a API da Mistral para obter a resposta
59
- print(f"Enviando mensagem para a API da Mistral: '{message[:50]}...'") # Log para ver que a chamada está acontecendo
60
  chat_response = mistral_client.chat(
61
- # Especifique o modelo da Mistral que você deseja usar.
62
- # Veja a documentação da Mistral para os modelos disponíveis.
63
- # Exemplos comuns: "mistral-tiny", "mistral-small", "mistral-medium", "mistral-large-latest"
64
- model="mistral-large-latest", # <-- Você pode mudar este nome de modelo
65
  messages=messages
66
  )
67
- # Extrai o conteúdo da resposta do bot
68
- resposta_bot = chat_response.choices[0].message.content
69
- print(f"Recebida resposta da API (início): '{resposta_bot[:50]}...'") # Log para ver a resposta
70
  return resposta_bot
71
 
72
  except Exception as e:
73
- # Em caso de erro durante a chamada da API (problema de conexão, erro na API, etc.)
74
- print(f"ERRO: Ocorreu um erro ao chamar a API da Mistral: {e}")
75
- # Retorna uma mensagem de erro amigável para o usuário na interface
76
- return f"Desculpe, ocorreu um erro ao processar sua solicitação: {e}"
77
-
78
- # --- Configuração da Interface Gradio ---
79
 
80
- # Cria a interface de chat usando a função que definimos
81
- # O Gradio ChatInterface já gerencia o histórico automaticamente
82
  interface = gr.ChatInterface(
83
- fn=chatbot_response, # A função que processa as mensagens
84
- title="Meu Chatbot Inteligente com Mistral AI", # Título na interface
85
- description="Converse com um modelo da Mistral AI via API.", # Descrição
86
- examples=[ # Exemplos de perguntas para o usuário clicar e testar
87
  ["Qual a capital do Brasil?"],
88
  ["Explique o que é inteligência artificial."],
89
  ["Sugira 3 nomes para um cachorro."],
90
  ],
91
- # Você pode adicionar mais configurações de interface aqui, se necessário
92
  )
93
 
94
- # --- Lançamento da Aplicação ---
95
-
96
- # Esta parte inicia a interface Gradio.
97
- # No Hugging Face Spaces, a função `launch()` é chamada para iniciar a aplicação web.
98
  if __name__ == "__main__":
99
- # O launch() sem argumentos roda a aplicação localmente ou no ambiente do Space.
100
- # Se estivesse rodando localmente e quisesse um link público temporário para compartilhar, usaria interface.launch(share=True)
101
- interface.launch()
 
1
  import os
2
  import gradio as gr
3
  from mistralai.client import MistralClient
 
 
4
 
5
  # --- Configuração da API da Mistral ---
 
 
 
6
  api_key = os.environ.get("CHAT01")
7
+ mistral_client = None
8
 
 
 
9
  if not api_key:
 
10
  print("AVISO: A chave da API Mistral (CHAT01) não está configurada nas variáveis de ambiente.")
 
 
11
  else:
 
12
  try:
13
  mistral_client = MistralClient(api_key=api_key)
14
+ print("Cliente Mistral inicializado com sucesso!")
15
  except Exception as e:
16
+ print(f"❌ ERRO ao inicializar o cliente Mistral: {e}")
17
+ mistral_client = None
 
 
 
 
18
 
19
+ # --- Função de resposta do chatbot ---
20
  def chatbot_response(message, history):
 
 
 
 
 
 
 
 
 
21
  if mistral_client is None:
22
+ return "⚠️ O serviço de IA não está disponível. Verifique a chave da API."
 
23
 
24
+ # Constrói o histórico no formato da API Mistral
25
  messages = []
26
  for human, assistant in history:
27
+ messages.append({"role": "user", "content": human})
28
+ messages.append({"role": "assistant", "content": assistant})
29
+ messages.append({"role": "user", "content": message})
 
 
 
30
 
31
  try:
32
+ print(f"📤 Enviando para a API: {message[:50]}...")
 
33
  chat_response = mistral_client.chat(
34
+ model="mistral-large-latest", # Você pode mudar para outro modelo como "mistral-small"
 
 
 
35
  messages=messages
36
  )
37
+ resposta_bot = chat_response.choices[0].message["content"]
38
+ print(f"📥 Resposta recebida: {resposta_bot[:50]}...")
 
39
  return resposta_bot
40
 
41
  except Exception as e:
42
+ print(f"❌ ERRO ao chamar a API da Mistral: {e}")
43
+ return f" Erro ao processar sua solicitação: {e}"
 
 
 
 
44
 
45
+ # --- Interface do Gradio ---
 
46
  interface = gr.ChatInterface(
47
+ fn=chatbot_response,
48
+ title="🤖 Meu Chatbot com Mistral AI",
49
+ description="Converse com um modelo da Mistral AI em tempo real!",
50
+ examples=[
51
  ["Qual a capital do Brasil?"],
52
  ["Explique o que é inteligência artificial."],
53
  ["Sugira 3 nomes para um cachorro."],
54
  ],
 
55
  )
56
 
57
+ # --- Lançamento da aplicação ---
 
 
 
58
  if __name__ == "__main__":
59
+ interface.launch()