Trabalhoemcasa commited on
Commit
baa5f9b
·
verified ·
1 Parent(s): 1905d28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -35
app.py CHANGED
@@ -1,44 +1,53 @@
1
  import os
2
  import gradio as gr
3
  from mistralai.client import MistralClient
4
- from mistralai.models.chat_completion import ChatMessage # Importe ChatMessage
 
5
 
6
  # --- Configuração da API da Mistral ---
7
 
8
  # Acesse a chave da API a partir da variável de ambiente (o nome do Secret em maiúsculas)
 
9
  api_key = os.environ.get("CHAT01")
10
 
11
- # Verificação se a chave foi encontrada
 
12
  if not api_key:
13
- # Se a chave não estiver configurada, levantamos um erro ou definimos o cliente como None
14
- # Para este template, vamos imprimir um aviso e não inicializar o cliente Mistral
15
  print("AVISO: A chave da API Mistral (CHAT01) não está configurada nas variáveis de ambiente.")
16
- print("O bot não poderá responder usando a Mistral.")
17
- mistral_client = None # Define o cliente como None se a chave não for encontrada
18
  else:
19
- # Inicialize o cliente da Mistral com a sua chave
20
  try:
21
  mistral_client = MistralClient(api_key=api_key)
22
  print("Cliente Mistral inicializado com sucesso!")
23
  except Exception as e:
24
- print(f"Erro ao inicializar o cliente Mistral: {e}")
25
- mistral_client = None # Define o cliente como None em caso de erro na inicialização
 
 
26
 
27
  # --- Função de Chat que usa a API da Mistral ---
28
 
29
  def chatbot_response(message, history):
30
  """
31
- Processa a mensagem do usuário e obtém uma resposta da API da Mistral.
 
32
  """
33
  # 'history' é uma lista de listas, onde cada sublista é [user_message, bot_response]
 
34
 
35
- # Verifica se o cliente Mistral foi inicializado (se a chave da API estava disponível e válida)
 
36
  if mistral_client is None:
37
- return "Desculpe, a API da Mistral não está configurada ou ocorreu um erro na inicialização. Não posso responder no momento."
 
38
 
39
- # Formata o histórico da conversa para o formato da API da Mistral
40
  messages = []
41
  for human, assistant in history:
 
42
  messages.append(ChatMessage(role="user", content=human))
43
  messages.append(ChatMessage(role="assistant", content=assistant))
44
 
@@ -47,41 +56,46 @@ def chatbot_response(message, history):
47
 
48
  try:
49
  # Chama a API da Mistral para obter a resposta
50
- print(f"Chamando API da Mistral com mensagem: {message}")
51
  chat_response = mistral_client.chat(
52
- model="mistral-large-latest", # Use o nome do modelo Mistral que você deseja (ex: mistral-tiny, mistral-small, mistral-medium, mistral-large-latest)
 
 
 
53
  messages=messages
54
  )
 
55
  resposta_bot = chat_response.choices[0].message.content
56
- print(f"Resposta da API: {resposta_bot}")
57
  return resposta_bot
58
 
59
  except Exception as e:
60
- print(f"Ocorreu um erro ao chamar a API da Mistral: {e}")
61
- # Em caso de erro na chamada da API, retorna uma mensagem de erro
62
- return f"Desculpe, ocorreu um erro ao obter a resposta: {e}"
 
63
 
64
  # --- Configuração da Interface Gradio ---
65
 
66
- # Cria a interface de chat do Gradio
67
- # `chatbot_response` é a função que será chamada quando o usuário enviar uma mensagem
68
- # `inputs` define o componente de entrada (um Chatbot para histórico e um Textbox para nova mensagem)
69
- # `outputs` define o componente de saída (um Chatbot para exibir a conversa)
70
  interface = gr.ChatInterface(
71
- fn=chatbot_response,
72
- title="Meu Chatbot Inteligente com Mistral AI",
73
- description="Converse com um modelo da Mistral AI via API.",
74
- examples=[
75
  ["Qual a capital do Brasil?"],
76
- ["Explique sobre o teorema de Pitágoras de forma simples."],
77
- ["Conte uma pequena história sobre um robô amigável."],
78
- ]
 
79
  )
80
 
81
- # Inicia a interface Gradio
82
- # `launch(share=True)` cria um link público temporário (útil para testar)
83
- # `launch()` sem share=True roda localmente ou no Space
 
84
  if __name__ == "__main__":
85
- # No Hugging Face Spaces, o launch() é geralmente chamado sem argumentos adicionais
86
- # Se estiver testando localmente e quiser um link público, use share=True
87
  interface.launch()
 
1
  import os
2
  import gradio as gr
3
  from mistralai.client import MistralClient
4
+ # CORREÇÃO: Importação correta para ChatMessage na versão atual 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
 
 
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 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()