Spaces:
Sleeping
Sleeping
File size: 3,467 Bytes
c5a97b3 b6a54e8 2598bbd c5a97b3 3bd1e98 2598bbd 4fd0504 2598bbd 17a40a4 2598bbd 7a6bd46 2598bbd 7a6bd46 2598bbd c5a97b3 3bd1e98 2598bbd 7a6bd46 2598bbd c5a97b3 3bd1e98 2598bbd 3bd1e98 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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() |