IAnato / app.py
monitora988's picture
Create app.py
aa383c9 verified
Raw
History Blame Contribute Delete
2.63 kB
import os
import google.generativeai as genai
import gradio as gr
from dotenv import load_dotenv
# Carrega variáveis de ambiente
load_dotenv()
# Configura a API do Gemini
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
genai.configure(api_key=GOOGLE_API_KEY)
# Configurações do modelo
generation_config = {
"temperature": 0.7,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 2048,
}
# Inicializa o modelo
model = genai.GenerativeModel(
model_name="gemini-1.5-pro", # ou "gemini-1.5-flash" para mais rápido
generation_config=generation_config,
)
def chat_with_gemini(message, history):
"""
Função para interagir com o Gemini
"""
try:
# Inicia uma conversa
chat = model.start_chat(history=[])
# Envia a mensagem e obtém resposta
response = chat.send_message(message)
return response.text
except Exception as e:
return f"Erro: {str(e)}"
# Cria a interface com Gradio
def create_interface():
with gr.Blocks(theme=gr.themes.Soft(), title="Chat com Gemini") as demo:
gr.Markdown("""
# 🤖 Chat com Google Gemini
### Converse com o modelo Gemini do Google AI
""")
chatbot = gr.Chatbot(label="Conversa", height=500)
with gr.Row():
msg = gr.Textbox(
label="Sua mensagem",
placeholder="Digite sua pergunta aqui...",
scale=9
)
send_btn = gr.Button("Enviar", variant="primary", scale=1)
clear_btn = gr.Button("Limpar conversa", variant="secondary")
def respond(message, chat_history):
if not message:
return "", chat_history
# Obtém resposta do Gemini
response = chat_with_gemini(message, chat_history)
# Adiciona à conversa
chat_history.append((message, response))
return "", chat_history
def clear_chat():
return []
# Conecta os eventos
send_btn.click(
respond,
inputs=[msg, chatbot],
outputs=[msg, chatbot]
)
msg.submit(
respond,
inputs=[msg, chatbot],
outputs=[msg, chatbot]
)
clear_btn.click(
clear_chat,
outputs=[chatbot]
)
return demo
# Executa a aplicação
if __name__ == "__main__":
demo = create_interface()
demo.launch(server_name="0.0.0.0", server_port=7860)