<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Mikaeri Ohana on Medium]]></title>
        <description><![CDATA[Stories by Mikaeri Ohana on Medium]]></description>
        <link>https://medium.com/@mikaeriohana?source=rss-3d59ab256122------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*JFyoaglLQUZNqDbf.</url>
            <title>Stories by Mikaeri Ohana on Medium</title>
            <link>https://medium.com/@mikaeriohana?source=rss-3d59ab256122------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 17:43:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@mikaeriohana/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Construindo sistemas multiagente seguros no Google Cloud]]></title>
            <link>https://medium.com/google-cloud-brasil/construindo-sistemas-multiagente-seguros-no-google-cloud-121035ce09ae?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/121035ce09ae</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[gemini]]></category>
            <category><![CDATA[google-cloud-platform]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Tue, 01 Sep 2026 02:52:57 GMT</pubDate>
            <atom:updated>2026-09-02T12:59:07.914Z</atom:updated>
            <content:encoded><![CDATA[<h3>Construindo sistemas multiagente seguros no Google Cloud — Jornada de Usuário e Visão de Arquitetura</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VNuLmXPamfWhRVg0G0CKQw.png" /></figure><blockquote>Este artigo é a primeira parte da tradução e localização do <a href="https://services.google.com/fh/files/events/agent_security.pdf">whitepaper técnico oficial do Google Cloud</a> sobre arquiteturas multiagente seguras.</blockquote><h3>Introdução</h3><p>A construção de arquiteturas multiagente exige uma rigorosa defesa em profundidade, tratando cada LLM e cada ferramenta como um vetor potencial para diversas ameaças de segurança — incluindo, mas não se limitando, a <em>prompt injection</em> ou exfiltração de dados.</p><p>O <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform"><strong>Gemini Enterprise Agent Platform</strong></a> do Google Cloud oferece controles nativos de segurança em múltiplos níveis, contemplando recursos fundamentais projetados especificamente para sistemas baseados em agentes. Essas capacidades auxiliam as empresas a escalar o uso de IA e reduzir o tempo até a entrada em produção, ao mesmo tempo em que ampliam a postura de segurança.</p><p>Esta sequência de artigos descreve a aplicação prática desses controles por meio do detalhamento do processo de construção de um exemplo real: um <strong>sistema automatizado de solicitação de garantia (<em>warranty claim system</em>)</strong>.</p><h3>Jornada do usuário: Registrando uma solicitação em um sistema de garantia</h3><p><em>(User journey: Filing a claim with a warranty claim system)</em></p><p>Imagine um cliente cujo eletrodoméstico inteligente de linha <em>premium</em> para de funcionar repentinamente. Frustrado, ele acessa o portal de suporte da sua empresa e preenche um formulário simples de texto livre: <em>“Descreva o seu problema”</em>. Em vez de navegar por menus suspensos complexos para categorizar a falha ou aguardar 48 horas pela resposta por e-mail de uma equipe de triagem, o usuário simplesmente digita o ocorrido e envia.</p><p>Em questão de segundos após o envio, o sistema de suporte impulsionado por IA lê a descrição, compreende o problema específico do aparelho e extrai o número de série fornecido. Nos bastidores — sem que o consumidor precise buscar comprovantes fiscais antigos ou aguardar um atendente humano consultar manualmente bases de dados — , o sistema verifica o status da garantia.</p><p>Com a garantia confirmada, o sistema rascunha de forma automática um pedido de substituição e emite uma etiqueta de remessa de devolução com uma transportadora <em>premium</em>. Para garantir a precisão e evitar fraudes automatizadas, essa etapa final de atendimento inclui uma breve retenção em fila interna para que um representante humano de suporte examine um resumo conciso, pré-validado, e clique em <strong>“Aprovar”</strong>.</p><p>Apenas alguns minutos após o envio do formulário, o cliente recebe um e-mail informando que a substituição está a caminho, transformando uma experiência frustrante de quebra de hardware em uma jornada de alta fidelização quase sem atritos.</p><p>Como essa experiência fluida realmente funciona nos bastidores? É aí que entra a arquitetura multiagente segura.</p><h3>Visão geral da arquitetura: O Sistema de Solicitação de Garantia</h3><p><em>(Architecture overview: The Warranty Claim System)</em></p><p>O Sistema de Solicitação de Garantia é construído sobre o <strong>Gemini Enterprise Agent Platform</strong>. Seu objetivo principal é automatizar o processamento de solicitações de garantia de clientes, incluindo o diagnóstico dos problemas relatados, a verificação dos produtos no histórico de compras e termos de garantia, e a execução das etapas de cumprimento logístico (<em>fulfillment</em>), como a emissão de etiquetas de postagem para peças de reposição.</p><p>O sistema multiagente estabelece uma fronteira rígida de segurança ao dividir as tarefas entre três personas de agentes:</p><h4>Agente 1: Case Manager (Orquestrador)</h4><ul><li><strong>Ambiente de execução:</strong> Agent Runtime com <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/govern/agent-identity-overview"><em>Agent Identity</em></a>.</li><li><strong>Propósito:</strong> Atua como o líder de diagnóstico, consumindo o gatilho inicial do Pub/Sub e categorizando a solicitação do cliente. Sua função primária é coordenar o fluxo de trabalho, iniciando chamadas seguras agent-to-agent (<em>A2A) </em>para subagentes especializados.</li><li><strong>Fronteira de segurança:</strong> Acesso estritamente <strong>negado</strong> a informações de identificação pessoal (<em>PII</em>) ou registros financeiros.</li></ul><h4>Agente 2: BigQuery Agent (com Data Vault)</h4><ul><li><strong>Ambiente de execução:</strong> Agent Runtime com <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/govern/agent-identity-overview"><em>Agent Identity</em></a>.</li><li><strong>Propósito:</strong> Recebe entradas determinísticas e higienizadas (como números de série) para consultar termos de garantia em formato livre e retorna apenas um status simplificado (como “Covered”) para o Agente 1. O agente também consulta informações pessoais específicas (nome e endereço) necessárias para o Agente 3.</li><li><strong>Fronteira de segurança:</strong> Delega a execução a um servidor gerenciado de <a href="https://docs.cloud.google.com/bigquery/docs/use-bigquery-mcp"><strong>Model Context Protocol (MCP)</strong> do Google Cloud para o BigQuery</a>. Este agente recebe permissões IAM exclusivas para consultar as tabelas de transações e garantias no BigQuery. Ele consulta unicamente os dados pessoais estritamente necessários para a entrega e é o <strong>único ponto de contato com o BigQuery</strong> em toda a arquitetura.</li></ul><h4>Agente 3: Logistics Liaison (Executor)</h4><ul><li><strong>Ambiente de execução:</strong> Cloud Run. A implantação do <em>Logistics Liaison</em> no Cloud Run demonstra a facilidade de integrar plataformas gerenciadas de IA com ambientes conteinerizados customizados. Vale ressaltar que esse agente poderia ser implantado diretamente no Agent Runtime (que suporta contêineres próprios — BYOC e operações de longa duração de até sete dias), mas este artigo demonstra propositalmente a integração entre Cloud Run e Agent Runtime.</li><li><strong>Propósito:</strong> Gerencia a fase de atendimento e cumprimento (<em>fulfillment</em>).</li><li><strong>Fronteira de segurança:</strong> O agente recebe acesso apenas aos dados pessoais específicos (nome e endereço) indispensáveis para a entrega, gerando etiquetas de remessa por meio de APIs externas habilitadas com MCP. Para mitigar riscos, conta com um gatilho de <strong>Human-in-the-Loop (HITL)</strong> que sinaliza automaticamente padrões anômalos para especialistas de fraude antes de qualquer ação externa ser disparada.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w1sRrAVQ67Os_b2J-7ArNA.png" /><figcaption>Figura 1: Arquitetura do Sistema de Solicitação de Garantia</figcaption></figure><p>A arquitetura do Sistema de Solicitação de Garantia na Figura 1 descreve uma sequência de eventos que pode ser dividida em três fases. Cada fase descreve, em detalhes, os componentes da arquitetura.</p><h4>Fase 1</h4><p>Esta fase gerencia a interação inicial do usuário, garantindo que o prompt seja sanitizado pelo <a href="https://docs.cloud.google.com/model-armor/overview"><strong>Model Armor</strong></a> antes de alcançar qualquer agente.</p><p><strong>1 — Envio da solicitação (<em>Claims submission</em>):</strong> O cliente envia os dados através do Portal Web do Cliente (executado no Cloud Run), que publica o evento em um tópico de destino do <a href="https://docs.cloud.google.com/pubsub/docs/overview">Cloud Pub/Sub</a>.</p><p><strong>2 — Gatilho de evento (<em>Event trigger</em>):</strong> A assinatura do Pub/Sub aciona uma Cloud Run Function (o “<em>Shim Session Manager”</em>).</p><p><strong>a. Inicialização da sessão (<em>Session initialization</em>):</strong> O <em>Shim Session Manager</em> recebe o payload raw e a envia ao <a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/govern/gateways/agent-gateway-overview"><strong>Agent Gateway</strong></a>. O Agent Gateway estabelece uma sessão segura e prepara o roteamento do tráfego para o Gemini Enterprise Agent Platform Runtime (<a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/scale/runtime/deploy-an-agent">Agent Runtime</a>).</p><p><strong>3 — Sanitização de entrada (<em>Input sanitization</em>):</strong> Antes de rotear o prompt para o <em>Case Manager</em>, o Agent Gateway o submete ao <strong>Model Armor</strong> (integrado ao <a href="https://docs.cloud.google.com/sensitive-data-protection/docs/sensitive-data-protection-overview"><em>Sensitive Data Protection — SDP</em></a>). O Model Armor realiza uma varredura de segurança em tempo real, filtrando tentativas de prompt injection, jailbreaks e mascaramento de informações pessoais (PII), passando apenas os dados da solicitação sanitizados para o agente<em> Case Manager</em>.</p><h4>Fase 2</h4><p>Nesta fase, o <em>Case Manager</em> delega a pesquisa de dados ao agente <em>Data Vault</em>. Com controles rigorosos de <em>ingress</em> configurados nos ambientes de execução, os agentes ficam impedidos de se comunicar <em>peer-to-peer</em>. Todo o tráfego lateral transita deliberadamente através do Agent Gateway. Os componentes arquitetônicos e a sequência de ações nesta fase são os seguintes:</p><p><strong>4 — Categorizar e delegar:</strong> O agente <em>Case Manager</em> recebe a solicitação sanitizada. Se a solicitação for considerada legítima, o agente<em> Case Manager</em> deve verificar o histórico de compras e a cobertura da garantia; em seguida, inicia uma chamada segura de agent-to-agent (A2A) para o Agente <em>Data Vault</em>.</p><p><strong>5 — Consulta no BigQuery:</strong> O agente <em>Data Vault</em> utiliza suas permissões exclusivas do IAM para acessar dados confidenciais e consulta dados das tabelas de Garantia e Vendas do BigQuery. Ele realiza verificações em números de série, datas de compra, etc., por meio do Google Cloud BigQuery MCP server.</p><p><strong>6 — <em>Status distillation</em>:</strong> O agente <em>Data Vault </em>processa os dados brutos e os destila em um status conciso (ex.: “Coberto”, “Não Coberto”, “Expirado”). Durante essa avaliação, a IA também detecta incongruências (ex.: dados divergentes ou histórico suspeito), classificando o caso como “Suspeito”.</p><p><strong>7 — Retorno de resultado:</strong> O agente <em>Data Vault </em>devolve ao <em>Case Manager</em> apenas o status destilado, a avaliação de anomalia e o PII mínimo necessário para a remessa.</p><h4>Fase 3</h4><p>O agente <em>Case Manager</em> orquestra a execução das ações reais através do agente <em>Logistics Liaison</em>, um serviço determinístico no Cloud Run focado unicamente na mecânica de cumprimento logístico, integrado a safeguards humanos e auditoria abrangente. Os componentes de arquitetura e a sequência de ações nesta fase são os seguintes:</p><p><strong>8 — <em>Handover</em> logístico:</strong> O <em>Case Manager</em> orquestra o <em>handover, </em>encaminhando o status da garantia, os dados de remessa e quaisquer sinalizações de anomalia gerados por IA ao agente <em>Logistics Liaison</em>.</p><p><strong>9 — Seleção de ação:</strong> O agente <em>Logistics Liaison</em> recebe a diretiva do agente <em>Case Manager</em> e aplica lógica determinística para encaminhar a execução:</p><p><strong>a. Ramificação A (“Coberto”):</strong> Se o status for “Coberto” e nenhuma anomalia for sinalizada, o agente Logistics Liaison aciona as ferramentas MCP de Envio e E-mail para gerar uma etiqueta de envio de devolução <em>premium</em> e redigir um e-mail de confirmação, colocando a ação em uma fila interna para um clique final de “Aprovar” no HITL.</p><p><strong>b. Ramificação B (“Expirado”):</strong> Se a garantia estiver “Expirada”, o agente <em>Logistics Liaison</em> aciona a ferramenta MCP de Oferta de Desconto para enviar automaticamente uma oferta de desconto em uma unidade de substituição.</p><p><strong>c. Ramificação C (“Suspeito”):</strong> Se o <em>payload</em> dos agentes <em>upstream</em> incluir um indicador “Suspeito”, o agente <em>Logistics Liaison</em> aciona um código determinístico, ignora o processamento automatizado e encaminha a reclamação para uma fila de Fraudes &amp; Alertas para análise humana imediata.</p><p><strong>10 — Retorno de resumo de ação:</strong> Concluída ou sinalizada a ação, o agente <em>Logistics Liaison</em> envia um resumo ao agente <em>Case Manager</em> (ex.: <em>“ID de substituição gerado: [ID], aguardando aprovação HITL”</em>).</p><p><strong>11 — Relatório final:</strong> Ao concluir suas tarefas de orquestração, o agente do<em> Case Manager</em> compila um relatório resumido. Este relatório engloba as principais conclusões (por exemplo, categoria do problema, status da garantia “Coberto”) e ações iniciadas. Este resumo é então gravado pelo agente <em>Case Manager</em> em um bucket do Cloud Storage para revisão comercial, registro a longo prazo ou análise potencial.</p><blockquote>Nota: À medida que o agente Case Manager conclui o ciclo do fluxo de trabalho, as interações com o sistema, as comunicações A2A e as ações de atendimento geram registros que são capturados no <a href="https://docs.cloud.google.com/logging/docs">Cloud Logging</a>. Além disso, interações específicas com os serviços do Google Cloud, como o acesso a dados no BigQuery, também são registradas no <a href="https://docs.cloud.google.com/logging/docs/audit">Cloud Audit Logs</a>.</blockquote><p>Este foi o primeiro artigo da nossa série técnica baseada no <a href="https://services.google.com/fh/files/events/agent_security.pdf">whitepaper do Google Cloud</a> sobre arquiteturas multiagente corporativas seguras. <br> <br>Neste artigo, exploramos a jornada de atendimento do <strong>Sistema de Solicitação de Garantia</strong> e conhecemos a visão geral da arquitetura que divide responsabilidades entre três personas de agentes (<strong>Case Manager</strong>, <strong>Data Vault</strong> e <strong>Logistics Liaison</strong>) para impor fronteiras rígidas de segurança e menor privilégio.</p><h4>O que vem a seguir no próximo artigo?</h4><p>No próximo artigo, veremos em detalhes práticos:<br> — <strong><em>Design seguro com SAIF (Secure AI Framework)</em></strong><em>:</em> Como proteger o raciocínio do modelo vs. as ações do agente;</p><p><strong><em>— Por que abandonar Service Accounts tradicionais:</em></strong> A chegada do <em>Agent Identity</em> (identidades criptográficas vinculadas ao ciclo de vida via SPIFFE e mTLS);</p><p><strong>— Implementação com ADK e MCP: </strong>Como blindar conexões ao BigQuery com callbacks determinísticos (<em>BeforeToolCallback</em>) e criar gatilhos de aprovação humana (<em>HITL</em>);</p><p><strong>— Segurança na esteira de CI/CD:</strong> Proveniência com SLSA Nível 3 e controle de admissão de contêineres com <em>Binary Authorization</em>.</p><p>Acompanhe a série completa:<br><strong> — Parte 1: Introdução, Jornada do Usuário e Visão Geral da Arquitetura</strong> <em>(este post)</em><br><strong> — Parte 2: Construindo e implantando uma arquitetura segura baseada em agentes<br> — Parte 3: Interações de agentes e tempo de execução<br> — Parte 4: Observabilidade e detecção de ameaças<br> — Parte 5: Próximos passos: a abordagem <em>crawl, walk, run</em></strong></p><p>💬 <strong>Como sua equipe lida com limites de segurança entre múltiplos agentes de IA?</strong> Compartilhe suas experiências e desafios nos comentários!<br> <br> 👏 Se este artigo foi útil para você, <strong>deixe seus claps</strong> e <strong>siga o perfil</strong> aqui no Medium para não perder os próximos capítulos desta jornada técnica.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=121035ce09ae" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-cloud-brasil/construindo-sistemas-multiagente-seguros-no-google-cloud-121035ce09ae">Construindo sistemas multiagente seguros no Google Cloud</a> was originally published in <a href="https://medium.com/google-cloud-brasil">google-cloud-brasil</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Lab to Clinic: Unlocking Gemma 3’s latest medical AI]]></title>
            <link>https://medium.com/@mikaeriohana/from-lab-to-clinic-unlocking-gemma-3s-latest-medical-ai-9e3b9ce53f81?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/9e3b9ce53f81</guid>
            <category><![CDATA[medgemma]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[gemma]]></category>
            <category><![CDATA[google-developer]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Tue, 01 Jul 2025 02:20:17 GMT</pubDate>
            <atom:updated>2025-07-01T02:20:17.266Z</atom:updated>
            <content:encoded><![CDATA[<h4>A new chapter in Healthcare AI: Google’s MedGemma brings specialized medical understanding to developers</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*93oPzckh2zJs1vPQ.jpeg" /><figcaption>MedGemma’s logo</figcaption></figure><p>MedGemma, Google’s specialized variant of Gemma 3, represents a breakthrough in medical AI with its advanced capabilities for medical text and image comprehension. This comprehensive overview examines MedGemma’s performance in radiology and neurological examinations, comparing its effectiveness against traditional diagnostic methods and exploring the transformative potential for clinical practice.</p><h3>Understanding MedGemma’s architecture</h3><p>MedGemma leverages two sophisticated architectures optimized for medical applications:</p><p><strong>MedGemma 4B multimodal system (we will use this one in the tutorial)</strong></p><ul><li><strong>Architecture</strong>: Decoder-only transformer with SigLIP image encoder</li><li><strong>Input processing</strong>: 896x896 resolution images encoded to 256 tokens</li><li><strong>Medical imaging specialization</strong>: Pre-trained on chest X-rays, CT scans, MRI sequences, and neurological imaging</li><li><strong>Context window</strong>: 128K tokens input, 8192 tokens output</li><li><strong>Variants</strong>: Available in both pre-trained and instruction-tuned versions</li></ul><p><strong>MedGemma 27B text analysis engine</strong></p><ul><li><strong>Optimization</strong>: Specifically designed for medical text comprehension and clinical reasoning</li><li><strong>Use Cases</strong>: Radiology report analysis, neurological assessment interpretation, clinical decision support</li><li><strong>Performance</strong>: Enhanced inference-time computation for complex medical reasoning</li></ul><h4>Key Medical Imaging Capabilities</h4><p><strong>Advanced image analysis</strong></p><ul><li>Multi-modality support: X-ray, CT, MRI, PET scans</li><li>Automated anomaly detection and localization</li><li>Quantitative measurement extraction</li><li>3D reconstruction support for volumetric data</li></ul><p><strong>Clinical report generation</strong></p><ul><li>Structured report creation from imaging studies</li><li>Integration of clinical context with imaging findings</li><li>Standardized terminology (RadLex, SNOMED CT)</li><li>Multi-language support for global deployment</li></ul><p><strong>Real-time interpretation</strong></p><ul><li>Immediate preliminary findings</li><li>Priority flagging for critical conditions</li><li>Integration with PACS and RIS systems</li><li>Support for emergency radiology workflows</li></ul><h3>Artifacts</h3><p><a href="https://huggingface.co/google/medgemma-4b-it"><em>1.google/medgemma-4b-it</em></a></p><p><a href="https://huggingface.co/google/medgemma-27b-text-it"><em>2. google/medgemma-27b-text-it</em></a></p><p><a href="https://huggingface.co/spaces/google/rad_explain"><em>3.Radiology workspace</em></a><em> on Hugging Face</em></p><h3>How to use</h3><p>You can use either with Vertex AI or Hugging Face.</p><p>In the Vertex AI Model Garden, you can see the overview of the model, as well as comprehensive performance metrics and detailed documentation.</p><p>The platform provides a centralized dashboard where developers can access benchmarking results, technical specifications, and implementation guides all in one place. It is the preferable way to use this model in production environments due to its enterprise-grade infrastructure, automatic scaling capabilities, and integrated monitoring tools that ensure reliable performance at scale.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6MXhc86ZQp0TnGH_pcb2LQ.png" /><figcaption>MedGemma model page on Model Garden — Google Cloud Platform</figcaption></figure><p>You can select if you want to deploy as an online endpoint — to connect with your own applications through APIs, or as an enterprise notebook for interactive development and experimentation within the Google Cloud environment. The online endpoint option is ideal for integrating MedGemma into existing healthcare applications or building new services that require real-time inference capabilities, while the enterprise notebook provides a collaborative environment for data scientists and researchers to explore the model’s capabilities.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ef2CiEtQGy4TwVmBbStG4g.png" /><figcaption>Deployment through the Vertex UI</figcaption></figure><p>Users can select from different model variants (27B text-only or 4B multimodal versions), choose their deployment region, and configure from various machine specifications available.</p><p>The interface indicates that users may need to request additional quota if their desired GPU configuration isn’t available in their selected region (in this case, the quotas were approved almost immediately).</p><p>Once configured, the deployment process takes a few minutes to complete.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*U8FH3bgBH22ThOYUolRaXA.png" /><figcaption>Deploying the endpoint</figcaption></figure><h4>Deploy on Hugging Face</h4><p>In this post, we will be covering the usage through Hugging Face, calling the model directly and using a GPU to execute it. This approach gives us more direct control over the model implementation and allows for detailed examination of its responses without the abstraction layers of managed services.</p><p>Since it is a gated model, you should accept the Terms and Conditions on Hugging Face in order to start using. You can also see the terms <a href="https://developers.google.com/health-ai-developer-foundations/terms">here</a>.</p><p>The 4B parameter variant generally needs a GPU equipped with a minimum of 4 GB of video memory to run effectively. That said, the actual memory requirements can fluctuate based on the particular model configuration and any optimization methods like quantization that might be applied to reduce the computational footprint.</p><p>In the demo, I used the image below, and asked the model to describe it:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FC3mVPiCGF9aHELt.png" /><figcaption>Chest X-Ray from Wikimedia</figcaption></figure><p>The model, even proposed to be used for research, has great results, as you can see in the <a href="https://colab.research.google.com/drive/1i0PAE1KhzN9T7dgfIctkfZ2LD8oIdSNN?usp=sharing">Colab notebook</a>.</p><pre>**General Impression:**<br><br>The chest X-ray shows normal anatomical structures of the thorax.<br><br>**Key Observations:**<br><br>*   **Lung Fields:** The lung fields are relatively clear bilaterally. There are no obvious consolidations, opacities, or masses readily apparent.<br>*   **Heart Size:** The heart size appears within normal limits.<br>*   **Mediastinum:** The mediastinum (the central compartment of the chest containing the heart, great vessels, trachea, etc.) appears unremarkable.<br>*   **Bones:** The ribs, clavicles, and thoracic spine appear intact, with no evidence of fractures or significant degenerative changes.<br>*   **Diaphragm:** The diaphragmatic domes are well-defined.<br>*   **Costophrenic Angles:** The costophrenic angles are sharp and clear.<br>*   **Overall Impression:** The film is technically adequate</pre><p>I tested this Chest X-Ray image with the model and, even though I’m not an expert, I could see that it noticed the differences in the lungs. This is a Chest X-Ray showing bilateral pulmonary changes. I observe diffuse opacities in both lungs, with a pattern suggesting inflammatory or infectious process. The changes appear more prominent in the lung bases and there’s a “ground glass” appearance or interstitial infiltrate.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*r0jZchVEs526tnyz.jpg" /><figcaption>Chest X-Ray from MedSchool</figcaption></figure><p>Here is the model output:</p><pre>Okay, I&#39;ve reviewed the chest X-ray. Here&#39;s a description based on the image provided:<br><br>**Overall Impression:** The image shows a significant amount of opacity in the left hemithorax, likely representing a pleural effusion. The right lung appears relatively clear.<br><br>**Specific Findings:**<br><br>*   **Bones:** The ribs, clavicles, and other bony structures appear intact. There&#39;s no evidence of acute fractures.<br>*   **Lungs:** The right lung is relatively clear, with no obvious consolidations or masses. The left lung shows a large opacity occupying the lower portion.<br>*   **Pleural Spaces:** There&#39;s a substantial amount of fluid in the left pleural space, obscuring the normal lung markings. The fluid level is visible, indicating the presence of a pleural effusion.<br>*   **Heart Size:** The heart size appears within normal limits.<br>*   **Mediastinum:** The mediastinum (the space between the lungs</pre><h3>Conclusion</h3><p>MedGemma represents a significant advancement in medical AI, particularly for radiology and neurological applications. With performance metrics consistently exceeding traditional methods in both accuracy and efficiency, this technology offers transformative potential for clinical practice. While designed for research and development purpose only (they are not clinical-grade tools and should not be used for actual patient care without proper validation and regulatory approval), MedGemma serves as a powerful augmentation tool that can enhance diagnostic accuracy, improve workflow efficiency, and ultimately lead to better patient outcomes.</p><p>The transition from traditional methods to AI-augmented practice requires careful validation, appropriate training, and thoughtful integration. However, the compelling performance advantages demonstrated across multiple imaging modalities and clinical scenarios suggest that MedGemma and similar technologies will play an increasingly central role in the future of medical imaging and neurological assessment.</p><h4>References:</h4><ul><li><a href="https://colab.research.google.com/drive/1i0PAE1KhzN9T7dgfIctkfZ2LD8oIdSNN?usp=sharing">Google Colab</a></li><li><a href="https://medgemma.org/">MedGemma: Advanced AI Models for Medical Text and Image Analysis | Google DeepMind</a></li><li><a href="https://developers.google.com/health-ai-developer-foundations/medgemma">MedGemma | Health AI Developer Foundations | Google for Developers</a></li><li><a href="https://deepmind.google/models/gemma/medgemma/">MedGemma</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9e3b9ce53f81" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gemini 2.0 — what to know about the new model family (with code!)]]></title>
            <link>https://medium.com/@mikaeriohana/gemini-2-0-what-to-know-about-the-new-model-family-with-code-ded8fe656307?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/ded8fe656307</guid>
            <category><![CDATA[gemini]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Mon, 03 Mar 2025 02:59:14 GMT</pubDate>
            <atom:updated>2025-03-03T03:14:38.501Z</atom:updated>
            <content:encoded><![CDATA[<h3>Gemini 2.0 — what to know about the new model family (with code!)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uCwNX0dNSELfnffw.png" /><figcaption>Gemini 2.0 model launch banner</figcaption></figure><p>Google has recently expanded its <strong>Gemini 2.0 model family</strong> with significant updates aimed at developers and production use cases.</p><p>The February 2025 announcement includes three key variants:</p><ul><li><strong>Gemini 2.0 Flash</strong> (now generally available);</li><li><strong>Gemini 2.0 Flash-Lite</strong> (a new cost-efficient option in public preview);</li><li><strong>Gemini 2.0 Pro</strong> (an experimental update - focused on coding and complex tasks).</li></ul><p>These releases follow the earlier introduction of <strong>Gemini 2.0 Flash Thinking Experimental</strong>, creating a comprehensive suite of models to address diverse application needs.</p><p>In the following sections, I’ll explore each new model in detail with practical code examples.</p><h3>Gemini 2.0 Flash: The GA Workhorse</h3><p>Gemini 2.0 Flash is positioned as Google’s workhorse model for daily tasks, combining enhanced performance with real-time capabilities. It represents an upgrade path for both 1.5 Flash users seeking better quality and 1.5 Pro users looking for better quality with real-time latency at a lower cost.</p><h4>Key features</h4><ul><li><strong>Multimodal input</strong>: Process text, images, and video in a single prompt</li><li><strong>1 million token context window</strong>: Process extensive documents and conversations</li><li><strong>Native tool use</strong>: Built-in function calling and tool integration</li><li><strong>Improved agentic capabilities</strong>: Better multimodal understanding, coding, and complex instruction following</li><li><strong>New modalities</strong>: Built-in image generation and controllable text-to-speech (in preview)</li></ul><h4>Code examples</h4><ul><li><strong>Basic text generation with Gemini 2.0 Flash</strong></li></ul><pre>from google import genai<br>from google.genai.types import HttpOptions<br><br># Configure for Vertex AI<br>import os<br>os.environ[&quot;GOOGLE_CLOUD_PROJECT&quot;] = &quot;your-project-id&quot;<br>os.environ[&quot;GOOGLE_CLOUD_LOCATION&quot;] = &quot;us-central1&quot;<br>os.environ[&quot;GOOGLE_GENAI_USE_VERTEXAI&quot;] = &quot;True&quot;<br><br># Initialize client<br>client = genai.Client(http_options=HttpOptions(api_version=&quot;v1&quot;))<br><br># Generate content with Gemini 2.0 Flash<br>response = client.models.generate_content(<br>    model=&quot;gemini-2.0-flash-001&quot;,<br>    contents=&quot;Explain quantum computing in simple terms&quot;,<br>)<br><br>print(response.text)</pre><ul><li><strong>Multimodal example</strong></li></ul><pre>from google import genai<br>from google.genai.types import HttpOptions<br>import PIL.Image<br><br># Initialize client<br>client = genai.Client(http_options=HttpOptions(api_version=&quot;v1&quot;))<br><br># Open an image<br>image = PIL.Image.open(&quot;circuit_diagram.jpg&quot;)<br><br># Create multimodal prompt<br>prompt = [<br> &quot;Analyze this circuit diagram and explain how it works:&quot;,<br> image<br>]<br><br># Generate response with multimodal input<br>response = client.models.generate_content(<br> model=&quot;gemini-2.0-flash-001&quot;,<br> contents=prompt<br>)<br>print(response.text)</pre><h3>Gemini 2.0 Flash-Lite: Cost-efficient option</h3><p>Gemini 2.0 Flash-Lite is Google’s newest, most cost-efficient model variant, specifically optimized for large-scale text output applications. This model is ideal for high-volume, budget-conscious implementations while still delivering solid performance.</p><h4>Key differentiators</h4><ul><li><strong>Cost optimization</strong>: Lowest-priced model in the Gemini family</li><li><strong>Scale focus</strong>: Designed for large-scale text processing applications</li><li><strong>Simplified pricing</strong>: Single price per input type with no distinction between short and long context</li><li><strong>Performance upgrade</strong>: Better quality for the same price and speed compared to 1.5 Flash</li></ul><p>What Gemini 2.0 Flash-Lite <strong>includes</strong>:</p><ul><li><strong>Multimodal input, text output</strong>: Process text and images as input, but produces only text responses</li><li><strong>1M token input context window</strong>: Process extensive documents and conversations</li><li><strong>8k token output context window</strong>: Generate comprehensive responses</li></ul><p>What 2.0 Flash-Lite <strong>does not</strong> include:</p><ul><li>Multimodal output generation (no image or video generation)</li><li>Integration with Multimodal Live API</li><li>Thinking mode</li><li>Built-in tool usage</li></ul><p><strong>Note:</strong> Some features available in 1.5 and lower models are not yet available for 2.0 models (for example, provisioned throughput and batch prediction). For complete Gemini 2.0 technical details, refer to the Google documentation about their models.</p><h4>Code examples</h4><ul><li><strong>Processing large volumes of text</strong></li></ul><pre>from google import genai<br>from google.genai.types import HttpOptions<br><br># Initialize client<br>client = genai.Client(http_options=HttpOptions(api_version=&quot;v1&quot;))<br><br># Process large volumes of text efficiently<br>def process_customer_feedback(feedback_list):<br>    results = []<br>    for feedback in feedback_list:<br>        response = client.models.generate_content(<br>            model=&quot;gemini-2.0-flash-lite&quot;,  # Using Flash-Lite model ID<br>            contents=f&quot;Categorize this customer feedback as positive, negative, or neutral and extract key themes: {feedback}&quot;,<br>        )<br>        results.append(response.text)<br>    return results<br><br>feedback_samples = [<br>    &quot;Your product has greatly improved my workflow. The interface is intuitive, though I wish there were more customization options.&quot;,<br>    &quot;I&#39;ve been experiencing frequent crashes when using the export feature. This is frustrating and causing delays in my work.&quot;,<br>    # ... more feedback items<br>]<br><br>analysis_results = process_customer_feedback(feedback_samples)<br>print(analysis_results)</pre><h3>Gemini 2.0 Pro: For complex tasks and coding</h3><p>Gemini 2.0 Pro represents Google’s experimental update focused on advanced coding capabilities and handling complex prompts. This variant is designed for developers working on sophisticated applications that require high-quality code generation and nuanced reasoning.</p><h4>Specialized capabilities</h4><ul><li><strong>Advanced coding</strong>: Improved code generation, debugging, and explanation</li><li><strong>Complex reasoning</strong>: Better handling of multi-step problems and nuanced instructions</li><li><strong>Experimental features</strong>: Access to cutting-edge capabilities still under development</li></ul><h4>Code examples</h4><ul><li>Function calling with Gemini Pro</li></ul><pre>from google import genai<br>from google.genai.types import HttpOptions, FunctionDeclaration, Tool<br><br># Initialize client<br>client = genai.Client(http_options=HttpOptions(api_version=&quot;v1&quot;))<br><br># Define function for weather information<br>get_weather = FunctionDeclaration(<br>    name=&quot;get_weather&quot;,<br>    description=&quot;Get current weather information for a location&quot;,<br>    parameters={<br>        &quot;type&quot;: &quot;object&quot;,<br>        &quot;properties&quot;: {<br>            &quot;location&quot;: {<br>                &quot;type&quot;: &quot;string&quot;,<br>                &quot;description&quot;: &quot;City and state, e.g., &#39;San Francisco, CA&#39;&quot;<br>            },<br>            &quot;unit&quot;: {<br>                &quot;type&quot;: &quot;string&quot;,<br>                &quot;enum&quot;: [&quot;celsius&quot;, &quot;fahrenheit&quot;],<br>                &quot;description&quot;: &quot;Temperature unit&quot;<br>            }<br>        },<br>        &quot;required&quot;: [&quot;location&quot;]<br>    }<br>)<br><br># Create a tool with this function<br>weather_tool = Tool(<br>    function_declarations=[get_weather]<br>)<br><br># Example user query that might require weather information<br>response = client.models.generate_content(<br>    model=&quot;gemini-2.0-pro-001&quot;,<br>    contents=&quot;What should I wear for my trip to Seattle tomorrow?&quot;,<br>    tools=[weather_tool],<br>    tool_config={&quot;function_calling_enabled&quot;: True}<br>)<br><br>print(response.text)<br># In actual implementation, you would handle the function call by retrieving<br># weather data from a real API based on the model&#39;s function callfrom google import genai</pre><h3>Choosing the right Gemini 2.0 Model</h3><p>Selecting the appropriate model within the Gemini 2.0 family depends on your specific use case, performance requirements, and budget constraints:</p><p><strong>2.0 Flash</strong></p><ul><li>General purpose applications</li><li>You need a balance of performance and cost with GA features</li></ul><p><strong>2.0 Flash-Lite</strong></p><ul><li>High-volume text processing</li><li>Budget is a primary concern for large-scale operations</li></ul><p><strong>2.0 Pro</strong></p><ul><li>Coding and complex tasks</li><li>You need the highest quality for challenging problems</li></ul><p><strong>2.0 Flash Thinking</strong></p><ul><li>Problems requiring reasoning</li><li>Accuracy is more important than response speed</li></ul><p>Whether you’re building a simple chatbot or a complex AI-powered application with sophisticated reasoning capabilities, there’s likely a Gemini 2.0 variant that fits your requirements.</p><p>Start exploring these models today with the code examples provided and see what you can build! 🥳</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ded8fe656307" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DataGemma: o novo modelo do Google conectado a dados do mundo real]]></title>
            <link>https://medium.com/@mikaeriohana/datagemma-o-novo-modelo-do-google-conectado-a-dados-do-mundo-real-e2faaa714559?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/e2faaa714559</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[gemini]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Tue, 01 Oct 2024 00:55:10 GMT</pubDate>
            <atom:updated>2024-10-01T00:55:10.468Z</atom:updated>
            <content:encoded><![CDATA[<p>Você provavelmente já passou por uma “alucinação” ao utilizar um Large Language Model (LLM) — e provavelmente, também já ouviu o quanto trazer dados reais a seus prompts e conectar ao seu workflow ajuda a garantir respostas mais plausíveis e realistas.</p><h4>O que é o DataGemma?</h4><p>Recentemente, Google anunciou seu novo modelo <a href="https://blog.google/technology/ai/google-datagemma-ai-llm/"><em>DataGemma</em></a> - um modelo aberto colocado para trazer respostas mais conectadas a fatos em LLMs. Ele busca ancorar as respostas desses modelos em dados reais, utilizando o <a href="https://apikeys.datacommons.org/?it=a">Data Commons</a> do Google — um vasto repositório de dados públicos confiáveis com mais de 240 bilhões de <em>data points </em>de fontes como a ONU e o CDC.</p><p>No <a href="https://docs.datacommons.org/papers/DataGemma-FullPaper.pdf">paper oficial</a>, são trazidas as duas principais abordagens utilizadas pelo DataGemma:</p><ol><li><strong>RIG (Retrieval-Interleaved Generation)</strong>: Quando a consulta envolve dados estatísticos, o modelo recupera e verifica as informações no Data Commons antes de gerar a resposta. Esse método permite que o modelo consulte dados de fontes confiáveis e os incorpore diretamente na resposta, aumentando a precisão.</li><li><strong>RAG (Retrieval Augmented Generation):</strong> O modelo recupera dados relevantes do Data Commons antes de gerar a resposta, incorporando essas informações ao contexto para melhorar a precisão. Como o volume de dados recuperados pode ser grande, é necessário usar LLMs com grandes janelas de contexto, como o <strong>Gemini 1.5 Pro</strong>, que suporta um número significativo de tokens.</li></ol><p>De forma prática, o <strong>RIG</strong> envolve o <em>fine-tuning</em> do LLM para gerar consultas em linguagem natural direcionadas ao Data Commons, além de fornecer estatísticas. Uma pipeline converte essas consultas em uma query estruturada, que é usada para obter respostas do banco de dados do Data Commons. Os resultados são comparados com os modelos básicos Gemma 7B IT e 27B IT.</p><p>O <strong>RAG </strong>segue uma metodologia mais tradicional de recuperação de informações. O modelo extrai variáveis mencionadas na consulta, recupera dados relevantes do Data Commons e amplia a consulta original com esse contexto, gerando a resposta com o LLM (no caso, o Gemini). Os resultados são comparados com o modelo base Gemini 1.5 Pro.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uonf0mITt8MDr1zia6p9yw.png" /><figcaption>Comparação das abordagens Baseline, RIG e RAG para gerar respostas com<br>dados estatísticos. <a href="https://docs.datacommons.org/papers/DataGemma-FullPaper.pdf">Fonte</a>.</figcaption></figure><p>Os testes iniciais mostraram que a integração com o Data Commons via RIG e RAG melhora significativamente a precisão dos LLMs, especialmente em perguntas que exigem respostas baseadas em fatos. Em particular, o uso de RIG resultou em uma precisão de cerca de <strong>58%</strong> nos casos em que o Data Commons retornou a estatística correta, contrastando com apenas <strong>5–17%</strong> de precisão quando os LLMs tentaram gerar respostas sem recuperar dados.</p><h4>Avaliação</h4><p>O que eu particularmente gosto de olhar em papers desse tipo são os métodos de avaliação, visto que essa parte se contrasta muito dependendo da metodologia.</p><p>Algo que achei pertinente trazer (e que recomendo que seja revisado no paper pois é bastante didático) é a criação de uma ferramenta de foi colocada nas mãos de avaliadores.</p><p>Nessa ferramenta, são separados estágios de avaliação. Na avaliação do RIG, por exemplo, há um estágio inicial que seria o de avaliar a resposta num geral — considerando problemas com os fatos gerados, e um segundo momento que é o de avaliar estatísticas.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WV0_rNEJln7KW3LIEM2KBA.png" /><figcaption>Ferramenta de avaliação do RIG. <a href="https://docs.datacommons.org/papers/DataGemma-FullPaper.pdf">Fonte</a>.</figcaption></figure><h4>Trabalho em andamento</h4><p>Apesar de bastante promissor o método, ele ainda está em fase de testes pela comunidade acadêmica e a empresa está em análise de feedbacks para conseguir conectar esse modelo a uma gama maior de use cases.</p><p>Um desafio bastante importante é a cobertura de dados no Data Commons, que é limitada em algumas regiões fora dos EUA. Além disso, o processo de geração de consultas precisas para o Data Commons ainda pode ser aprimorado.</p><p>Enquanto pesquisas visam melhorar o treinamento do modelo e expandir a base de dados do Data Commons para aumentar sua eficácia global, fiz alguns testes em um notebook e deixo o <a href="https://colab.research.google.com/drive/1c1hglkdxRWMkWkoQGGxFsoNipSzukM_t?usp=sharing">link aqui</a>, para que você possa visualizar como funciona o workflow.</p><p>No notebook referenciado acima, você pode fazer uma cópia e testar você mesmo com suas próprias frases após realizar o setup dos modelos.</p><p>É importante que você siga alguns passos:</p><ol><li>Ter uma conta no <a href="https://huggingface.co/">Hugging Face</a>, <a href="https://aistudio.google.com/">Google AI Studio</a> e <a href="https://apikeys.datacommons.org/">Data Commons</a>.</li><li>Aceitar a licença do Gemma no <a href="https://huggingface.co/google/datagemma-rag-27b-it">Hugging Face</a>.</li><li>Criar os secrets necessários para rodar o notebook conforme instruções estipuladas nele (isso envolve criar chaves de API que serão necessários para executar as instruções).</li><li>E pronto! ✨</li></ol><p>Se você tiver qualquer dúvida, deixe nos comentários.</p><p>Espero que tenha gostado desse tutorial.</p><p>Até o próximo!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2faaa714559" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[[ML Story] Asking questions to images with Gemini Pro Vision]]></title>
            <link>https://medium.com/google-developer-experts/ml-story-asking-questions-to-images-with-gemini-pro-vision-f1ad0f88f602?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/f1ad0f88f602</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Fri, 01 Mar 2024 01:58:14 GMT</pubDate>
            <atom:updated>2024-04-10T12:29:06.917Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>Just a few months after <a href="https://medium.com/google-developer-experts/exploring-generative-ai-using-makersuite-and-palm-api-f32c20e82b12">exploring PaLM APIs</a> (which are now legacy!), it’s time to give Gemini Pro Vision a shoutout!</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DPrq__jLO2VEshyf8gfWNA.jpeg" /><figcaption>HSBC Rain Vortex — Changi Airport, Singapore</figcaption></figure><h4>Introduction</h4><p>Recently, the Artificial Intelligence field has witnessed an accelerated pace of innovation, with new models being unveiled rapidly. <strong>Multimodality</strong>, in particular, has become a focal point of discussion this year, illustrating how the integration of diverse data types and input modalities is revolutionizing technology. These multimodal models, which synergize visual, textual, and sometimes auditory data, are leading this transformative wave, showcasing their ability to comprehend and process a vast array of human information more effectively.</p><p>In this dynamic landscape, the significance of computer vision models has soared, proving vital across a range of practical applications, from image recognition to real-time video analysis. Their relevance extends to the advancement of more cohesive and accessible intelligent systems.</p><p>This tutorial will explore <strong>Gemini Pro Vision</strong> capabilities — a prime example of a multimodal model that captures the essence of these AI advancements. By combining sophisticated computer vision with natural language processing and additional modalities, it can help in various domains of application.</p><p>A prime instance of multimodal models’ utility is <strong>Visual Question Answering (VQA)</strong>, where the model interprets images and text together to respond to inquiries about an image. This function demonstrates the potent combination in multimodal AI, enabling models like Gemini Pro Vision to not only perceive but also analyze and articulate visual data within a meaningful context, greatly enhancing user engagement and accessibility.</p><h4>What Exactly is VQA?</h4><p><strong>Visual Question Answering (VQA)</strong> is a field of artificial intelligence that combines techniques from <em>computer vision</em> and <em>natural language processing</em> to enable machines to answer questions about images.</p><p>In a VQA system, the model is provided with an image and a text-based question about the image. The goal is for the model to analyze the visual content and then generate a relevant, accurate answer based on that analysis.</p><p>Here’s how VQA typically works:</p><ul><li><strong>Image Analysis:</strong> The model uses computer vision techniques to understand the content and context of the image. This might involve recognizing objects, their attributes, and relationships between them.</li><li><strong>Question Understanding:</strong> The model processes the question, often using natural language processing techniques, to understand what is being asked.</li><li><strong>Answer Generation:</strong> After analyzing both the image and the question, the model synthesizes the information to produce an answer. This can be in various forms, such as a word, phrase, sentence, or even a number.</li></ul><h4>Gemini Pro Vision</h4><p><a href="https://ai.google.dev/models/gemini">Gemini 1.0 Pro Vision</a> is a model developed by Google which supports multimodal prompts. You can include text, images, and video in your prompt requests and get text or code responses.</p><p>Some technical details from the documentation:</p><ul><li>Last updated: December 2023</li><li>Input: text and images</li><li>Output: text</li><li>Can take multimodal inputs, text and image.</li><li>Can handle zero, one, and few-shot tasks.</li><li>Input token limit: 12288</li><li>Output token limit: 4096</li><li>Model safety: Automatically applied safety settings which are adjustable by developers.</li><li>Rate limit: 60 requests per minute</li></ul><p>Those models are improving fast, so this information can get deprecated really soon (as the old PaLM APIs — from few months ago). Actually, the word <em>“old”</em> got a different meaning after this rush of AI.</p><h4>Getting Started with Gemini Pro Vision</h4><p>Alright, it’s coding time.</p><p>Since we’re discussing images, I took advantage of my full camera roll and revisited my recent trip to Singapore, where I attended a Google event for Developer Creators and Online Communities.</p><p>I had the opportunity to visit the National Orchid Garden, where I took numerous pictures to show my mom, as her favorite flower is the orchid. I will use this one, as it also features her favorite color.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L_FrUwOOkHib_gUeigll4Q.jpeg" /><figcaption>I forgot to ask my mom the species of this one. All that I know is that it is an Orchid. And it is purple.</figcaption></figure><p>Before diving into the Colab Notebook, where I’ve integrated the step-by-step guide with the code, I want to point out that you’ll need an API key to use the model featured in this tutorial.</p><p>To obtain this API key, you should visit <a href="https://aistudio.google.com/">https://aistudio.google.com/</a> and navigate to the “Get API Key” section. The process is quite straightforward!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mHNq6-r7yHQeCoEs4Npyaw.png" /><figcaption>Google AI Studio interface, page “Get API Key”</figcaption></figure><p>For reference, here’s the tutorial link:</p><ul><li><a href="https://colab.research.google.com/drive/1Japr5r1uSDfI9RfSGdAd3kZgQ0A7YE-v">Colab</a> version</li><li><a href="https://github.com/miohana/vqa-gemini/tree/main">Github</a> version</li></ul><p>If you have any questions, feel free to leave a comment in this article.</p><p>I hope this helps you understand the potential of these models! 👋</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f1ad0f88f602" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developer-experts/ml-story-asking-questions-to-images-with-gemini-pro-vision-f1ad0f88f602">[ML Story] Asking questions to images with Gemini Pro Vision</a> was originally published in <a href="https://medium.com/google-developer-experts">Google Developer Experts</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exploring Generative AI using MakerSuite and PaLM API]]></title>
            <link>https://medium.com/google-developer-experts/exploring-generative-ai-using-makersuite-and-palm-api-f32c20e82b12?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/f32c20e82b12</guid>
            <category><![CDATA[ml-story]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Sun, 01 Oct 2023 01:06:07 GMT</pubDate>
            <atom:updated>2023-10-06T15:09:15.490Z</atom:updated>
            <content:encoded><![CDATA[<h3>[ML Story] Exploring Generative AI using MakerSuite and PaLM API</h3><blockquote>Your go-to solutions to prototype and dive into Large Language Models by Google</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*FaHssdHjWLfDg01f" /><figcaption>Photo by <a href="https://unsplash.com/@kaitlynbaker?utm_source=medium&amp;utm_medium=referral">Kaitlyn Baker</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h3>Introduction</h3><p>The way we approach problem-solving as humans has undergone a significant transformation with the widespread adoption of Large Language Models (LLMs). In the past, tackling tasks such as summarizing documents or classifying a sentence with a computer necessitated the creation of a complex program— essentially a set of meticulously crafted commands in a specific programming language. However, with the advent of LLMs, addressing these challenges now simply involves providing a textual prompt.</p><p>Today, describing the desired appearance of a website allows us to obtain not only a comprehensive set of files but also, in certain cases, a pre-deployed application. This seamless process is made possible through the integration of automation and specialized tools, streamlining the development and deployment of websites.</p><p>But to get the most powerful results from LLMs, it is important to explore different techniques. In this article, I will present a beginner’s strategy for Prompt Engineering, intending to cover more advanced techniques in the subsequent articles of this series. To accomplish this task, I will utilize MakerSuite and the Palm API. Assuming you are already familiar with Large Language Models, I will skip introductions to this particular subject and instead introduce you to the tools we will be using in this tutorial.</p><h3>MakerSuite and PaLM API</h3><p>Like GPT models, PaLM is a transformer-based large language model offered by Google as an API service. The interpretation of multiple LLM providers (OpenAI, Google, Anthropic…) can be valuable for making the right design decisions for your application, such as model selection and limitation identification.</p><p>At the time of this article, you can access PaLM APIs using three different methods: MakerSuite, Vertex AI <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/code-chat#code-chat-prompt-python_vertex_ai_sdk">Libraries</a>, and Vertex AI <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/code-chat#code-chat-prompt-drest">APIs</a>. The last two are suitable for those who are already familiar with GCP and its ML infrastructure. You also gain access to all available models on Google using these methods.</p><p>In this article, we will focus on MakerSuite to access our models. MakerSuite is powerful due to its friendly interface (similar to common LLMs API providers) and is very easy to set up, requiring only an API key. You can prototype your application with a set of prompts, datasets, and custom-tuned models. It is easy to play around with the interface, allowing you to change the standard features of the model — such as the type of the model, temperature, max outputs, etc. As a final result, you are able to see the code and embed it in your own apps.</p><p>Google has made it easy to set up access to the Palm API on MakerSuite. Now, you don’t need to set up a Google Cloud Platform environment, configure service account roles, etc., as you would have to do using Vertex AI Libraries and APIs. Users can easily access a specific model outside the common console from Google Cloud.</p><p>At the time of this article, MakerSuite is not yet available in Brazil, requiring access through a VPN. However, in most countries, it is already accessible, so it should become available worldwide soon.</p><p>When accessing MakerSuite, a crucial message promptly appears, highlighting important considerations, particularly if you intend to deploy these models in production without response checks, such as the implementation of guardrails.</p><blockquote>The APIs are currently in limited general availability. You may use them for production use but Google may enforce rate limits during this period.</blockquote><blockquote>Don’t submit sensitive (e.g., confidential) or personal information.</blockquote><blockquote>PaLM API is experimental technology and may sometimes provide inaccurate or inappropriate information that doesn’t represent Google’s views.</blockquote><blockquote>Don’t rely on responses as medical, legal, financial, or other professional advice.</blockquote><p>As you proceed, obtain an API key (accessible through the menu once you accept the preceding terms). Remember to treat this key with the utmost confidentiality — do not share it with anyone and securely store it, as you won’t be able to retrieve it later, necessitating the creation of a new one.</p><p>In the <a href="https://developers.generativeai.google/prompt-gallery">Prompt Gallery</a>, you can discover various approaches for your applications, categorized by Google into three sections: ‘Text,’ ‘Data,’ and ‘Chat.’ Depending on the scenario, a model will be assigned — text-bison-001 (e.g., summarization, QnA) or chat-bison-001 (e.g., iterative applications like chatbots and conversations).</p><h3>Text use-cases</h3><p>Bison is one of the largest models developed by Google. le. While it may not be the largest (in ascending order, the sequence is Gecko, Otter, Bison and Unicorn), it still delivers exceptional results.</p><p>To create a text model example, I navigate to the Prompt Gallery and choose the ‘<a href="https://developers.generativeai.google/prompts/style-rewrite">Style rewrite</a>’ example, which is useful for rewriting text in a specific style.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/289/1*Dj_iqC_ssZLgDRvolzyQ0g.png" /><figcaption>Style rewrite example from Prompt Gallery</figcaption></figure><p>When opened in MakerSuite, you’ll find the interface with predefined settings for this use case. The most interesting part is the ease of attaching it to your app with the “Get Code” functionality. This button opens a pop-up with code similar to the example below:</p><pre>!pip install google-generativeai<br><br>import google.generativeai as palm<br>palm.configure(api_key=&quot;YOUR API KEY&quot;)<br><br>defaults = {<br>  &#39;model&#39;: &#39;models/text-bison-001&#39;,<br>  &#39;temperature&#39;: 0.9,<br>  &#39;candidate_count&#39;: 1,<br>  &#39;top_k&#39;: 40,<br>  &#39;top_p&#39;: 0.95,<br>  &#39;max_output_tokens&#39;: 1024,<br>  &#39;stop_sequences&#39;: [],<br>  &#39;safety_settings&#39;: [{&quot;category&quot;:&quot;HARM_CATEGORY_DEROGATORY&quot;,&quot;threshold&quot;:1},{&quot;category&quot;:&quot;HARM_CATEGORY_TOXICITY&quot;,&quot;threshold&quot;:1},{&quot;category&quot;:&quot;HARM_CATEGORY_VIOLENCE&quot;,&quot;threshold&quot;:2},{&quot;category&quot;:&quot;HARM_CATEGORY_SEXUAL&quot;,&quot;threshold&quot;:2},{&quot;category&quot;:&quot;HARM_CATEGORY_MEDICAL&quot;,&quot;threshold&quot;:2},{&quot;category&quot;:&quot;HARM_CATEGORY_DANGEROUS&quot;,&quot;threshold&quot;:2}],<br>}<br>prompt = f&quot;&quot;&quot;The girl walked to the store, her pockets full of change. She hopped and skipped and danced her way downtown, change rustling like a tambourine. She had been saving up for weeks, and today she was extremely excited, as it was the day she was finally going to buy a pack of her favorite bubble gum. She couldn&#39;t wait to blow the biggest bubbles in the world.<br><br>Rewrite this story as a superhero origin story.<br><br><br>&quot;&quot;&quot;<br><br>response = palm.generate_text(<br>  **defaults,<br>  prompt=prompt<br>)<br>print(response.result)</pre><p>I used the Python code snippet, but it’s also available in other languages.</p><p>With the code snippet above, we can already observe relevant details:</p><ol><li>It was already generated using the text model, in models/text-bison-001.</li><li>In addition to the common configurations found in the setup of other LLMs (such as temperature, top_k, top_p…), we have the safety_settings, which I will highlight now. This parameter helps us align with Responsible AI principles, mitigating potential harm, toxicity, and violence in our applications. You can configure your openness to accepting each type of content, blocking medium or high probabilities of being unsafe, for example.</li></ol><p>In the pop-up, you should see a “Open in Colab” button, making it easy for you to delve into your example in the Cloud using the notebook environment you are already familiar with.</p><h3>Chat use-cases</h3><p>If you’re planning to develop a chatbot or a conversational application, your go-to model should be a Chat one, specifically chat-bison-001.</p><p>Returning to the Prompt Gallery, navigate to the ‘<a href="https://developers.generativeai.google/prompts/talk-to-snowman">Talk to snowman</a>’ example. However, in our case, we’ll make some adjustments to make it more suitable for a professional scenario.</p><p>Upon opening in MakerSuite, proceed to “Get Code” again and click on the “Open in Colab” option. In Google Colab, click on “Connect” on the right side of the screen. Afterward, modify the configuration to include your API key in the second cell. Following these steps, you are ready to go and can run all the cells.</p><p>You should see output similar to the example below:</p><p>Yes, I melt. I&#39;m made of snow, and snow melts when it gets warm. I&#39;m not sure how long I&#39;ll last, but I&#39;m enjoying my time here while I can!</p><p>It’s interesting, but unless your company is in a field related to snowmen or it’s during the Christmas period, you probably won’t use an example exactly like this in your applications. To create something more aligned with our reality, I’ll return to MakerSuite to demonstrate how you can do it in the UI (you can also do it in Colab, but for this tutorial, I want to showcase the interaction with the interface).</p><p>First, keep only one example of interaction between the user and the model, removing all others.</p><p>In “Context”, replace the current text with the following one:</p><pre>Act as a Senior Software Engineer. You are an expert in designing distributed systems and takes into account scalability and design patterns in our solutions. Answer the questions with short responses.</pre><p>Add the following in the “User Input”:</p><pre>How can I create a scalable Python architecture?</pre><p>For the “Model Input”, paste the following (generated using <a href="https://bard.google.com/">Bard</a>):</p><pre>To create a scalable Python architecture, you need to consider the following factors:<br><br>Use concurrency and parallelism. Python has a number of features that can be used to implement concurrency and parallelism, such as threads, processes, and asynchronous programming. By using concurrency and parallelism, you can distribute your workload across multiple cores and processors, which can improve the performance and scalability of your application.<br>Use a message queue. A message queue is a distributed messaging system that can be used to decouple different components of your application. This can make your application more scalable and resilient to failures.<br>Use a distributed database. A distributed database is a database that is spread across multiple servers. This can improve the performance and scalability of your application by distributing the load across multiple machines.<br>Use a caching layer. A caching layer can be used to store frequently accessed data in memory. This can improve the performance of your application by reducing the number of database queries that need to be made.<br>Use a load balancer. A load balancer can be used to distribute traffic across multiple instances of your application. This can improve the performance and scalability of your application by handling increased traffic.<br>Here are some additional tips for creating a scalable Python architecture:<br><br>Design your application with scalability in mind. When designing your application, think about how it will scale as the number of users and requests increases.<br>Use a modular architecture. A modular architecture makes it easier to add new features and scale your application.<br>Use a configuration management tool. A configuration management tool can help you to manage the configuration of your application across multiple servers.<br>Monitor your application. It is important to monitor your application to identify any performance bottlenecks or scalability issues.<br>There are a number of Python frameworks and libraries that can be used to implement the above principles. Some popular options include:<br><br>Celery for asynchronous programming<br>RabbitMQ for message queuing<br>PostgreSQL and MySQL for distributed databases<br>Redis for caching<br>Gunicorn and Nginx for load balancing<br>By following the above tips and using the appropriate frameworks and libraries, you can create scalable Python architectures that can handle large volumes of traffic and data.</pre><p>Now, in the “Test your prompt” window, type <em>“And how would I do in Java?”</em>, exactly as shown, and we are ready! You can observe how your model performs with this provided example.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/785/1*rzJZ7si9WPt1tTcDbj5tCA.png" /><figcaption>Different configurations to set in the UI</figcaption></figure><p>You can also modify other configurations by clicking on the model’s name in the top left corner of the screen.</p><h3>Closing remarks</h3><p>Thank you so much for reading this article. It’s the first in a series that I’m planning to write related to Prompt Engineering and how to address various challenges we may encounter with Large Language Models. Expect more advanced articles in the future.</p><p>Due to the rapid advancements in this field, this tutorial may become outdated quickly. I’ll review it periodically to see if any adjustments are needed.</p><p>I hope you found it helpful, and I look forward to your feedback!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f32c20e82b12" width="1" height="1" alt=""><hr><p><a href="https://medium.com/google-developer-experts/exploring-generative-ai-using-makersuite-and-palm-api-f32c20e82b12">Exploring Generative AI using MakerSuite and PaLM API</a> was originally published in <a href="https://medium.com/google-developer-experts">Google Developer Experts</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Como iniciar na carreira de ciência de dados?]]></title>
            <link>https://medium.com/@mikaeriohana/como-iniciar-na-carreira-de-ci%C3%AAncia-de-dados-9b37aa525181?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/9b37aa525181</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Thu, 21 May 2020 22:52:17 GMT</pubDate>
            <atom:updated>2020-05-22T01:05:53.282Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TTSXdHjYq9y6KCd0ExqSqw.png" /></figure><p>O número de dados que produzimos está cada vez maior com o passar dos anos. Junto a isso, há a descoberta de que esses dados podem trazer um valor imenso para o negócio e que podem “opinar” sobre importantes decisões nos mais diversos segmentos, dando origem à frase <em>“data is the new oil”</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/748/1*u9gHG2ZqE7gW_n0ctQmlYA.png" /><figcaption>Gráfico que demonstra o aumento do número de informações geradas, de 2010 a 2025 — <a href="https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf">Source</a></figcaption></figure><p>Esses são alguns dos fatores que fazem com que a carreira de ciência de dados esteja entre as mais solicitadas por diversas empresas, como é possível ver seu crescimento através do gráfico abaixo com dados do LinkedIn.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/450/0*StbY0FypLiZNsDwL.png" /><figcaption>Gráfico que demonstra o crescimento da profissão de acordo com o LinkedIn, de 1990 a 2010 — <a href="http://radar.oreilly.com/2011/09/building-data-science-teams.html">Source</a></figcaption></figure><p>Neste artigo, irei apresentar um <em>overview </em>sobre essa carreira, abordar alguns dos principais pontos desta área para quem possui interesse em se reinventar como um(a) cientista de dados e dicas e sugestões de alguém que já passou por muito do que está aqui, errou, aprendeu e quer ajudar a fazer desta jornada a mais prazerosa possível para as pessoas interessadas em ingressar nesse <strong>navio </strong><em>(Titanic, competição, Kaggle… você vai entender a piadinha mais pra frente </em>😂<em>)</em>!</p><h3>Como eu comecei na área?</h3><p>Hoje atuo com ciência de dados na <a href="https://br.ciandt.com/">CI&amp;T</a>. Iniciei na carreira (<em>atuando na profissão dentro de uma empresa, das 8h às 17h</em>) no início de 2019. A parte interessante disso tudo é que, antes mesmo de 2019 começar, já tinha uma história iniciada e meus olhos já brilhavam pela área.</p><p>Tudo começou em junho de 2018, em um evento chamado Xamarin Summit, da Microsoft. A empresa em que eu trabalhava no momento era patrocinadora do evento, e possuía direito a alguns <em>slots </em>no evento para levar seus colaboradores para palestrar.</p><p>Eu sempre fui envolvida com comunidades, desde minha faculdade. Fazia palestras, publicava artigos, respondia dúvidas em fóruns e contribuía da forma que eu podia, intrinsecamente.</p><p>A empresa me chamou para ocupar um desses <em>slots</em> devido à facilidade que eu possuía com a comunicação e por já ter criado alguns aplicativos móveis com a tecnologia que o evento cobria. Eu aceitei o convite sem pestanejar, até porque era a primeira vez que eu iria me apresentar em uma empresa que tanto estimava, e numa conferência tão grande. Lembro até hoje como fiquei.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/0*0dreK4-FH5jkPUbo.gif" /><figcaption>Sapinho apreensivo — <a href="https://giphy.com/gifs/bEVKYB487Lqxy">Source</a></figcaption></figure><p>Chegada a hora de escolha do tema e da preparação do conteúdo. Nesse momento, eu era uma desenvolvedora C# pleno, avançando para sênior, que não se envolvia com o mundo mobile há alguns meses e já não estava por dentro das últimas novidades de suas tecnologias e diferentes frameworks. O que levar de diferente e que possa agregar algo para o público que ia me assistir?</p><p>Foi aí que, depois de muita pesquisa, conheci o assunto de <em>chatbots, processamento de linguagem natural</em> e <em>speech to text/text to speech</em>.<em> “</em>Esse tópico é interessante? Deixa eu ler… MUITO! Esse tópico já está presente na grade? Hm… ainda não!” <em>Eureka!</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DCtBnFwh-rdngpohAekzWA.png" /><figcaption>Imagem com informações do site <a href="https://xamarinsummit.com.br/past/2018/">Xamarin Summit 2018</a> — Arquivo pessoal</figcaption></figure><p>Comecei a estruturar a palestra. Encontrei um tutorial na internet sobre API’s cognitivas, comecei a chamá-las dentro do aplicativo que desenvolvi e o chatbot foi criando forma. Era época de copa do mundo, então desenvolvi um <em>chatbot </em>para o salão de beleza da Rochelle, mãe do Chris de Todo Mundo Odeia o Chris, e quem falava com ela era o Neymar, procurando um tratamento para queda (🥳).</p><p>No dia do evento deu tudo certo! Palestrei sobre o assunto e muitas pessoas falaram sobre o tema e gostaram muito! Nele, conheci muitas pessoas que eu admirava e que possuíam o título de MVP (Microsoft Most Valuable Professional) que eu nem imaginava que conquistaria um ano depois.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/714/0*Oo4zvPJ3tnjhzWiL" /><figcaption>Uma foto minha palestrando no evento Xamarin Summit — Arquivo pessoal</figcaption></figure><p>Fui para casa extremamente feliz, e disposta a continuar estudando a área. A cada dia que passava, eu me interessava ainda mais por entender o que estava por trás daquelas API’s que eu havia chamado dentro do meu aplicativo — como elas retornavam aquelas informações de acurácia, de treinamento, e suas métricas. Comecei a estudar a matemática, a estatística, os modelos de machine learning e tudo que tange ciência de dados, criando minhas próprias API’s e entendo o que tinha por trás daquela caixinha preta.</p><p>Em setembro de 2018, conversei com o CEO da empresa que eu estava na época sobre a vontade de criar uma área de Inteligência Artificial na empresa. Mostrei a ele como as aplicações poderiam trazer valiosos <em>insights </em>para o negócio, e tudo o que eu havia estudado até aquele momento. Eu continuava como desenvolvedora profissionalmente, mas todos os dias quando chegava em casa me afundava em uma outra ciência. Eu queria focar naquilo, e estava decidida.</p><p>Essa área foi iniciada após eu conseguir provar o valor que ela possuía e me disponibilizar para formar colaboradores para atuarem em projetos que envolviam dados. Criei um plano de estudos, selecionei com carinho os conteúdos que deveriam aprender para conseguir colocar a mão na massa, coloquei várias dicas para evitar que passassem pelas várias dores que o autodidatismo me permitiu passar — e que valorizo até hoje — mas tornam o caminho mais tortuoso.</p><p>E assim nasceu a área que tanto sonhei. Nosso primeiro projeto chegou, e eu e mais 4 pessoas estávamos responsáveis para seu sucesso acontecer. Me vi feliz e realizada, pois atuava como líder da primeira área de ciência de dados da empresa e conseguia colocar em prática aquilo que tanto tempo de estudo me agregou, e formar pessoas a partir da minha pouca experiência.</p><p>Tive outras experiências com ciência de dados, iniciei em novos desafios e hoje sigo procurando impactar negócios e pessoas fazendo os dados falarem.</p><p>Comecei pela matemática? Não! <em>Comecei pelo fim.</em> Eu tinha um objetivo e fui destrinchando ele. Iniciei com API’s, e depois fui, de pouco em pouco, entendendo o que havia por trás delas. Isso, na minha opinião, deixou as coisas mais fáceis, porque minha formação era principalmente de engenharia de software, e não de matemática e estatística.</p><h3>O que é Data Science?</h3><p>Antes de iniciarmos a lista de pontos interessantes para entrar na área de ciência de dados, é importante definir o que é essa área.</p><p>A ciência de dados, de forma genérica, é a <strong>área que estuda os dados e tira deles informações relevantes</strong>. É através dela que <em>hipóteses</em> são testadas e validadas (quando possuímos um problema específico para ser resolvido com os dados) ou que a <em>análise exploratória</em> acontece (quando temos uma grande quantidade de dados dispersos e tiraremos conclusões e correlações deles).</p><p>O maior objetivo dessa área é extrair tais dados, interpretá-los e apresentá-los de forma eficaz para o usuário final, nivelando a linguagem conforme o público com o qual se comunica (saber apresentar para pessoas técnicas e pessoas que não possuem conhecimento no assunto).</p><h4>O guarda-chuva da ciência de dados</h4><p>Com o crescimento da área, algumas das vertentes do pipeline de ciência de dados tomaram grandes proporções e necessitaram de profissionais específicos para cuidarem de seu correto andamento. Tais profissionais entendem do pipeline como um todo com uma visão generalista mas veem cada uma das áreas, de acordo com sua preferência, com um olhar especialista. O diagrama abaixo representa uma <strong>ideia </strong>disso (que pode variar):</p><figure><img alt="Matrix with 4 different data science roles (Analyst, ML Engineer, Data Engineer and Data Scientist) and it’s skills." src="https://cdn-images-1.medium.com/max/640/0*11T5YIwANtlPXKeg.png" /><figcaption>Imagem contendo algumas skills relacionadas com dados e as profissões Data Analyst, Machine Learning Engineer, Data Engineer e Data Scientist com a necessidade de cada uma delas — <a href="https://blog.udacity.com/2018/01/4-types-data-science-jobs.html">Source</a></figcaption></figure><ul><li><strong>Analista de dados</strong>: especialistas em relatórios e visualização, são profissionais que auxiliam na tomada de decisão a partir das informações que geram e comunicam. Analisam as informações obtidas dos processos e trazem relações entre elas, traduzindo-as para o uso no dia-a-dia. Possuem um maior foco em responder perguntas e gerar suas respostas de forma rápida e precisa.</li><li><strong>Engenheiro(a) de dados</strong>: profissional focado(a) na extração dos dados e tratamento dos mesmos. Se especializa no processo de obtenção dos dados, das mais diversas fontes, e é capaz de tratá-los a fim de garantir que os modelos de machine learning recebam os inputs necessários para fazer as predições corretas. São responsáveis pela modelagem dos dados, pela mineração e paralelismo, utilizando frequentemente ferramentas de ETL (Extract, Transform e Load) para esse processo.</li><li><strong>Machine Learning Engineer</strong>: aprimoram a capacidade e desempenho dos modelos preditivos criados e são responsáveis por garantir que tais modelos terão um bom desempenho quando em ambiente de produção. Possuem grande conhecimento em algoritmos de machine learning e em arquitetura, desde a modelagem até o monitoramento, garantindo escalabilidade e um pipeline de <em>Continuous Integration/Continuous Delivery</em> consistente.</li><li><strong>Cientista de dados</strong>: responsável desde o processo de concepção do problema, auxiliando a área de negócio em suas decisões e no caminho que deve ser seguido com autonomia e criatividade, até a entrega da solução; emprega métodos de aprendizado de máquina para a preparação de modelos preditivos, explorando oportunidades e tendências. É a pessoa que, de todas as áreas, possui o maior entendimento do processo de ponta a ponta, sendo capaz de construir modelos preditivos e apresentá-los para a área de negócio de forma compreensível sem perder sua base científica. Possui grande embasamento matemático e estatístico.</li><li><strong>Estatista</strong>: atua principalmente junto do cientista de dados com o conhecimento estatístico que possui para a criação e gerenciamento de modelos preditivos. Tem a habilidade de utilizar teorias, probabilidade e matemática para transformar problemas cotidianos e encontrar suas soluções. É o(a) profissional que menos tem contato com engenharia de software, e mais tem contato com estatística e álgebra linear.</li></ul><blockquote>Obs.: não tente se aprofundar em tudo. Tentar ser um unicórnio (🦄), que tem todas as skills, não vai dar certo — o mundo é muito grande e sempre tem algo novo saindo!</blockquote><h3>Alinhando expectativas</h3><p>O erro mais comum de alguém que está entrando em ciência de dados é acreditar que irá apenas criar modelos de machine learning.</p><figure><img alt="“What do you mean “clean all this data”? This was sold to me as the ‘sexiest job of the 21st Century’." src="https://cdn-images-1.medium.com/max/420/0*TSjvq_gMk7MRAkn7.png" /><figcaption>Imagem com os dizeres em inglês, traduzindo: “O que você quer dizer com limpar todos esses dados? Isso foi vendido para mim como o trabalho mais atraente do século XXI” — <a href="https://www.someecards.com/usercards/viewcard/what-do-you-mean-clean-all-this-data-this-was-sold-to-me-as-the-sexiest-job-of-the-21st-century-b3959/?tagSlug=workplace">Source</a></figcaption></figure><p>A criação de modelos de machine learning acontece sim, dependendo principalmente da subárea que você escolha se aprofundar. No entanto, mesmo que você opte por uma área que, majoritariamente, cria modelos, você não fará isso 100% do tempo, porque:</p><ol><li>Essa é uma área que as empresas ainda estão entendendo como implantar, então você provavelmente fará muitas coisas que não tangem apenas seu papel;</li><li>Você pode vir a encontrar dados que estão de forma totalmente desorganizada, ou até não ter dados suficientes. Precisará tratá-los, limpá-los, uniformizá-los. Se você não tiver uma boa base de dados para trabalhar — e não tiver noções de <a href="https://towardsdatascience.com/feature-engineering-for-machine-learning-3a5e293a5114">feature engineering</a> (transformar dados não tratados em um dado de valor que represente melhor o problema para os modelos preditivos)—você não terá um modelo que funciona adequadamente, e pode se frustrar.</li></ol><blockquote>Defendo a ideia de que ciência de dados é sobre um pipeline como um todo, e não apenas algoritmos.</blockquote><p>A lista que vem tem bastante coisa. Bastante mesmo! Não tente absorver tudo de uma vez. Eu mesma estou me aperfeiçoando em cada um dos pontos e não me considero fluente em todos, até porque nossa área é a que mais se atualiza e todos os dias temos coisas novas para estudar.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/378/0*nli4B89vmAcvEMMg.gif" /><figcaption>Gatinho branco de olhos fechados recebendo uma massagem na face por bracinhos de esqueleto — <a href="https://giphy.com/gifs/thedodo-cute-the-dodo-d7nd6bdypnYjGT1jP3">Source</a></figcaption></figure><p><strong>Faça do processo de aprendizado, algo prazeroso!</strong></p><h3>A lista</h3><h4>1) Análise e entendimento do negócio</h4><p>Antes mesmo de mais nada, é importante sempre lembrar que <strong>tecnologia é meio</strong>, e não fim. No final do dia, o que realmente trará valor serão os resultados gerados a partir das implementações que fazemos, quer elas envolvam ferramenta a, b ou c.</p><p>O trabalho junto ao <em>business </em>vai acontecer, porque muitas vezes tem-se um problema para se solucionar que parece turno, e é necessário melhor entendimento — às vezes, nem problemas se tem. Skills importantes são pensamento crítico, capacidade de resolver problemas e senso de urgência.</p><p>E como conseguir isso, quando se deseja entrar na área e não se trabalha nela e em nenhum projeto para colocar isso em prática? O Kaggle possui uma série de projetos que você pode utilizar como ponto de partida para exercitar sua capacidade de organização de pensamento e traçar uma linha de raciocínio que possibilite a resolução do problema. Além disso, há várias competições no site, que possibilita que você de fato simule um cenário onde você precisa ter pensamento veloz.</p><p>Outra dica é utilizar notebooks (como Jupyter e Colab) para documentar sua linha de raciocínio e simular como apresentaria as informações que coletou, desde seu início até suas conclusões. Isso pode ser útil mais pra frente, quando você for criar seu <strong>portfólio</strong>.</p><p>📌 <a href="https://www.kaggle.com/">Kaggle</a></p><p>📌 <a href="https://jupyter.org/try">Jupyter Notebook</a></p><p>📌 <a href="https://colab.research.google.com/">Google Colab</a></p><h4>2) Linguagens e Programação</h4><p>Você vai sim, precisar programar. Em todas as subáreas a programação é importante, o que difere é a linguagem que uma utiliza mais do que a outra.</p><p>Conhecimento em linguagens como Python e R é importante. Você não precisa ser especialista em ambas; sugiro que escolha uma para se especializar e saiba seus limites e as diferenças em comparação com a outra. Eu, por exemplo, escolhi me especializar em Python e ele solucionou meus problemas em todos os aspectos até hoje, por ter suporte tanto para construção de algoritmos quanto para expor suas API’s na web (com <em>Flask </em>ou <em>Django</em>).</p><p>Há outras linguagens, como Java e C, que são utilizadas em vez de Python e R em alguns projetos. Defendo que, uma vez que você conhece programação, o que mais difere entre uma linguagem e outra é a sintaxe e a maneira de implementação, mas a lógica para resolver o problema é a chave.</p><p>Banco de dados também será muito utilizado! Bancos relacionais e não relacionais podem aparecer pelo seu caminho. Por isso, é importante ter noções de SQL (como Microsoft SQL Server), NoSQL (como MongoDB), Spark e Scala e ir avançando para Hadoop, Hive, Kafka e MapReduce para cobrir soluções em Big Data e conseguir participar de discussões sobre esse tipo de assunto.</p><p>Ainda sobre programação, não esquecer de pontos como escalabilidade, testes, código limpo, versionamento de código e boas práticas de desenvolvimento é crucial. Esse tipo de preocupação fez parte dos meus anos como desenvolvedora web e continuam presentes mesmo como cientista de dados.</p><p>📌 <a href="https://github.com/miohana/raspagem-de-dados-fatec">Repositório de Web Scrapping</a>, no meu github</p><p>📌 <a href="https://www.youtube.com/playlist?list=PLUukMN0DTKCtbzhbYe2jdF4cr8MOWClXc">Python para Zumbis</a>, do Fernando Masanori</p><p>📌 <a href="https://novatec.com.br/livros/pythonfluente/">Python Fluente</a>, do Luciano Ramalho</p><p>📌 Cursos da <a href="https://www.edx.org/learn/python">edX</a></p><p>📌 <a href="https://link.springer.com/book/10.1007%2F978-0-387-93837-0">A Beginner’s Guide to R</a>, livro gratuito por pouco tempo no site da Springer (corre baixar, <em>Forrest</em>, corre!)</p><p>📌 <a href="https://university.mongodb.com/">MongoDB University</a></p><p>📌 <a href="https://blogfabiano.com/">Blog com conteúdos do básico ao avançado sobre SQL</a>, do Fabiano Amorim.</p><p>📌 <a href="http://db4beginners.com/blog/dicas-para-comecar-na-area-de-dados/">Artigo com dicas sobre SQL</a>, da Dani Monteiro</p><p>📌 <a href="https://www.youtube.com/playlist?list=PLucm8g_ezqNqI5cW3alteV5olcMCcHYRK">Playlist sobre SQL Server</a>, do Bóson Treinamentos</p><p>📌 <a href="https://www.amazon.com.br/C%C3%B3digo-limpo-Robert-C-Martin/dp/8576082675">Código Limpo</a>, do Robert C. Martin</p><p>📌 <a href="https://docs.docker.com/get-started/">Documentação do Docker</a> (para DevOps e escalabilidade)</p><h4>3) Machine Learning</h4><p>Existem muitos modelos de machine learning, vários já pré-treinados com diversos dados e que já estão prontos para utilização.</p><p>É importante entender aqui para que servem esses modelos e os tipos aos quais se enquadram, por exemplo:</p><ul><li><strong>Supervisionado:</strong> os dados de treinamento que estão no <em>dataset </em>de treino do algoritmo possuem as categorias (chamadas de <em>labels</em>) do output do modelo. Basicamente, nós mostramos onde queremos chegar. Exemplos: K-Nearest Neighbors, Linear and Logistic Regression, Support Vector Machines (SVM’s), Decision Trees and Random Forests, Neural Networks.</li><li><strong>Não-supervisionado:</strong> os dados de treinamento não estão no <em>dataset </em>de treino e o sistema tentará chegar ao output através de propriedades semelhantes entre cada um dos dados, sem guia ou auxílio. Exemplos: K-Means, Hierarchical Cluster Analysis (HCA), Principal Component Analysis (PCA).</li><li><strong>Semi-supervisionado: </strong>os dados de treinamento que estão no <em>dataset </em>de treino do algoritmo possuem parcialmente as categorias.</li><li><strong>Por reforço:</strong> neste tipo de aprendizagem, o modelo é chamado de agente e realiza ações em busca de recompensas, tendo como objetivo sempre aumentar esse número. É como adestrar seu cachorro e dar um biscoito a ele sempre que ele deita, por exemplo.</li></ul><p>Adicionei abaixo uma lista com exemplos dos vários modelos existentes, cada um sendo utilizado para uma abordagem específica.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nxfaiwGLyocYWTtk.png" /><figcaption>Exemplos de algoritmos de Machine Learning — <a href="https://towardsdatascience.com/which-machine-learning-model-to-use-db5fdf37f3dd">Source</a></figcaption></figure><p>Entender modelos de regressão, de classificação, de clusterização é bem interessante e conseguirá te diferenciar quando for procurar uma oportunidade no mercado.</p><p>Bibliotecas e frameworks que podem estar presentes no seu dia a dia (voltadas para Python):</p><p><strong>Extração dos dados e pré-processamento (foco em texto)</strong></p><p>📌 <a href="https://spacy.io/">Spacy</a></p><p>📌 <a href="https://www.nltk.org/">NLTK</a></p><p>📌 <a href="https://www.crummy.com/software/BeautifulSoup/#Download">Beautiful Soup</a></p><p>📌 <a href="https://www.selenium.dev/selenium/docs/api/py/index.html">Selenium</a></p><p><strong>Transformação:</strong></p><p>📌 <a href="https://pandas.pydata.org/">Pandas</a></p><p>📌 <a href="https://numpy.org/">Numpy</a></p><p><strong>Modelagem:</strong></p><p>📌 <a href="https://www.youtube.com/watch?v=KNAWp2S3w94&amp;list=PLZKsYDC2S5rM6yKBs5ParXS6RWda6iAnK">Tensorflow</a></p><p>📌 <a href="https://www.youtube.com/watch?v=J6Ok8p463C4">Keras</a> (incorporado no Tensorflow 2.0)</p><p>📌 <a href="https://www.youtube.com/watch?v=rvVkVsG49uU">Scikit Learn</a></p><p>📌 <a href="https://pytorch.org/">PyTorch</a></p><p><strong>Para áudio:</strong></p><p>📌 <a href="https://librosa.github.io/librosa/">LibROSA</a></p><p><strong>Para imagem:</strong></p><p>📌 <a href="https://opencv.org/">OpenCV</a></p><p>Ah, já ia me esquecendo: <strong>GPU</strong>. Mano do céu, isso salva vidas — e tempo! Com a GPU, você consegue ter alta capacidade de processamento e treinar seus algoritmos mais rápido. Você talvez já ouviu falar dela ao ver sobre PC’s gamers, e agora consegue visualizar mais uma aplicação sua! Saiba mais sobre ela <a href="https://blogs.nvidia.com/blog/2009/12/16/whats-the-difference-between-a-cpu-and-a-gpu/">aqui</a>.</p><p>Sempre que quero ver mais sobre Machine Learning e suas aplicações, acesso o <a href="http://towardsdatascience.com/">Towards Data Science</a>. Esse site é como se fosse uma bíblia para nós, por ter artigos valiosos das mais diversas tecnologias do universo de dados. Já salva nos favoritos (⭐️).</p><h4>4) Datasets</h4><p>Os <em>datasets </em>são o conjunto de dados que utilizaremos para treino e teste dos nossos modelos. É comum que eles estejam em formato .csv, separados principalmente por vírgulas, mas se seu problema é com classificação de imagens o formato será diferente.</p><p><strong>Ponto importante: </strong>não considere que o <em>dataset </em>chegará perfeito para você (😅).</p><p>O que quero dizer aqui é que os dados podem vir com várias anomalias da fonte. Podem estar com um tipo de separador numa parte do documento e com outro tipo em outra, podem estar com campos faltantes que são cruciais para o modelo, ou você pode precisar obter um outro dado a partir dos que foram recebidos por ser uma variável importante. Nesse último caso entra o<em> feature engineering</em> que comentei no início do artigo.</p><p>Alguns dos pontos que precisa-se ter atenção quanto a <em>datasets </em>são:</p><ul><li><strong>Quantidade insuficiente de dados. </strong>Reconhecimento de padrões em imagens, por exemplo, demandam milhões de exemplos.</li><li><strong>Número de casos observados equilibrado.</strong> Imagine que você tem um sistema que distinguirá sentimentos positivos de negativos. Se você tiver 9 linhas do <em>dataset </em>com exemplos de sentimentos positivos e apenas 1 linha com um sentimento negativo, você estará enviesando seu modelo a ter um <em>output </em>positivo, devido à quantidade maior de exemplos positivos que o treinou.</li><li><strong>Qualidade ruim dos dados.</strong> Exemplos são dados cheios de caracteres insignificantes, vários espaços em branco, e outros tipos de ruído que interferem no reconhecimento de padrões do modelo.</li></ul><p>Datasets públicos podem ser encontrados em:</p><p>📌 Datasets do <a href="https://www.kaggle.com/datasets">Kaggle</a></p><p>📌 Pesquisa de datasets da <a href="https://datasetsearch.research.google.com/">Google</a></p><p>📌 Repositório do <a href="https://github.com/awesomedata/awesome-public-datasets">awesomedata </a>no GitHub</p><p>E pesquisando por<em> “public datasets”</em> no Google! 🤓</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/799/1*_FhcrOumQDqm1NccOGO5Ig.png" /><figcaption>Captura de tela de pesquisa no Google por “public datasets”</figcaption></figure><p>📌 Eu tenho um repositório onde eu ensino um exemplo de pré-processamento de dados, algo que você terá que fazer com certa frequência em seu dataset num cenário real, <a href="https://github.com/miohana/data-preprocessing">aqui</a>.</p><h4>5) Estatística e probabilidade</h4><p>Os modelos preditivos utilizam matemática e estatística em sua construção, e descobri isso após estudá-los e entender a fundo como funcionam. Dizer que não será necessário entender estatística e matemática é uma mentira, porque para entregar valor para um cliente e garantir que tudo funciona adequadamente, é importante saber como as coisas funcionam por baixo dos panos e os cálculos efetuados por trás do resultado das inferências.</p><p>Segue abaixo alguns dos tópicos importantes de estatística e matemática aplicada à ciência de dados que você irá se deparar em sua jornada:</p><ul><li>Cálculo</li><li>Álgebra linear</li><li>Cálculo das probabilidades</li><li>Teoria dos grafos</li><li>Distribuições</li><li>Média, mediana e moda</li><li>Inferência Bayesiana</li><li>Amostragem</li><li>Testes de hipótese</li><li>Otimização linear</li></ul><p>Agora, vamos dar uma pausa. E se você me disser que não conhece esse mundo de coisas aí de cima?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/208/0*Y0Ui4LmNS71bRaus.gif" /><figcaption>Brincadeira onde pessoa risca que encontrou a letra X na figura, mas não seu resultado — <a href="https://giphy.com/gifs/HBWbIuHvXI2Eo">Source</a></figcaption></figure><p><strong>Não tem problema você não conhecer.</strong> De verdade! E pode parecer super difícil no início, tendo em mente que o ensino básico reforça na nossa mente desde cedo que pessoas que têm facilidade com matemática são brilhantes e, com isso, criam uma dificuldade sobre o tema na nossa mente e certo distanciamento.</p><p>Sugiro que você veja o problema primeiro, depois veja o algoritmo, entenda a teoria e depois vá para a prática da matemática dele. Querer entender todos os conceitos de uma vez pode te estressar um pouco, pois é bastante coisa e você não precisará de tudo em um primeiro projeto.</p><p>O importante aqui é saber fazer análises exploratórias encontrar correlações, entendendo o que é seu presente e será seu futuro através de dados do passado e do que os números mostram.</p><p>Locais que podem te ajudar:</p><p>📌 <a href="https://www.youtube.com/channel/UC4jROkPjTvnXRkuo2GAwKXw">EstaTiDados</a></p><p>📌 <a href="https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw">3Blue1Brown</a></p><p>📌 <a href="https://pt.khanacademy.org/math">Khan Academy</a></p><p>📌 <a href="https://www.udacity.com/">Udacity</a></p><p>📌 <a href="https://www.edx.org/course/essential-math-for-machine-learning-python-editi-2">edX</a></p><p>📌 <a href="http://www-math.mit.edu/~dav/05.dir/05.html">MIT</a></p><p>📌 <a href="https://www.youtube.com/channel/UC4UJ26WkceqONNF5S26OiVw">Deeplizard</a></p><h4>6) Testes</h4><p>Os testes dentro da área de ciências de dados são muito diferentes dos testes realizados em projetos de engenharia de software. São <strong>realmente </strong>diferentes. Isso porque nós estamos trabalhando com muita matemática e dados, que não são como os métodos das aplicações de software.</p><p>São várias métricas aqui. As métricas do modelo (garantindo o sucesso das predições e cálculos corretos), do negócio (problema que estamos trabalhando) e de engenharia (que garantem o funcionamento e desempenho).</p><p>Alguns exemplos de métricas (<strong>das várias existentes</strong>) são:</p><ul><li>Accuracy</li><li>Precision</li><li>Recall</li><li>F1 Score</li><li>Log Loss/Binary Crossentropy</li><li>AUC (Area Under the ROC Curve)</li></ul><p>Ah, se familiarize com a <a href="https://manisha-sirsat.blogspot.com/2019/04/confusion-matrix.html">matriz de confusão</a> também! Ela disponibiliza seus resultados em uma matriz e os divide em verdadeiros positivos, falsos negativos, falsos positivos e verdadeiros negativos.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*pSWvVpbCZCD6UyS_.jpg" /><figcaption>Matriz de Confusão — <a href="https://manisha-sirsat.blogspot.com/2019/04/confusion-matrix.html">Source</a></figcaption></figure><h4>7) Pipeline</h4><p><em>Data Science</em> constitui-se de um pipeline bem robusto. Vai desde a concepção do problema até a apresentação dos resultados e o acompanhamento e monitoramento do modelo em produção, como pode ser visto no exemplo abaixo proposto por <a href="https://martinfowler.com/articles/cd4ml.html">Martin Fowler</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/560/0*qmXmq0pz0uxGn9pM.png" /><figcaption>Pipeline proposto por Martin Fowler, com as etapas Model Building, Model Evaluation and Experimentation, Productionize Model, Testing, Deployment e Monitoring and Observability — <a href="https://martinfowler.com/articles/cd4ml.html">Source</a></figcaption></figure><p>Por isso é importante ter um pensamento generalista de como todo o processo vai ocorrer. Mesmo que você opte por focar em alguma das subáreas apresentadas, acho pertinente que você saiba em qual ponto você está contribuindo na cadeia e saiba discutir formas de melhorar o processo como um todo.</p><p>Além disso, nós fazemos nossos experimentos em <em>notebooks</em>, como falamos mais acima, mas não são esses notebooks que irão para produção. Por isso, vale dar uma olhada em <a href="https://flask.palletsprojects.com/en/1.1.x/">Flask</a> e <a href="https://www.djangoproject.com/">Django</a>, que são frameworks muito utilizados para expor esses modelos e permitir que predições sejam efetuadas em ambientes reais, e <a href="https://www.serverless.com/">Serverless</a>.</p><p>Algumas perguntas que você deve se fazer nesse passo são:</p><ul><li>Como versionar os dados que são adicionados aos meus datasets de tempos em tempos?</li><li>Como implantar <em>Continuous Integration</em> e <em>Continuous Delivery</em> no meu projeto?</li><li>Como manter meus modelos escaláveis em produção?</li><li>Como monitorar meu modelo e se, depois da implantação, os resultados dele estão sendo conforme o esperado?</li><li>Como reproduzir a mesma performance que tive em ambiente de desenvolvimento, mas agora em ambiente de produção?</li><li>Como entregar resultado sem preconceito (bias)?</li></ul><p>Locais que podem te ajudar:</p><p>📌 <a href="https://martinfowler.com/articles/cd4ml.html">Artigo sobre Continuous Delivery em ML</a>, do Martin Fowler</p><p>📌 <a href="https://docs.docker.com/get-started/">Docker</a></p><p>📌 <a href="https://www.kubeflow.org/">Kubeflow</a></p><p>📌 <a href="https://kubernetes.io/">Kubernetes</a></p><p>📌 <a href="https://www.youtube.com/watch?v=N96yiqUFwEo">Apresentação de ML.Ops</a>, do Nubank</p><p>📌 <a href="https://www.youtube.com/playlist?list=PLQY2H8rRoyvxR15n04JiW0ezF5HQRs_8F">Tensorflow Extended (TFX)</a></p><p>📌 <a href="https://azure.microsoft.com/pt-br/services/machine-learning/">Azure Machine Learning</a></p><p>📌 <a href="https://cloud.google.com/ai-platform/pipelines/docs">Google AI Platform Pipelines</a></p><p>📌 <a href="https://mlflow.org/">MLflow</a></p><p>📌 <a href="https://pycaret.org/">PyCaret</a></p><h4>8) Portfólio</h4><p>Para conquistar sua primeira posição nessa área que está em constante crescimento, minha dica é ter seus projetos adicionados ao <a href="http://github.com/">GitHub</a>, muito bem documentados e explicados (imaginando que você está explicando para um leigo), e, se tiver a oportunidade, um site!</p><p>📌 Um bom projeto para começar é o projeto Titanic, disponível no <a href="https://www.kaggle.com/c/titanic">Kaggle</a>. Um <em>overview </em>muito interessante dele pode ser visto no site <a href="https://sigmoidal.ai/data-science-titanic-python-1/">sigmoidal.ai</a>.</p><h4>9) Data Visualization/Data Storytelling</h4><p>Você fez a análise exploratória, elaborou algumas provas de conceito, colocou a mão na massa para limpar os dados e deixá-los na forma padrão para serem utilizados no modelo escolhido, fez os testes e tirou as métricas <em>online </em>e <em>offline</em>. É bastante história para contar, e na nossa mente está tudo muito claro e sabemos onde chegamos. E para contar essa história para os <em>stakeholders</em>/pessoas impactadas pelos resultados obtidos?</p><p>É de extrema importância o estudo do <strong>data storytelling</strong>, que é a arte de contar histórias através dos dados, e do <strong>data visualization</strong>, relacionado a como representamos os dados de forma clara e que seja autoexplicativo para o público.</p><p>Para que nosso objetivo, de mostrar o impacto de certas decisões e o resultado das hipóteses levantadas, seja alcançado, muitas variáveis estão no caminho.</p><ul><li><strong>Escolha de quais informações serão representadas:</strong> a síntese e a priorização são <em>skills </em>importantíssimas de um(a) cientista de dados. Saber “enxugar” as informações e escolher as mais importantes são coisas fundamentais para não deixar o público confuso e conseguir transmitir a ideia de forma clara e precisa. É importante clareza e objetividade para responder perguntas.</li><li><strong>Escolha do melhor gráfico para representação das informações</strong>: qual tipo de gráfico faz sentido para mostrar o impacto que essa informação possui? Uma variável está muito mais avançada que o resto do grupo, será que um gráfico de pizza faz mais sentido do que um gráfico de barras? Vale a pena utilizar um gráfico de linhas para mostrar o avanço que um dado teve conforme os anos se passaram? Após escolhido o gráfico, as cores de cada vertente possuem contraste suficiente entre si possível de serem distinguidas?</li><li><strong>Escolha da ordem de representação das informações até a chegada ao resultado obtido:</strong> uma apresentação que não possui uma linha de raciocínio clara para representação dos dados é uma apresentação perdida. A chave do sucesso para que a exibição dos resultados é engajamento, persuasão e coesão. O público precisa se engajar com os objetos presentes nas imagens, com o texto que é apresentado, com a forma com que os dados são comunicados — tanto pela pessoa que apresenta, quanto pelos atributos da apresentação falando, cada um por si (nem todas as pessoas que verão os resultados entenderão as palavras técnicas ditas — nivelar). A apresentação precisa ser persuasiva, defendendo um ponto de vista com base em informações que mostram embasamento teórico e garantem que o <em>output</em> seja fruto de grande estudo e exploração. Por fim, a coesão, que afirma que tudo tem início, meio e fim, tudo se encaixa de alguma forma e a mensagem final é entregue de forma igual para todas as pessoas.</li></ul><p>Ter essas—entre diversas outras — capacidades de contar histórias é uma das coisas que o economista-chefe da Google, Dr. Hal R. Varian, considera que serão <a href="https://www.forbes.com/sites/brentdykes/2016/03/31/data-storytelling-the-essential-data-science-skill-everyone-needs">mais importantes para as próximas décadas</a>.</p><blockquote>“The ability to take data — to be able to understand it, to process it, to extract value from it, to visualize it, to communicate it — that’s going to be a hugely important skill in the next decades.” — Dr. Hal R. Varian (Economista Chefe da Google)</blockquote><p>Bibliotecas úteis para visualização de gráficos:</p><p>📌 <a href="https://matplotlib.org/">Matplotlib</a></p><p>📌 <a href="https://seaborn.pydata.org/">Seaborn</a></p><p>📌 <a href="https://plotly.com/">Plotly</a></p><h4>10) Metodologias</h4><p>Uma metodologia é uma estratégia utilizada para orientar processos e atividades dentro de um determinado domínio. Exemplos de metodologias ágeis de software são <em>Scrum</em>, <em>Kanban</em> e <em>XP</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/0*_hDSNXsqVtvDlVjc.gif" /><figcaption>Homem explicando o que é Scrum, com um quadro no fundo com as divisões Ice Box, Emergency, In Progress, Testing e Complete— <a href="https://giphy.com/gifs/siliconvalleyhbo-xT1XGOGdyDrL2BTfxK">Source</a></figcaption></figure><p>A ciência de dados também fez suas contribuições para metodologias de gerenciamento de projetos, e não são tantas pessoas que possuem conhecimento dessa informação.</p><p>Abaixo estão listadas algumas dessas metodologias que você pode utilizar em seus projetos de ciência de dados, além das mais populares:</p><ul><li><em>CRISP-DM</em></li><li><em>SEMMA</em></li><li><em>KDD</em></li></ul><p>📌 <a href="https://www.youtube.com/watch?v=FYOXf024qOc">Nesse link</a> você pode conferir uma live onde eu e Laura Damaceno abordamos essas metologias e damos exemplo de como utilizá-las em um projeto de ciência de dados na prática.</p><h4>11) Comunicação</h4><p><em>Soft skills</em> são importantíssimas em qualquer área e costumam pesar ainda mais em tecnologia. Você sendo uma pessoa desenvolvedora de software que se comunica e sabe exemplificar suas ideias de maneira simples e objetiva, engajando a pessoa com quem fala, consegue conquistar espaços que ninguém mais conseguiria.</p><p>Por conta disso, é de extrema importância focar em como você comunica suas ideias, saber dialogar e reforçar seus pontos de vista e traduzir todo aquele contexto técnico que eu e você sabemos da complexidade para pessoas leigas que, muitas vezes, não estão interessadas em saber como você chegou até lá — querem saber se você chegou ou não.</p><h4>12) Networking/Personal Branding</h4><p>Nesse passo, quero reforçar a parte de como você se posiciona para as outras pessoas. Tenho uma live que pode te auxiliar a entender mais sobre o tema e sobre sua importância <a href="https://www.youtube.com/watch?v=Iar8FqzF9Lk&amp;t=115s">aqui</a>.</p><p>É importante você, desenvolvedor ou desenvolvedora, saber mostrar o que possui de melhor e se vender com confiança e amor próprio. Saber vender suas ideias, projetos, tudo o que conquistou até chegar aqui e demonstrar que está preparado(a) para os desafios que vão vir.</p><p><em>Networking</em> anda lado a lado com <em>Personal Branding</em>. Ter uma rede de contatos pode te ajudar a conseguir oportunidades fantásticas e iniciar na área de ciência de dados que você tanto sonhou com apenas um clique, adicionando a pessoa certa. Um exemplo simples disso é claro: imagine que, em meu <a href="https://www.linkedin.com/in/mikaeriohana/">LinkedIn</a>, eu adicione uma pessoa que trabalha na empresa que eu sempre desejei pertencer. Essa pessoa pode curtir um post que fiz sobre ciência de dados e alguém da rede dessa pessoa pode ver que essa pessoa curtiu meu post e notar o meu engajamento com o assunto, e assim sucessivamente, até que a oportunidade chega!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/245/0*AlkdD6TN9lebpRbC.gif" /><figcaption>Duas pessoas conversando — <a href="https://giphy.com/gifs/suits-9JJPXlZizyWHe">Source</a></figcaption></figure><p><strong>Redes de contatos são importantíssimas no mercado e na vida. Use-as a seu favor!</strong></p><h4>13) Comunidades</h4><p>As comunidades de tecnologia são ótimas para quem quer iniciar em qualquer ramo. Elas são uma fonte de <em>networking </em>e te abraçam com conteúdos gratuitos e pessoas dispostas a te ajudar sem pedir nada em troca. Recomendo fortemente que você ingresse em alguma delas e se apresente, mostrando o quanto quer aprender e contribuir!</p><p>Algumas comunidades são:</p><p>📌 <a href="https://womakerscode.org/">WoMakersCode</a></p><p>📌 <a href="https://datahackers.com.br/">DataHackers</a></p><p>📌 <a href="https://www.meetup.com/ai-brasil/">AI Brasil</a></p><p>📌 <a href="https://www.meetup.com/machine-learning-big-data-engenharia/">Nubank Data Science &amp; Machine Learning</a></p><p>📌 <a href="https://community.dataquest.io/">DataQuest</a></p><p>📌 <a href="http://wdc-slack-inviter.mybluemix.net/">Watson Developer Community</a></p><p>📌 <a href="https://developers.google.com/community/gdg">Google Developer Group</a></p><p>📌 <a href="https://www.facebook.com/aigirlsbr/">AI Girls</a></p><p>📌 <a href="https://www.meetup.com/pt-BR/Nerdzao/">Nerdzão</a></p><p>📌 <a href="https://www.meetup.com/pt-BR/DevelopersBR/">Developers-BR</a></p><p>📌 <a href="https://www.youtube.com/channel/UCcQgGC19k35ayQNsspyyBhQ">School of AI</a></p><h4>14) Inglês</h4><p>Último, mas não menos importante: <strong>o inglês</strong>.</p><p>Eu não diria que o inglês é necessário, mas que é um grande bônus na maioria das vagas. Se você não se sente confortável com seu nível de inglês até o momento, acho super vantajoso que você procure aprimorá-lo com cursos com professores particulares ou com aplicativos gratuitos, como <a href="https://pt.duolingo.com/">Duolingo</a>.</p><p>Além de te ajudar em vagas, ele vai te ajudar depois que você entrar na empresa. A maioria dos conteúdos que consumo de ciência de dados estão em inglês — isso inclui artigos, cursos, <em>datasets</em>, ferramentas de trabalho, fóruns, etc. Isso acontece porque sempre quando sai algo novo na área, a primeira linguagem que você encontra é em inglês. Tendo isso em vista, você só tem a ganhar reforçando seu aprendizado na língua, e no YouTube tem muita coisa gratuita!</p><h3>Retomando as expectativas</h3><blockquote>Vai com calma, again!</blockquote><p>É uma área que nunca para, e nunca vai parar. Se você estiver parado, é porque tem algo errado.</p><p><strong>Aproveite a jornada de aprendizado. Não desanime, não é fácil mas valerá a pena! Taca-lhe pau nesse carrinho!</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/417/0*wEjf48ncI6SjGuD9.gif" /><figcaption>Menino descendo um morro com um carrinho, fazendo uma curva e quase caindo — <a href="https://www.google.com/url?sa=i&amp;url=https%3A%2F%2Fgfycat.com%2Finconsequentialsorrowfulgroundhog&amp;psig=AOvVaw1_Y4tvnSCOjIHDysNeLzci&amp;ust=1586215923920000&amp;source=images&amp;cd=vfe&amp;ved=0CAIQjRxqFwoTCIiAw-q40ugCFQAAAAAdAAAAABAD">Source</a></figcaption></figure><p>➡️ <em>Agradecimento especial à </em><a href="https://twitter.com/anaclpss"><em>Ana Carolina</em></a><em>, </em><a href="https://www.linkedin.com/in/gabriel-giro-25413a86/"><em>Gabriel Giro</em></a><em> e L</em><a href="https://twitter.com/marks_Lucass"><em>ucas Marques</em></a><em>, que me ajudaram na revisão desse texto e estão sempre me apoiando. Admiro vocês do fundo do meu coração! </em>❤</p><p>➡️ <em>Todas as imagens utilizadas neste artigo estão com suas devidas fontes e textos alt visando acessibilidade. Caso encontre algo que pode tornar esse texto ainda mais inclusivo, por favor, marque no texto e serei grata!</em></p><p>➡️ <em>O artigo será sempre atualizado com novas informações e materiais, para sempre trazer o que há de mais novo para você.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9b37aa525181" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Melhores práticas para desenvolvimento de chatbots — Parte 2]]></title>
            <link>https://medium.com/botsbrasil/melhores-pr%C3%A1ticas-para-desenvolvimento-de-chatbots-parte-2-1fee9e0a4153?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/1fee9e0a4153</guid>
            <category><![CDATA[bots]]></category>
            <category><![CDATA[chatbots]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[conversational-ui]]></category>
            <category><![CDATA[desenvolvimento]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Wed, 21 Aug 2019 15:11:59 GMT</pubDate>
            <atom:updated>2019-08-24T20:05:27.069Z</atom:updated>
            <content:encoded><![CDATA[<h3>Melhores práticas para desenvolvimento de chatbots — Parte 2</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/810/1*CLrAsXy1FagGvDgAA8Sr4w.png" /></figure><p>Essa é a segunda parte de uma sequência de artigos sobre melhores práticas para desenvolvimento de chatbots.</p><p>Nela, estou abordando as melhores práticas para desenvolvimento dos assistentes que estão auxiliando as organizações em tarefas cotidianas e que necessitem de grande armazenamento de informação, podendo encontrar rapidamente os dados que precisam.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/320/0*LV-9B-LS-Du6P4AK.gif" /></figure><p>Se você não viu a primeira parte, <a href="https://medium.com/botsbrasil/melhores-pr%C3%A1ticas-para-desenvolvimento-de-chatbots-parte-1-5638eee268c9">dê uma olhada nela primeiro</a> antes de prosseguir com a leitura!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/0*S3k20mE1uboLpr-k.gif" /></figure><h4>Textos pequenos</h4><p>A construção do diálogo é uma das partes mais importantes de um <em>chatbot</em>. Um <em>chatbot </em>precisa ser direto e comunicar de forma clara as informações necessárias.</p><p>Parágrafos grandes de texto complicam a experiência do usuário, e o faz perder a vontade de conversar com o assistente.</p><p>Se você tem muito para escrever, divida isso em diferentes blocos, de modo que o usuário tenha a impressão de que são diferentes interações que o bot está tendo com o chat.</p><h4>Seja claro quando o bot não entender</h4><p>Se o <em>bot </em>não entender alguma intenção dita na conversa, o ideal é que ele diga isso. Diga que o conteúdo informado não pode ser entendido, de forma que a pessoa possa tentar com outras palavras, deixando mais claro o que deseja.</p><p>Chamar um humano também é uma das opções. Muitas vezes o usuário irá preferir conversar com um dos atendentes disponíveis, e suas escolhas devem ter prioridade. Informe que a conversa será tocada por outra pessoa, e deixe o usuário à par de tudo que acontece. Feedbacks são importantíssimos e evitam falhas na comunicação.</p><p>O importante é <strong>responder todas as mensagens enviadas</strong>.</p><h4>Não teste com a equipe que construiu</h4><p>O ideal para que se possa realizar um efetivo teste com o <em>chatbot </em>é que a equipe que efetuará os testes seja diferente da que o desenvolveu. Os responsáveis por sua construção já possuem o conhecimento de toda a plataforma e podem, dessa forma, restringirem seus testes a determinados pontos e deixarem pontos importantes passarem despercebidos.</p><p>Pessoas que não tiveram contato prévio com o produto possuem um olhar amplo e de principiante, podendo enxergar coisas que não foram vistas antes.</p><h4>Não faça perguntas abertas — dê opções claras</h4><p>É comum enviarmos um e-mail ou escrevermos uma mensagem de texto e aquilo ser compreendido de uma forma totalmente diferente. Se nossa comunicação humano — humano já gera ruídos, imagina com um robô?</p><p>É importante que deixemos claras as informações que desejamos passar para o usuário durante a montagem do fluxo. Entendimentos errados pelo usuário pode gerar grandes problemas e fazer com que a aceitação ao <em>bot </em>seja algo muito difícil pelos usuários.</p><p>Quando falamos disso, é válido dar sugestões de resposta no estilo dos famosos “comandos” para que o usuário possa ter um norte do que é esperado dele como resposta para aquela pergunta.</p><h4>Fluxo de interação</h4><p>Quando trabalhamos com <em>chatbots</em>, temos contato com <strong>fluxos previstos </strong>e <strong>fluxos imprevistos</strong>.</p><p>Os fluxos imprevistos podem ser notados quando fazemos alguma pergunta do tipo “como posso te ajudar hoje?”. Essa pergunta é genérica, e abre portas para qualquer tipo de resposta possível. É necessário, ao seguir por esse caminho, traçar um roteiro de possíveis sugestões para o usuário para que ele possa ser guiado para uma solução que o <em>bot </em>consiga resolver.</p><p>Um exemplo é se o <em>chatbot </em>é sobre uma loja de roupas e o usuário digita que precisa de ajuda com um tempero para churrasco — o <em>bot </em>pode amigavelmente dizer “hmmm, não entendo sobre temperos para churrasco, mas entendo sobre qual a melhor roupa para uma festa de formatura! Vamos falar sobre isso?”. Isso faz com que a pessoa seja reforçada sobre o propósito e os limites daquele <em>chatbot</em>, e o fluxo passe a ser <strong>previsto </strong>— saberemos o que deve ser falado sobre o tópico pois o fluxo sobre roupas para festa de formatura é algo que o <em>chatbot </em>espera falar sobre.</p><p>Além disso, os <em>chatbots </em>devem facilitar as coisas. O usuário deve, com o mínimo de ações, conseguir realizar o que almeja.</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*kmJr-NH9DPUu4YxdDOc4uQ.gif" /><figcaption><a href="https://brasil.uxdesign.cc/ux-e-chatbots-boas-pr%C3%A1ticas-pdara-desenhar-interfaces-conversacionais-9beb0ba293f2">https://brasil.uxdesign.cc/ux-e-chatbots-boas-práticas-pdara-desenhar-interfaces-conversacionais-9beb0ba293f2</a></figcaption></figure><h4>Lembre-se de informações já fornecidas</h4><p>Não se pode, em hipótese alguma, esquecer a informação que o usuário já passou. É como se você tivesse acabado de perguntar o nome de uma pessoa e falasse um minuto depois “qual seu nome?” novamente. Isso acarretará numa perda de engajamento gigantesca, fazendo com que o usuário se irrite e venha a interromper o uso do assistente por precisar repetir sua fala.</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*OY6XwDSF_b2ZL3YJlkXXFQ.png" /><figcaption><a href="https://cdn-images-1.medium.com/max/1000/1*OY6XwDSF_b2ZL3YJlkXXFQ.png">https://cdn-images-1.medium.com/max/1000/1*OY6XwDSF_b2ZL3YJlkXXFQ.png</a></figcaption></figure><p>A situação do exemplo acima poderia ter sido contornada com “você ainda quer saber sobre a região de São Francisco, ou outra região?”. Dessa forma, a pessoa iria ficar feliz por saber que o <em>bot </em>“se lembrou” de sua última interação.</p><h4>Seja humanizado, não repetindo as mesmas frases e trocando pequenas palavras</h4><p>Utilize mensagens de erro diversificadas. Mensagens de erro com o mesmo padrão deixam o usuário desconfortável e removem a credibilidade do <em>chatbot</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*49aa9U87HEzrRXeHIs2uFQ.png" /><figcaption><a href="https://cdn-images-1.medium.com/max/1000/1*49aa9U87HEzrRXeHIs2uFQ.png">https://cdn-images-1.medium.com/max/1000/1*49aa9U87HEzrRXeHIs2uFQ.png</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*fpTNrN3bQ2f3rcxMBz3jEA.png" /><figcaption><a href="https://cdn-images-1.medium.com/max/1000/1*fpTNrN3bQ2f3rcxMBz3jEA.png">https://cdn-images-1.medium.com/max/1000/1*fpTNrN3bQ2f3rcxMBz3jEA.png</a></figcaption></figure><h4>Questionários</h4><p>Sabemos que, se seu <em>chatbot </em>deve fechar uma viagem para o usuário, ele terá um mínimo de informações para perguntar:</p><ul><li>Destino</li><li>Horário de partida</li><li>Horário de chegada</li><li>Se a viagem for para ela, quantos acompanhantes, e se não for, quantas pessoas estarão envolvidas</li><li>Que tipo de hospedagem a pessoa prefere</li><li>Passeios que serão realizados</li></ul><p>São várias perguntas, não?! Agora imagine o <em>chatbot </em>perguntando isso tudo de uma vez, que tumulto.</p><p>A primeira coisa que precisamos ter atenção é quanto à ordem de execução das ações. O ideal é que a sequência de perguntas ao usuário seja feita exatamente igual à realidade. Ficaria estranho, por exemplo, se perguntássemos primeiro para o usuário quantos passeios seriam realizados, e depois perguntássemos para onde ele está indo.</p><p>Portanto, é importante ter atenção em duas coisas: <strong>dividir as ações em pequenas perguntas</strong> e <strong>ordenar as perguntas de forma lógica</strong>.</p><h4>Entendimento de metáforas</h4><p>Quando enviamos para o <em>bot </em>“quero comprar uma fruta”, temos de forma clara quais são as intenções da frase e seu objeto. E se mandarmos <em>“você fala como uma parede”</em>?</p><p>Nem tudo o que não possui palavrões ou palavras negativas é positivo. Analisando palavra por palavra, não se encontra nada ofensivo na frase de exemplo acima. O problema é que nós, seres humanos, sabemos que paredes não falam. Portanto, a pessoa tem o intuito de dizer que o <em>bot </em>não está falando muito e a conotação da frase é totalmente negativa.</p><p>É importante que o <em>chatbot </em>entenda figuras de linguagem e compreenda as palavras em diferentes contextos, sabendo entender o papel das ironias e metáforas e direcionando a conversa para outro patamar ao perceber que a conversa toma tom negativo.</p><p>Essa foi a <strong>segunda parte </strong>da série. 😄</p><p>Ainda não acabou! Tem mais um artigo chegando! 🔥</p><p><strong>Gostou</strong>? Deixa uma palminha para eu saber que esse artigo contribuiu em algo para você!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*CyH_2m74gWOYYah0.gif" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1fee9e0a4153" width="1" height="1" alt=""><hr><p><a href="https://medium.com/botsbrasil/melhores-pr%C3%A1ticas-para-desenvolvimento-de-chatbots-parte-2-1fee9e0a4153">Melhores práticas para desenvolvimento de chatbots — Parte 2</a> was originally published in <a href="https://medium.com/botsbrasil">Bots Brasil</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Melhores práticas para desenvolvimento de chatbots — Parte 1]]></title>
            <link>https://medium.com/botsbrasil/melhores-pr%C3%A1ticas-para-desenvolvimento-de-chatbots-parte-1-5638eee268c9?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/5638eee268c9</guid>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[conversational-ui]]></category>
            <category><![CDATA[chatbots]]></category>
            <category><![CDATA[desenvolvimento]]></category>
            <category><![CDATA[bots]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Tue, 23 Jul 2019 01:36:21 GMT</pubDate>
            <atom:updated>2019-07-31T12:20:51.109Z</atom:updated>
            <content:encoded><![CDATA[<h3>Melhores práticas para desenvolvimento de chatbots — Parte 1</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/810/1*P81dgVObnvkUKaLLz6txtg.png" /></figure><p>Que os <strong>chatbots</strong> ganharam um espaço gigantesco no mercado, não podemos negar. Vemos várias organizações começarem a utilizar a tecnologia para entregar aos seus clientes um serviço rápido e que consiga, ao mesmo tempo, respondê-lo de forma amigável e sanar suas dúvidas prontamente.</p><p>Os chatbots, além de possuírem disponibilidade 24/7, podem aguentar um grande número de usuários, responder perguntas repetitivas e tornar automáticas tarefas rotineiras. Isso permite que o tempo, que antes era gasto em algo mecânico, seja investido em algo que possa agregar ainda mais valor e seja motivador/estimule a criatividade.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*n1th-CHGEfcQYEW3.gif" /></figure><p>Por ser algo relativamente novo no mercado, algumas pessoas possuem certas dúvidas de como estruturar, montar um planejamento e, até mesmo, iniciar um projeto de chatbot de sucesso e que satisfaça as expectativas estipuladas.</p><p>Com essa sequência de artigos, quero clarificar alguns passos no desenvolvimento de chatbots em organizações, a fim de facilitar a implantação dessa tecnologia que, em muito, pode auxiliar nosso dia a dia e trazer grande valor para o negócio.</p><h3>Antes de partir para a técnica, vamos conversar sobre algumas coisas…</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/432/0*w5goPIU-oPj-5hlj.gif" /></figure><h4>Escopo definido</h4><p>Durante o planejamento do <em>ingest </em>(adição de dado e conteúdo) no <em>chatbot</em>, é de extrema importância que se defina qual será o escopo em cima do qual o <em>chatbot </em>trabalhará. Isso faz com que possamos ter uma noção maior de seu desempenho e possamos concluir etapas, não perdendo a noção do quanto ele abrange e podendo definir de forma clara seu domínio.</p><h4>Squad especialista</h4><p>O ideal para se ter um <em>chatbot </em>que supere as expectativas dos clientes é que ele tenha sido construído por uma equipe multidisciplinar. Mesmo que a tecnologia seja um dos pontos chaves na construção, é importante que se tenha especialistas de montagem de fluxos conversacionais e responsáveis pela estratégia de escrita.</p><p>Um exemplo de <em>squad </em>seria, por exemplo (sem levar em consideração o tamanho da equipe, pois depende do ramo e do tamanho do projeto):</p><ul><li>Product Owner (repassará a visão do cliente e possuirá em mente o <em>roadmap </em>e a visão do produto)</li><li>Arquiteto da tecnologia</li><li>Desenvolvedor de <em>chatbot</em></li><li>Arquiteto de conversação</li><li>Designer de conversação</li><li>Copywriter</li></ul><p>Isso porque não estamos falando ainda de um chatbot voltado para <strong>voz</strong>. Nesse caso, temos novos profissionais a serem adicionados, como o <em>VUI Designer</em>.</p><h4>Personalidade</h4><p>Criar uma persona para seu <em>bot </em>faz com que os usuários que interagem com o mesmo possam criar uma maior sintonia, gerando maior engajamento e fazendo com que as pessoas se interessem em continuar conversando com o assistente.</p><p>A criação da persona é uma das partes mais importantes no projeto de <em>chatbot</em>. Dentro desse processo, alguns tópicos podem ser importantes para nortear essa criação:</p><ul><li><strong>Quais são as características do seu público?</strong> <em>Baby boomers</em>, <em>millenials</em>, os dois, ou algo totalmente diferente? Este mapeamento é importantíssimo para definir como seu <em>bot </em>deve se relacionar.</li><li><strong>Como seria sua marca se ela fosse uma pessoa?</strong> Quando pensamos no contexto de <em>chatbots</em>, é muito comum que foquemos como uma pessoa que possa atender alguma solicitação. No entanto, o assistente não precisa, necessariamente, ser um humano. As opções são inimagináveis: animais, objetos, plantas, ou até mesmo seres fictícios que representem seu negócio.</li><li><strong>Como sua marca falaria pessoalmente com seu público?</strong> Ela é uma marca que preza a positividade? Algo mais corporativo?</li><li><strong>Qual a principal função do seu <em>chatbot</em>?</strong> Ajudar a marcar viagens, procurando passagens aéreas? Ou auxiliar com despesas financeiras? Isso irá marcar como será a forma com que ele tratará o usuário e seu engajamento com o público.</li></ul><h3>Vamos colocar a mão na massa?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/266/0*C021tgemr_M6mBTd.gif" /></figure><h4>Pense como o usuário na formulação das perguntas</h4><p>Dificilmente os usuários irão fazer perguntas extremamente estruturadas, como em uma <em>faq</em>. O mais provável é que eles usem uma linguagem extremamente coloquial, com possíveis abreviações e gírias. Eles irão falar com o <em>chatbot </em>de forma direta e, muitas vezes, deixar em aberto o que desejam.</p><p>No momento do treinamento, é de extrema importância que pensemos como um usuário (aí está o poder da empatia): imagine que ele está em uma correria enorme, sem tempo para escrever de maneira formal. Deve-se treinar o <em>bot </em>e verificar seu desempenho com o tipo de escrita que seu nicho de usuário possui, evitando que haja falhas na comunicação e o <em>bot </em>não entenda quase todas as mensagens enviadas.</p><h4>Apresente-se e diga qual seu papel!</h4><p>É importante que o usuário saiba qual o propósito do <em>chatbot </em>antes de iniciar a conversa. Isso fará com que ele possa ter uma conversa mais focada dentro dos objetivos estabelecidos, e não acabe por desestruturar o fluxo do <em>chatbot </em>devido à expectativas diferenciadas do que o mesmo faz.</p><p>São diversas as formas de apresentação possíveis. Em uma simples frase, você pode informar qual é o propósito do <em>chatbot </em>e o motivo pelo qual ele pode ser útil para o usuário.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/1*fbQs1KXUuF_N07LWg58Thg.png" /><figcaption>Robô Ed. <a href="https://www.inbot.com.br/cases/roboed/exemplo-de-conversa-com-o-robo-ed.jpg">https://www.inbot.com.br/cases/roboed/exemplo-de-conversa-com-o-robo-ed.jpg</a></figcaption></figure><h4>Feito é melhor que perfeito</h4><p>Montar fluxos grandes demais fará com que se gaste muito tempo com a criação de diálogos complexos na tentativa de tapar todos os buracos, sendo que na primeira conversa com uma pessoa externa, já serão encontrados no mínimo 5 buracos que estavam escondidos.</p><p>Com isso em mente, é interessante que o aprendizado do assistente seja planejado em etapas. Desejar que o mesmo seja especialista em um determinado assunto da noite para o dia é inviável e desgastante. Fazer com que ele domine pequenas partes de um contexto de forma gradativa é muito mais simples e fácil de obter métricas e validar seu conhecimento nos tópicos a ele atribuídos.</p><p>Outro ponto importante é que, desenvolvendo-se o <em>chatbot </em>por etapas, podemos validá-lo com os clientes mais rapidamente e verificar se o “mvp” satisfaz as condições estipuladas inicialmente.</p><h4>Forneça sugestões, mas permita a digitação</h4><p>Sabemos que há dois tipos de <em>chatbots </em>— os compostos por <strong>comandos </strong>e os de <strong>linguagem natural</strong>.</p><p>O <em>chatbot </em>por comandos possui uma série de instruções predefinidas para o usuário escolher, não sendo possível a escolha de funções diferentes das listadas.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/0*L8he8GWToQTR0ZLC.jpg" /><figcaption><a href="https://i.goopics.net/PrGq.jpg">https://i.goopics.net/PrGq.jpg</a></figcaption></figure><p>Isso faz com que os usuários fiquem limitados quanto a opção de escolha, e não torne a experiência tão humanizada — embora ainda sejam muito úteis dependendo do contexto a ser trabalhado.</p><p>Ao trabalharmos com <em>chatbots </em>de linguagem natural, trazemos uma aproximação ainda maior com a nossa realidade. Temos a liberdade de enviar mensagens semelhantes às que enviamos para amigos e colegas em aplicativos de mensageria já existentes, tornando a experiência muito avançada.</p><p>É possível mixar ambas as funcionalidades. Trazer para o <em>chatbot </em>de comandos uma caixa de digitação que permita ao usuário dizer o que deseja, caso as opções que lhe foram fornecidas não o satisfaçam, ou o contrário — trazer para o <em>chatbot </em>de linguagem natural alguns comandos predefinidos que facilitem a conversação.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/387/1*M1Nidc2ktrB8u4TkjcABNw.png" /><figcaption>MagaLu. Converse escolhendo um comando ou digitando</figcaption></figure><p>O que é importante, nos dia de hoje, é a pessoa possuir <strong>liberdade</strong> e <strong>agilidade</strong>.</p><p>Tá achando que acabou? Ihhhhh, achou errado, acabou não! 😄</p><p>A sequência continua! Tem mais dois artigos chegando! Está só começando! 🔥</p><p><strong>Gostou</strong>? Deixa uma palminha para eu saber que esse artigo contribuiu em algo para você!</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*gaKDMDYQpriLFtyr58uPQg.gif" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5638eee268c9" width="1" height="1" alt=""><hr><p><a href="https://medium.com/botsbrasil/melhores-pr%C3%A1ticas-para-desenvolvimento-de-chatbots-parte-1-5638eee268c9">Melhores práticas para desenvolvimento de chatbots — Parte 1</a> was originally published in <a href="https://medium.com/botsbrasil">Bots Brasil</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Minha primeira vez na Campus Party]]></title>
            <link>https://medium.com/blogmikaeriohana/minha-primeira-vez-na-campus-party-d778937fc792?source=rss-3d59ab256122------2</link>
            <guid isPermaLink="false">https://medium.com/p/d778937fc792</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[innovation]]></category>
            <category><![CDATA[party]]></category>
            <category><![CDATA[campus-party]]></category>
            <category><![CDATA[campus]]></category>
            <dc:creator><![CDATA[Mikaeri Ohana]]></dc:creator>
            <pubDate>Sun, 10 Mar 2019 23:15:26 GMT</pubDate>
            <atom:updated>2019-03-11T00:28:17.584Z</atom:updated>
            <content:encoded><![CDATA[<h3>Minha primeira vez na Campus Party #CPBR12</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*56atS3LLS7xjEY--dIrl5w.jpeg" /><figcaption><a href="https://www.flickr.com/photos/campuspartybrasil/47158755302/in/album-72157706833382945/">https://www.flickr.com/photos/campuspartybrasil/47158755302/in/album-72157706833382945/</a></figcaption></figure><p>Eu sempre ouvi falar da Campus Party. As referências eram de um evento voltado para todo e qualquer assunto relacionado à tecnologia e inovação. Sempre tive a curiosidade de saber como era e poder falar sobre o evento com aquela alegria contagiante com que todo mundo falava.</p><p>Em fevereiro deste ano, através do <a href="https://medium.com/u/b88cce40306d">Womakerscode - Tecnologia, Carreira e Protagonismo</a>, tive a oportunidade de ir até o evento pela primeira vez.</p><p>O evento ocorreu no Expo Center Norte, que conseguiu comportar bem o número grande de pessoas que compareceram.</p><p>O dia que consegui comparecer foi 16/02 (sábado), um dia antes da finalização do evento que perdurou de 12/02 (terça-feira) até 17/02 (domingo).</p><p>O evento estava bem cheio, e desde o início me propus a gravar e mostrar para todos o que mais de inovador havia em forma de vídeo, que posteriormente seria postado no meu canal do YouTube.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OROyBJk8yckMkSi1Us1seg.png" /><figcaption>Meu canal: <a href="https://www.youtube.com/channel/UCY2QxNMMxxf8Oz2QGSNAkIw">https://www.youtube.com/channel/UCY2QxNMMxxf8Oz2QGSNAkIw</a></figcaption></figure><h3>Ônibus</h3><p>Um ponto que achei bem interessante é que há um ônibus que leva os participantes do Terminal Rodoviário Tietê para o local do evento. Isso foi ótimo para mim, que moro em outra cidade e chego até São Paulo por este mesmo terminal. 🤗</p><p>Eu demorei um pouco para localizar o ponto onde os ônibus estavam situados. Tive que procurar bastante para encontrar e perguntar para muitas pessoas, e quase nenhuma sabia me informar. Talvez seja interessante adicionar algumas fotos do ponto no próprio site no próximo evento, pois o terminal é grande e pode facilitar o encontro dos participantes.</p><h3>Ingressos</h3><p>Um dos pontos que, ao meu ver, faz parte dos mais interessantes.</p><p>O meu ingresso era do tipo <strong>Camping</strong>, ou seja, eu tinha direito de acampar no evento todos os dias. No entanto, meu namorado só pode ir um dia comigo. O site da Campus não oferecia nenhum tipo de ingresso <em>day pass</em>, onde a pessoa poderia usufruir de apenas um dia do evento.</p><p>Quando eu estava quase perdendo as esperanças, vi o seguinte <em>banner</em>, que fez meus olhos brilharem:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/765/1*48LUBpSYKtenqdVbvJNepQ.png" /><figcaption>Banner para troca de eletrônicos por <em>day </em>pass na Campus</figcaption></figure><p>Caso a pessoa interessada em passar um dia na Campus tivesse algum eletrônico que pudesse ser doado ou precisasse ser descartado, ela poderia fazer a troca do mesmo (seguindo as condições acima descritas) por um ingresso para um dia. <em>Era o que precisávamos!</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UpJ0pY9NR99BpJMlkf1PSA.png" /><figcaption>Espaço para troca dos equipamentos</figcaption></figure><p>Após efetuarmos a troca, seguimos para a entrada do evento.</p><h3>Open Campus</h3><p>Uma das coisas que me chamou a atenção foi uma área chamada <em>Open Campus</em>, onde não é necessário o ingresso para visita. Nessa área haviam algumas atrações interessantes que envolviam realidade virtual e algumas <em>talks</em>, que puderam envolver pessoas que estavam de passagem pelo evento mas não possuíam o ingresso.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*3j6oG2-B3PYgGSKxTrWXzA.png" /><figcaption>VR na Open Campus</figcaption></figure><p>Passando a <em>Open Campus</em>, temos acesso à <em>Campus Arena</em>, que é a área paga do evento.</p><p>Nessa área, nós temos acesso à maioria das palestras que acontecem e aos <em>stands, workshops </em>e <em>hackatons</em>. Elas acontecem a todo momento, sendo cerca de 300 horas de conteúdo.</p><h3>Camping</h3><p>Assim que cheguei, procurei ver como funcionava a área do <em>camping</em>. Sabia que havia um processo de retirada de barraca e montagem dela, então procurei fazer isso o quanto antes para poder separar o restante do dia para aproveitar o evento.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iFz1ZkRGhwXCZyvx-6dkJw.png" /><figcaption>Área de camping (muitas barracas!)</figcaption></figure><p>A quantidade de barracas é <strong>absurda</strong>! Como o evento recepciona pessoas de todo o país e tem duração de quase uma semana, o espaço é bem grande para abrigar tamanho número de pessoas.</p><p>Há duchas e espaço dedicado para os campuseiros que acampam, contendo uma padaria para os mesmos. Uma pena que eu não tenha conseguido usufruir melhor desse espaço por ter ficado apenas um dia. 🙁</p><p>Após montar minha barraca, finalmente entrei na Arena e iniciei os trabalhos de conhecer a Campus.</p><h3>Programação</h3><p>Uma dica que eu dou a todas as pessoas que irão no evento — e não apenas nesse evento, mas em qualquer um que você venha a comparecer — é <strong>baixe o aplicativo/paper da programação</strong>. Isso é <strong>importantíssimo</strong> para que você consiga aproveitar ao máximo o evento, tornando seus dias mais produtivos e permitindo que você consiga extrair o máximo de conteúdo!</p><p>Baixei o aplicativo da Campus e tive ideia de como me preparar, selecionando as palestras que eu desejava ir logo no início do evento. É possível filtrar por dia, por palestrante, por palco…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/540/1*hrQSoi-UYQGKlkBXYkCatg.jpeg" /><figcaption>Print do aplicativo com a programação com filtro de dias</figcaption></figure><p>São <strong>vários</strong> palcos! Palco <em>Startups</em>, <em>STEAM</em>, <em>Feel the Future</em> (um dos mais amados), <em>Creativity</em>/<em>Design</em>, <em>Entertainment</em>, <em>Coders</em>, <em>Entrepreneurship</em>, <em>Makers</em>, Academia <em>Creators</em>, Academia <em>Gamers</em>, <em>e mais workshops e comunidades de montão!</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2duYvLJsSb3OBgQYcd1MGw.png" /></figure><h3>Ecossistema</h3><p>Muitos participantes levam seus computadores customizados (vários com <em>upgrades</em>, <em>leds, </em>configurações altíssimas e <em>hardware </em>de ponta) para exibir no evento ou para jogar com outros participantes. Há vários campeonatos que ocorrem paralelamente às palestras.</p><p>A maioria das atrações girava em torno de realidade virtual, com a utilização de óculos <em>rift </em>e sensores de movimento. Experimentei algumas, mas outras não consegui devido às filas enormes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*M9301APGgiJoqw4wI9mVpQ.png" /><figcaption>Participante é submetido a um jogo de aventura, preso por algumas molas que permitem flexibilidade para as ações que precisará realizar</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*urxJCq52WA_eOdl7LmFzHg.png" /><figcaption>Quando o participante passa pelo stand, os ovos sobem, impedindo que ele os pegue!</figcaption></figure><p>Enquanto passeava pelo evento, vi uma galera jogando o <em>Beat Saber</em>, e super me interessei em conhecer.</p><p>No vídeo do <a href="https://www.youtube.com/watch?v=Sdi_EQDqPJU">YouTube</a> onde registrei tudo (está no final do artigo para você ver!), coloquei por que achei esse jogo perigoso. <strong>Assista! </strong>😅</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BQnUYD61dspaY4aAaxE_2w.jpeg" /><figcaption>Aqui, consegui jogar o jogo Beat Saber (amei!). Você escolhe a música e efetua as ações do jogo de forma sincronizada.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZYGDz_wEcD1nXKbjmkMbfA.jpeg" /><figcaption>Workshop de Machine Learning para Unity</figcaption></figure><p>Tinha até um espacinho do Sesc para quem quisesse dar uma relaxada.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*u--bk5HQfZ7TdHu2fQRpJg.png" /><figcaption>Espaço com “sofazinhos” de massagem para os participantes — não consegui lugar :(</figcaption></figure><h3>Palestras</h3><p>As palestras que assisti foram ótimas! Foi um pouco corrido, então consegui priorizar 4 dentro do escopo imenso que tinha.</p><p>Rodrigo Galvão, em <em>Feel the Future</em>, com <strong>“O que brilha seus olhos? Rodrigo Galvão, de estagiário a presidente!”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9LMSHZA5Ee_jB7Og0I7hfg.jpeg" /></figure><p><a href="https://medium.com/u/9790c9237427">Thiago Melo</a>, em <em>Entrepreneurship</em>, com <strong>“Pense como um <em>Product Manager </em>desde o dia Zero”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hrexSMpRogykrl6rlax5-w.jpeg" /></figure><p>Juliana Munaro, em <em>Entrepreneurship</em>, com <strong>“Empreender: quais são os desafios?”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2Sv52HFSo03eLlpt1oIpOQ.jpeg" /><figcaption>Juliana Munaro, com “Empreender: quais são os desafios?”</figcaption></figure><p><a href="https://medium.com/u/3ca14e77c7ab">Cynthia Zanoni</a>, em <em>Coders</em>, com <strong>“<em>PWA </em>— o futuro dos aplicativos <em>Mobile Web</em>”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BtrueayH8EgkgD2UvrlkKw.jpeg" /><figcaption><a href="https://medium.com/u/3ca14e77c7ab">Cynthia Zanoni</a>, com “<em>PWA </em>— o futuro dos aplicativos <em>Mobile Web</em>”</figcaption></figure><p>Tenho duas entrevistas que ainda serão postadas, com o Thiago e com a Juliana. Nas próximas semanas irei divulgar!</p><h3>Para a organização</h3><p>Eu achei muito interessante a ideia de deixar que os participantes que optaram pela opção do <em>camping</em> possam levar suas barracas embora. Eu não tinha uma barraca, e achei massa poder levar a minha para casa.</p><p>No entanto, ao invés de usar minha barraca para um momento de lazer próprio, tive uma ideia junto com a minha mãe de dar uma utilidade melhor para ela. Doar a minha barraca a algum morador de rua ou pessoa que precisasse de um abrigo.</p><h4>Doação de barracas não usadas</h4><p>Quando estava indo embora do evento, notei uma grande quantidade de barracas que não haviam nem sido montadas. Se contarmos essas e as que serão deixadas para trás por participantes que não desejam levar consigo suas barracas, teremos aí um número gigantesco de barracas que podem ser doadas a quem precisa.</p><p>Há um número muito grande de desabrigados que passam frio por não terem um lar. Considerando isso e as chuvas constantes a que estamos dispostos ultimamente, a doação dessas barracas que foram deixadas seria uma ótima solução para esse problema — ou, ao menos, um começo para isso.</p><p>Não sei o que é feito com as barracas que sobram. Caso já tenha algum tipo de destino para as mesmas que beneficie alguém no final, essa sugestão pode ser desconsiderada. No entanto, acho que seria uma corrente muito bacana que poderia ser seguida a todos que pudessem fazer o mesmo.</p><h4>TV’s maiores para os workshops</h4><p>Enquanto eu passeava pela Campus, prestei atenção em alguns workshops e vi que havia uma grande quantidade de pessoas para assistirem uma TV bem pequena, onde eram projetados os <em>slides </em>dos palestrantes.</p><p>Se o número de pessoas já era grande, eu imagino o quão maior seria se as TV’s fossem ainda maiores. Seria muito mais receptivo para um público maior aproveitar o conteúdo! 😄</p><p>A Campus, além de um lugar ótimo para obtenção de conhecimento, é favorável para <strong>networking</strong>. Encontrei pessoas lindas por lá, que conhecia já nas redes e em alguns eventos, e poder fortalecer esses laços é algo enriquecedor!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fPcMoA_Wvbw4DOErY7T6gg.jpeg" /><figcaption>Jessica Felix, maravilhosa e rainha dos hackatons!</figcaption></figure><p>#CPBR12, eu fui! ✌️</p><p>Um agradecimento especial à <a href="https://medium.com/u/b88cce40306d">Womakerscode - Tecnologia, Carreira e Protagonismo</a> e à <a href="https://medium.com/u/3ca14e77c7ab">Cynthia Zanoni</a> por afirmarem com excelência o espaço da mulher, não só na tecnologia, mas em todas as vertentes do <strong>mundo de luta</strong> em que vivemos.</p><p>O vídeo que gravei é esse aqui ⬇️</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FSdi_EQDqPJU%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DSdi_EQDqPJU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FSdi_EQDqPJU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/36b9c3c8c1b8f8350e6bef6c4fc35f0e/href">https://medium.com/media/36b9c3c8c1b8f8350e6bef6c4fc35f0e/href</a></iframe><p>Me conte o que achou e me fale das suas impressões sobre a Campus Party também! ❤</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d778937fc792" width="1" height="1" alt=""><hr><p><a href="https://medium.com/blogmikaeriohana/minha-primeira-vez-na-campus-party-d778937fc792">Minha primeira vez na Campus Party</a> was originally published in <a href="https://medium.com/blogmikaeriohana">Blog Mikaeri Ohana</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>