import gradio as gr import requests import pandas as pd from scipy import stats from difflib import get_close_matches import google.generativeai as genai # Proper configuration with your API key genai.configure(api_key="AIzaSyCm57IpC9_TTL7U3m8wvje9_3qtfxAASgI") # Replace YOUR_API_KEY with the actual API key # Set up the model configuration generation_config = { "temperature": 0.7, "top_p": 1, "top_k": 1, "max_output_tokens": 2048,} # Safety settings safety_settings = [ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}, ] # Initialize the model model = genai.GenerativeModel(model_name="gemini-pro", generation_config=generation_config, safety_settings=safety_settings) def interpretar_e_refinar_busca(query): prompt = f"Corrigir e refinar a busca: '{query}' para uma consulta mais precisa." response = model.generate_content(prompt) refined_query = response.text.strip() return refined_query def fetch_data_to_dataframe(query, limit=50, source="mercadolibre"): if source == "mercadolibre": BASE_URL = "https://api.mercadolibre.com/sites/MLB/search" params = {'q': query, 'limit': limit} response = requests.get(BASE_URL, params=params) if response.status_code == 200: data = response.json() if 'results' in data: items = data['results'] df = pd.DataFrame(items) df = df[['title', 'price', 'currency_id', 'condition', 'permalink']] df.columns = ['Title', 'Price', 'Currency', 'Condition', 'Link'] return df return pd.DataFrame() def filtrar_itens_similares(df, termo_pesquisa, limite=5): titulos = df['Title'].tolist() titulos_similares = get_close_matches(termo_pesquisa, titulos, n=limite, cutoff=0.1) df_filtrado = df[df['Title'].isin(titulos_similares)] return df_filtrado def integrated_app(query): # Primeiro, use o GEMINI para interpretar e possivelmente corrigir/refinar a busca refined_query = interpretar_e_refinar_busca(query) # Depois, busque os dados no Mercado Livre usando a query refinada df = fetch_data_to_dataframe(refined_query, 50, "mercadolibre") if df.empty: return "Nenhum dado encontrado. Tente uma consulta diferente.", pd.DataFrame() # A partir daqui, você pode continuar com a filtragem por similaridade ou outra lógica de pós-processamento # Por simplicidade, vamos retornar diretamente os resultados median_price = df['Price'].median() return f"Preço Mediano: {median_price}", df iface = gr.Interface(fn=integrated_app, inputs=gr.Textbox(label="Digite sua consulta"), outputs=[gr.Textbox(label="Preço Mediano"), gr.Dataframe(label="Resultados da Pesquisa")], title="Análise Integrada de Bens", description="Esta aplicação busca dados no Mercado Livre e filtra para encontrar itens com nomes similares ao termo de pesquisa, oferecendo uma análise de preços e características desses itens.") iface.launch()