Skip to main content
Glama

Mercadinho Mercantes Multi-Agent AI Assistant

chat_multi_agent_client.py6.37 kB
from agents import Agent, ModelSettings, Runner from agents.mcp import MCPServerStdio import streamlit as st from dotenv import load_dotenv import asyncio, json, sys if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) st.markdown("<h1 style='text-align: center;'>Mercadinho Mercantes</h1>", unsafe_allow_html=True) _, cent_co, _ = st.columns(3) with cent_co: st.image("images/Gemini_Generated_Image_kmsn80kmsn80kmsn.png", caption="Mercadinho Mercantes") if "history" not in st.session_state: load_dotenv() st.session_state.history = [] for message in st.session_state.history: type = message.get("role", None) or message.get("type", None) match type: case 'user': with st.chat_message(type): st.markdown(message["content"]) case 'assistant': with st.chat_message(type): st.markdown(message["content"][0]["text"]) case 'function_call': if "transfer_to" not in message["name"]: with st.chat_message(name="tool", avatar=":material/build:"): st.markdown(f'LLM chamando tool {message["name"]}') with st.expander("Visualizar argumentos"): st.code(message["arguments"]) case 'function_call_output': try: obj = json.loads(message['output']) with st.chat_message(name="tool", avatar=":material/data_object:"): with st.expander("Visualizar resposta"): st.code(obj["text"]) except: continue if "agentRecepcao" not in st.session_state: agenteManutencaoSocio = Agent( name="ManutencaoSocioAssistente", model="gpt-4-1106-preview", handoff_description="Assistente de compra/consulta para clientes que já possuem carteira de sócio.", instructions="Você é um assistente da Mercadinho Mercantes que deve ajudar o cliente a consultar produtos e promoções." \ "Pergunte o nome completo para identificar o cliente e então use as ferramentas para descobrir os produtos e promoções que tem (get_info_cliente). " \ "Com base nisso colete as informações do que ele precisa, agende um horário na loja para ele comprar um produto com desconto especial (com reservar_pedido_com_desconto)." \ "Não é necessario escolher uma loja especifica, apenas agendar a visita na loja onde comprou o produtos. ", model_settings=ModelSettings(tool_choice="auto", temperature=0, parallel_tool_calls=False), ) agentVendas = Agent( name="VendasAssistente", model="gpt-4-1106-preview", handoff_description="Assistente para trativa de vendas, informações sobre produtos e agendamento de visitas e reservas de pedidos com descontos.", instructions="Você é um assistente da Mercadinho Mercantes que deve ajudar e convencer o cliente a comprar um produto." \ "Antes de tudo use a ferramenta get_produtos_disponiveis ou a ferramenta get_categorias_produtos_promocao_por_loja conforme a necessidade para conhecer as opções disponíveis e apresentar a ele. " \ "Você pode fazer perguntas para entender o que o cliente precisa e oferecer as melhores opções de produtos baseado na ferramenta que você chamou. " \ "Quando o cliente decidir, agende uma visita na loja mais próxima do cliente, para descobrir as lojas use get_lojas " \ "e para descobrir os itens/produtos dessa loja use get_promoção_por_loja. " \ "Se o cliente tiver a flag de desconto ativada, conceder mais 10%% de desconto sobre o valor do produto." "Então, agende a visita com a ferramenta agenda_visita_para_compra, onde você vai escolher a loja mais próxima do cliente.", model_settings=ModelSettings(tool_choice="auto", temperature=0, parallel_tool_calls=False), ) agentRecepcao = Agent( name="RecepcaoAssistente", model="gpt-4-1106-preview", handoffs=[agentVendas, agenteManutencaoSocio], instructions="Você é um assistente de recepção da Mercadinho Mercantes, uma empresa nacional de Varejo do Brasil." \ "Você é responsável pela recepção e deve apenas apresentar a empresa e oferecer as opções disponíveis. " \ "Apresente a Mercadinho Mercantes como empresa de varejo e orgulhosamente brasileira." \ "Mostre o site https://www.mecadinhomercantes.com.br/ para conhecer mais sobre a empresa." \ "Ofereça para conhecer os produtos e agendar uma visita nas lojas com possibilidade de provar e experimentar os produtos se possível." \ "Ou então no caso de querer troca ou revisão pode agendar uma visita a loja.", model_settings=ModelSettings(tool_choice="auto", temperature=0, parallel_tool_calls=False), ) st.session_state.agentRecepcao = agentRecepcao st.session_state.agentVendas = agentVendas st.session_state.agenteManutencaoSocio = agenteManutencaoSocio st.session_state.current_agent = agentRecepcao async def resolve_chat(): async with MCPServerStdio(params={"command": "mcp", "args": ["run", "server.py"]}) as server: st.session_state.agentVendas.mcp_servers = [server] st.session_state.agenteManutencaoSocio.mcp_servers = [server] result = await Runner.run( starting_agent=st.session_state.current_agent, input=st.session_state.history, context=st.session_state.history ) st.session_state.current_agent = result.last_agent st.session_state.history = result.to_input_list() prompt = st.chat_input("Digite sua pergunta:") if prompt: st.session_state.history.append({ "role": "user", "content": prompt }) with st.chat_message("user"): st.markdown(prompt) with st.spinner("Pensando..."): asyncio.run(resolve_chat()) st.rerun() if "current_agent" in st.session_state: st.toast(f"Agente atual: { st.session_state.current_agent.name }")

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lennonconstantino/mcp_mercadinho'

If you have feedback or need assistance with the MCP directory API, please join our Discord server