Crie Seu Próprio Assistente Pessoal para Mercado Livre Integrado ao WhatsApp com ChatGPT!
- Kauã Winter

- 17 de fev.
- 3 min de leitura
Vamos analisar um código que integra Flask, OpenAI, Mercado Livre e Z-API para criar um assistente automatizado. Essa aplicação permite processar pedidos do Mercado Livre, armazená-los em um banco de vetores e responder a perguntas via WhatsApp.
Tecnologias Utilizadas
Flask: Framework web para criar APIs.
OpenAI: Usado para gerar respostas baseadas em IA.
LangChain & ChromaDB: Para armazenar e buscar informações em um banco de
vetores.
Z-API: API que possibilita envio e recebimento de mensagens no WhatsApp.
Mercado Livre API: Utilizada para obter pedidos recentes de um vendedor.
Estrutura do Código
O código é dividido em três partes principais:
Configuração e Inicialização
Busca e Armazenamento de Pedidos
Webhook para Receber e Responder Mensagens
1. Configuração e Inicialização
import osfrom flask import Flask, request, jsonifyimport requestsimport openaifrom langchain.vectorstores import Chromafrom langchain.embeddings import OpenAIEmbeddings Aqui, importamos as bibliotecas necessárias. Depois, definimos algumas configurações:
app = Flask(__name__)# Configurações da Z-APIZAPI_URL = "https://api.z-api.io"INSTANCE_TOKEN = "<SEU_INSTANCE_TOKEN>"INSTANCE_ID = "<SEU_INSTANCE_ID>"CLIENT_TOKEN = "<SEU_CLIENT_TOKEN>"# Configurações da OpenAIopenai.api_key = os.getenv("OPENAI_API_KEY")embeddings = OpenAIEmbeddings()# Configurações da API do Mercado LivreMELI_API_URL = "https://api.mercadolibre.com/" # URL para buscar os pedidos recentes# Configuração do ChromaCHROMA_DB_PATH = "./chroma_db"vector_store = Chroma(persist_directory=CHROMA_DB_PATH, embedding_function=embeddings)O Flask cria a API.
O Z-API possibilita o envio de mensagens no WhatsApp.
O ChromaDB armazena informações extraídas dos pedidos do Mercado Livre.
A OpenAI é usada para gerar respostas baseadas nas informações armazenadas.
2. Busca e Armazenamento de Pedidos
A função fetch_orders() busca pedidos recentes do Mercado Livre e os armazena no banco de vetores.
from datetime import datetime, timedeltadef fetch_orders(access_token): try: # Busca os pedidos recentes na API do Mercado Livre com paginação headers = {"Authorization": f"Bearer {access_token}"} total_orders = 0 offset = 0 limit = 50 orders = [] url = MELI_API_URL + "orders/search/recent?seller=129223542" # Calcula a data de 15 dias atrás date_from = (datetime.utcnow() - timedelta(days=60)).strftime("%Y-%m-%dT%H:%M:%S.000Z") while True: params = { "offset": offset, "limit": limit, "sort": "date_desc", "date_from": date_from # Data ajustada para os últimos 60 dias } response = requests.get(url, headers=headers, params=params) if response.status_code != 200: return jsonify({"error": "Failed to fetch orders", "details": response.text}), response.status_code data = response.json() results = data.get("results", []) orders.extend(results) if len(results) < limit: break offset += limit # Processa e salva os pedidos no banco de vetores for order in orders: order_text = f"Pedido {order['id']} - Cliente: {order['buyer']['nickname']} - Total: {order['total_amount']} - Data: {order['date_created']} - Status: {order['status']} - Itens: {', '.join([item['item']['title'] for item in order['order_items']])}" print(order_text) vector_store.add_texts([order_text]) total_orders += 1 vector_store.persist() return jsonify({"status": "Orders fetched and saved successfully", "orders_count": len(orders)}), 200 except Exception as e: return jsonify({"error": f"An error occurred: {str(e)}"}), 500Essa função:
Obtém pedidos dos últimos 60 dias.
Percorre os pedidos usando paginação.
Salva os pedidos no banco de vetores usando ChromaDB.
3. Webhook para Responder Mensagens
A função webhook() recebe mensagens do WhatsApp, consulta o banco de vetores e responde com base nos dados armazenados.
@app.route("/webhook", methods=["POST"])def webhook(): data = request.json if not data: return jsonify({"error": "Invalid payload"}), 400 if "text" in data and "message" in data["text"]: sender = data.get("phone") message_body = data["text"].get("message") try: # Consulta ao banco de vetores search_results = vector_store.similarity_search(message_body, k=10) if search_results: # Combina todas as informações relevantes encontradas relevant_data = " ".join([result.page_content for result in search_results]) # Usa a IA generativa para criar uma resposta contextualizada chat_response = openai.chat.completions.create( model="gpt-4o-mini", temperature=0.1, messages=[ {"role": "system", "content": "Você é um assistente preciso que responde com base nos dados fornecidos."}, {"role": "user", "content": f"Baseado nos seguintes dados: '{relevant_data}', responda à pergunta: '{message_body}'"} ] ) # Extrai a resposta do JSON retornado pela IA response_message = chat_response.choices[0].message.content else: response_message = ( "Desculpe, não encontrei informações relevantes para sua pergunta. " "Você pode tentar reformular ou fornecer mais detalhes." ) except Exception as e: print(f"Erro ao consultar o banco de vetores ou IA: {e}") response_message = "Houve um erro ao processar sua mensagem. Por favor, tente novamente." # Envia a resposta pelo WhatsApp usando a Z-API send_message(sender, response_message) return jsonify({"status": "success"}), 200A função:
Recebe mensagens do WhatsApp.
Busca informações relevantes no banco de vetores.
Usa a OpenAI para gerar uma resposta baseada nesses dados.
Envia a resposta de volta pelo WhatsApp usando Z-API.
Enviando Mensagens pelo WhatsApp
def send_message(to, message): url = f"{ZAPI_URL}/instances/{INSTANCE_ID}/token/{INSTANCE_TOKEN}/send-text" payload = { "phone": to, "message": message } headers = { "Client-Token": CLIENT_TOKEN } response = requests.post(url, json=payload, headers=headers) if response.status_code != 200: print(f"Erro ao enviar mensagem: {response.text}")Executando a Aplicação
if __name__ == "__main__": # with app.app_context(): # fetch_orders("<SEU_TOKEN_MELI>") app.run(debug=True, port=8080)Conclusão
Esse projeto integra várias tecnologias para criar um assistente inteligente que:
Obtém pedidos do Mercado Livre.
Salva dados em um banco de vetores.
Responde perguntas via WhatsApp com base nesses dados usando IA.
Assista nosso vídeo no Youtube para ter o conteúdo completo.
👉 Acesse o Link: https://youtu.be/hrcRhqDBfRw?si=Z74ZTzL8wlAzbANE
Código completo 👉 https://github.com/Pxeba/GptMeliWhatsapp/blob/main/app.py




Comentários