<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo de Inteligência Artificial - Data Universe</title>
	<atom:link href="https://datauniverse.com.br/category/inteligencia-artificial/feed/" rel="self" type="application/rss+xml" />
	<link>https://datauniverse.com.br/category/inteligencia-artificial/</link>
	<description>Conteúdos sobre as áreas de Data Science, Data Analytics, Estatística e Probabilidade, Inteligência Artificial e Machine Learning.</description>
	<lastBuildDate>Tue, 26 Aug 2025 22:16:55 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://datauniverse.com.br/wp-content/uploads/2026/01/cropped-data-universe-logo-icon-32x32.png</url>
	<title>Arquivo de Inteligência Artificial - Data Universe</title>
	<link>https://datauniverse.com.br/category/inteligencia-artificial/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Otimização Semântica: Ferramenta para Gerar Schema JSON-LD de FAQ</title>
		<link>https://datauniverse.com.br/otimizacao-semantica-como-o-gerador-de-schema-json-ld-potencializa-a-nova-era-da-busca-com-geo/</link>
					<comments>https://datauniverse.com.br/otimizacao-semantica-como-o-gerador-de-schema-json-ld-potencializa-a-nova-era-da-busca-com-geo/#respond</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Tue, 26 Aug 2025 03:52:30 +0000</pubDate>
				<category><![CDATA[Inteligência Artificial]]></category>
		<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">https://datauniverse.com.br/?p=2651</guid>

					<description><![CDATA[<p>No ecossistema digital atual, a busca do Google evoluiu de um simples motor de respostas para um complexo sistema de descoberta semântica. Os usuários não apenas digitam palavras-chave; eles fazem perguntas, buscam soluções imediatas e esperam resultados contextuais, especialmente com base em sua localização. É neste cenário que entender o que é o schema de [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/otimizacao-semantica-como-o-gerador-de-schema-json-ld-potencializa-a-nova-era-da-busca-com-geo/">Otimização Semântica: Ferramenta para Gerar Schema JSON-LD de FAQ</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>No ecossistema digital atual, a busca do Google evoluiu de um simples motor de respostas para um complexo sistema de descoberta semântica. Os usuários não apenas digitam palavras-chave; eles fazem perguntas, buscam soluções imediatas e esperam resultados contextuais, especialmente com base em sua localização. </p>



<p>É neste cenário que entender <strong>o que é o schema de FAQ e como o Schema potencializa a nova era da busca com GEO</strong> se torna não apenas uma vantagem, mas uma necessidade estratégica para qualquer profissional de dados, marketing ou tecnologia.</p>



<p>A capacidade de estruturar informações de forma que as máquinas possam entender inequivocamente é a base do SEO técnico moderno. </p>



<p>Ao fornecer respostas claras e localizadas diretamente na página de resultados (SERP), você não só melhora a experiência do usuário, mas também sinaliza ao Google sua autoridade e relevância no assunto, posicionando-se à frente da concorrência.</p>



<h2 class="wp-block-heading">O que é o schema de FAQ e como o Schema Potencializa a Nova Era da Busca com GEO</h2>



<p>Para responder de forma direta, o <strong>Schema de FAQ</strong> (Frequently Asked Questions) é um tipo específico de marcação de dados estruturados (structured data). Ele funciona como um &#8220;vocabulário&#8221; que você adiciona ao código do seu site para dizer aos motores de busca, como o Google, que uma determinada seção do seu conteúdo é uma lista de perguntas e respostas. Isso permite que o Google exiba suas perguntas e respostas como um <em>rich snippet</em> (resultado rico) diretamente na SERP.</p>



<p>A mágica acontece quando combinamos isso com <strong>GEO</strong>, ou seja, a geolocalização. A busca moderna é hiperlocal. O Google utiliza a localização do usuário para fornecer os resultados mais relevantes. Ao potencializar seus dados estruturados com informações contextuais e geográficas, você permite que o Google entenda não só &#8220;o quê&#8221; você responde, mas &#8220;onde&#8221; essa resposta é mais relevante, criando uma poderosa sinergia para dominar as buscas locais e informativas.</p>



<h2 class="wp-block-heading">A Mecânica por Trás dos Dados Estruturados: JSON-LD na Prática</h2>



<p>Dados estruturados podem parecer um conceito abstrato, mas sua implementação é bastante concreta. A forma mais recomendada e flexível de adicionar o schema ao seu site é através do formato JSON-LD (JavaScript Object Notation for Linked Data).</p>



<p>Diferente de outros formatos que exigem a inserção de tags diretamente no HTML visível, o JSON-LD é um script que pode ser colocado no <code>&lt;head&gt;</code> ou <code>&lt;body&gt;</code> da sua página. Isso o torna mais limpo e fácil de gerenciar, sem interferir no código que renderiza o conteúdo para o usuário.</p>



<p>Um schema de FAQ básico em JSON-LD se parece com isto:</p>



<pre class="wp-block-code"><code>{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": &#91;{
    "@type": "Question",
    "name": "Qual é a sua primeira pergunta?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Esta é a resposta para a primeira pergunta."
    }
  },{
    "@type": "Question",
    "name": "Qual é a sua segunda pergunta?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "E esta é a resposta para a segunda pergunta."
    }
  }]
}
</code></pre>



<p>Este código é um mapa claro para o Google, eliminando ambiguidades e permitindo que ele processe e exiba suas informações de forma eficiente.</p>



<h2 class="wp-block-heading">GEO e a Hiperlocalização: Por que a Localização é o Novo Campo de Batalha do SEO</h2>



<p>A proliferação de dispositivos móveis transformou a busca. Consultas como &#8220;consultoria de data science perto de mim&#8221; ou &#8220;melhor curso de machine learning em São Paulo&#8221; são cada vez mais comuns. O Google prioriza a entrega de resultados que não são apenas corretos, mas geograficamente pertinentes.</p>



<p>A busca com GEO utiliza múltiplos sinais para determinar a relevância local:</p>



<ul class="wp-block-list">
<li><strong>Localização física do usuário:</strong> Detectada via GPS ou endereço IP.</li>



<li><strong>Menções geográficas na consulta:</strong> Quando o usuário inclui o nome de uma cidade ou bairro.</li>



<li><strong>Dados do Google Business Profile:</strong> Informações sobre o endereço físico de uma empresa.</li>
</ul>



<p>Quando você implementa um schema de FAQ em uma página que também possui um schema de <code>LocalBusiness</code> ou <code>Organization</code> com dados de endereço claros, você cria uma conexão semântica poderosa. Você está dizendo ao Google: &#8220;Para usuários nesta região, estas são as perguntas mais frequentes e aqui estão as respostas definitivas&#8221;.</p>



<h2 class="wp-block-heading">Entendendo a Ferramenta: JSON-LD, Schema de FAQ e HTML</h2>



<p><a href="https://datauniverse.com.br/json-ld-schema-generator/">Esta ferramenta</a> foi projetada para resolver dois problemas comuns na publicação de conteúdo web: otimização para motores de busca (SEO) e a apresentação visual do conteúdo para o leitor. </p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="957" height="693" src="https://datauniverse.com.br/wp-content/uploads/2025/08/image.png" alt="" class="wp-image-2653" srcset="https://datauniverse.com.br/wp-content/uploads/2025/08/image.png 957w, https://datauniverse.com.br/wp-content/uploads/2025/08/image-300x217.png 300w, https://datauniverse.com.br/wp-content/uploads/2025/08/image-768x556.png 768w" sizes="(max-width: 957px) 100vw, 957px" /></figure>



<h3 class="wp-block-heading">O que é JSON-LD?</h3>



<p><strong>JSON-LD (JavaScript Object Notation for Linked Data)</strong> é um formato de dados estruturados recomendado pelo Google. Ele permite que você &#8220;traduza&#8221; o conteúdo da sua página para uma linguagem que os motores de busca entendem perfeitamente. </p>



<p>Ao fazer isso, você fornece um contexto claro sobre suas informações. O código JSON-LD gerado por esta ferramenta é inserido no <code>&lt;head></code> do seu site e não é visível para os usuários, servindo apenas para comunicar-se com os robôs de busca.</p>



<h3 class="wp-block-heading">O que é o Schema de FAQ (FAQPage)?</h3>



<p>O <strong>Schema de FAQ (<code>FAQPage</code>)</strong> é um tipo específico de marcação de dados estruturados que informa ao Google que sua página contém uma lista de perguntas e respostas. </p>



<p>Quando o Google identifica essa marcação, ele pode exibir suas perguntas e respostas diretamente nos resultados da pesquisa, como um <em>rich result</em> (resultado rico). </p>



<p>Isso aumenta a visibilidade do seu site, ocupa mais espaço na página de resultados e pode melhorar significativamente sua taxa de cliques (CTR), pois os usuários encontram respostas diretamente no Google.</p>



<h3 class="wp-block-heading">Como o Código HTML Facilita a Implementação?</h3>



<p>A regra de ouro do Google para dados estruturados é que <strong>o conteúdo marcado com schema deve estar visível para o usuário na página</strong>. </p>



<p>Simplesmente adicionar o código JSON-LD sem exibir as perguntas e respostas no seu artigo pode ser considerado uma violação das diretrizes do Google.</p>



<p>É aqui que o segundo código gerado entra: o <strong>HTML estilizado</strong>. Esta ferramenta não só cria o código para os robôs (JSON-LD), mas também o código para os seus leitores (HTML). </p>



<p>Ao copiar e colar este bloco HTML diretamente no corpo do seu artigo, você garante que as mesmas perguntas e respostas do seu schema estão visíveis para todos, cumprindo as diretrizes do Google e enriquecendo o conteúdo para o seu público. </p>



<p>Isso economiza tempo e garante que sua implementação de SEO técnico esteja correta e completa.</p>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://datauniverse.com.br/json-ld-schema-generator/" target="_blank" rel="noreferrer noopener">Acesse a ferramenta aqui</a></div>
</div>



<h2 class="wp-block-heading">O Erro Comum a Evitar: Não Transforme Tudo em um FAQ</h2>



<p>Um erro frequente é tentar usar o schema de FAQ para fins promocionais ou em páginas que não possuem um formato genuíno de perguntas e respostas. </p>



<p>O Google é explícito em suas diretrizes: o conteúdo deve ser uma troca de informações, não um anúncio.</p>



<p>Utilizar o schema de forma inadequada pode levar à perda da elegibilidade para rich snippets ou, em casos piores, a ações manuais. </p>



<p>O foco deve ser sempre em agregar valor e responder diretamente às dúvidas do usuário, alinhando-se com a intenção de busca informativa.</p>



<h2 class="wp-block-heading">Sinergia: O Aumento da Taxa de Cliques (CTR)</h2>



<p>O principal benefício de aparecer com um <em>rich snippet</em> de FAQ é o aumento do espaço que seu site ocupa na SERP. Isso torna seu resultado mais visível e informativo, o que naturalmente leva a uma maior taxa de cliques (CTR).</p>



<p>Ao responder a uma dúvida já na página de resultados, você estabelece confiança e autoridade antes mesmo de o usuário clicar. Ele entende que seu site tem a resposta que ele procura, tornando o clique mais qualificado e intencional.</p>



<h3 class="wp-block-heading">Conclusão</h3>



<p>Dominar a busca moderna exige uma compreensão profunda de como a informação é estruturada e contextualizada. Ignorar a intersecção entre dados semânticos e geolocalização é deixar uma oportunidade imensa na mesa. </p>



<p>Agora que você compreende <strong>o que é o schema de FAQ e como o Schema potencializa a nova era da busca com GEO</strong>, o próximo passo é a aplicação prática. Ao estruturar seu conteúdo para responder diretamente às perguntas do seu público e sinalizar sua relevância local, você constrói uma base sólida para um SEO robusto, alinhado às diretrizes de E-E-A-T e preparado para o futuro.</p>
<p>O post <a href="https://datauniverse.com.br/otimizacao-semantica-como-o-gerador-de-schema-json-ld-potencializa-a-nova-era-da-busca-com-geo/">Otimização Semântica: Ferramenta para Gerar Schema JSON-LD de FAQ</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/otimizacao-semantica-como-o-gerador-de-schema-json-ld-potencializa-a-nova-era-da-busca-com-geo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Criando um chatbot automatizado para retirada de pedidos com API do Chatgpt 3.5 turbo em Python</title>
		<link>https://datauniverse.com.br/criando-um-chatbot-automatizado-para-retirada-de-pedidos-com-api-do-chatgpt-3-5-turbo-em-python/</link>
					<comments>https://datauniverse.com.br/criando-um-chatbot-automatizado-para-retirada-de-pedidos-com-api-do-chatgpt-3-5-turbo-em-python/#comments</comments>
		
		<dc:creator><![CDATA[Alexandre Polselli]]></dc:creator>
		<pubDate>Wed, 17 May 2023 22:46:23 +0000</pubDate>
				<category><![CDATA[Inteligência Artificial]]></category>
		<category><![CDATA[Projetos]]></category>
		<guid isPermaLink="false">https://alexandrepolselli.com.br/?p=1457</guid>

					<description><![CDATA[<p>Uma das coisas empolgantes sobre um LLM (large language model) como o ChatGPT é que você pode usá-lo para construir um chatbot personalizado com uma interface conversacional e desenvolver uma conversa completa de ponta a ponta se aproveitando de todo o poder e aprendizado que o ChatGPT já possui em sua disposição. Os chatbots são [&#8230;]</p>
<p>O post <a href="https://datauniverse.com.br/criando-um-chatbot-automatizado-para-retirada-de-pedidos-com-api-do-chatgpt-3-5-turbo-em-python/">Criando um chatbot automatizado para retirada de pedidos com API do Chatgpt 3.5 turbo em Python</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow" open><summary>Detalhes do projeto</summary>
<ul class="wp-block-list">
<li><strong>Link do projeto no Github:</strong> <a href="https://github.com/cerqueiralex/chatgpt-chatbot/" target="_blank" rel="noreferrer noopener">https://github.com/cerqueiralex/chatgpt-chatbot/</a></li>



<li><strong>Tecnologias:</strong> Python, OpenAI API, ChatGPT, OS</li>



<li><strong>Categorias:</strong> Data Science, Prompt Engineering</li>
</ul>
</details>



<p>Uma das coisas empolgantes sobre um LLM (large language model) como o ChatGPT é que você pode usá-lo para construir um chatbot personalizado com uma interface conversacional e desenvolver uma conversa completa de ponta a ponta se aproveitando de todo o poder e aprendizado que o ChatGPT já possui em sua disposição.</p>



<p>Os chatbots são comumente usados para lidar com consultas de atendimento ao cliente, responder perguntas frequentes, realizar tarefas de agendamento ou fornecer informações detalhadas sobre um produto ou serviço. Eles são programados para responder de maneira a simular a conversação humana e são especialmente úteis para lidar com interações repetitivas, liberando tempo para que os humanos lidem com tarefas mais complexas.</p>



<p>Existem dois tipos principais de chatbots:</p>



<p><strong>Chatbots baseados em regras:</strong> Esses chatbots respondem a consultas específicas e seguem um conjunto pré-definido de regras. Eles são limitados em termos de capacidade de compreensão e não conseguem lidar com perguntas fora das regras pré-definidas.</p>



<p><strong>Chatbots baseados em Inteligência Artificial:</strong> Esses chatbots utilizam técnicas de Processamento de Linguagem Natural(PLN) e Aprendizado de Máquina (Machine Learning) para entender melhor a intenção do usuário e fornecer respostas mais naturais e contextualmente relevantes. </p>



<p>Modelos de linguagem como GPT-3 e GPT-4 da OpenAI são exemplos de tecnologia usada para construir chatbots baseados em Inteligência Artificial. O ChatGPT é um chatbot baseado em IA.Esses bots são capazes de aprender com as interações passadas, melhorando assim a qualidade das respostas ao longo do tempo. </p>



<p>Eles podem gerenciar uma variedade de perguntas e até mesmo participar de conversas mais complexas com os usuários.</p>



<p>A ideia desse projeto aqui é construir um modelo exemplo de chatbot personalizado, talvez para desempenhar o papel de um agente de atendimento ao cliente utilizando IA ou para fazer pedidos em um restaurante.</p>



<p>Claramente para ser colocado em prática, é necessário muito mais customização e configuração do modelo, mas aqui irei construir um conceito básico que pode ser escalado para algo maior ou completamente diferente dependendo do contexto de cada projeto ou empresa.</p>



<h2 class="wp-block-heading">Criando um processo de ponta a ponta</h2>



<p>Antes de partir para a ação e para a modelagem precisamos definir um processo bem claro de como irá funcionar o fluxo de recebimento das mensagens e dos inputs dos usuários. E para isso é importante entender o comportamento base do modelo e como ele recebe as mensagens e como você pode utilizar os outputs para comunicar aos sistemas internos e fazer um ETL desse fluxo.</p>



<p>Esse é um exemplo de fluxo utilizado em um projeto de um serviço de agendado de consultas médicas com o objetivo de reduzir o tempo de espera dos pacientes e facilitar o trabalho dos profissionais de saúde.</p>



<p>Por meio de um assistente virtual, os pacientes poderão marcar suas consultas de acordo com suas preferências de horário e especialistas médicos.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-20-1024x429.png" alt="" class="wp-image-1469"/><figcaption class="wp-element-caption">Este fluxo foi criado por desenvolvedores da consultoria CI&amp;T (referência ao final deste artigo).créditos da imagem: <a href="https://www.linkedin.com/in/isaacsilva98/" target="_blank" rel="noreferrer noopener">https://www.linkedin.com/in/isaacsilva98/</a></figcaption></figure>



<p>Inicialmente temos a ação do usuário de começar a conversa e me seguida recebe a prompt do usuário; baseado nessa prompt ele irá fazer perguntas até avançar para a etapa de conclusão do agendamento do pedido, enquanto ele não alcançar essa etapa (false) ele retorna para as perguntas até conseguir as informações que precisa.</p>



<p>Uma vez adquiridas as respostas necessárias ele parte para a ação de agendamento do pedido e grava isso no banco de dados passando então as informações do agendamento para o paciente e encerrando o chat. </p>



<p>Esse processo inteiro não será abordado neste artigo, porém serve como base para que cada empresa estruture um fluxo completo de acordo com sua arquitetura e necessidades.</p>



<h2 class="wp-block-heading">Instalando as dependências</h2>



<p>Primeiro, configuraremos o pacote Python OpenAI. Modelos de chat como o ChatGPT são na verdade treinados para receber uma série de mensagens como entrada e retornar uma mensagem gerada pelo modelo como saída. </p>



<p>E, embora o formato de chat seja projetado para tornar as conversas de várias iterações como esta fácil, também é igualmente útil para tarefas de uma única volta sem qualquer conversa.</p>



<p>Dependendo do programa que estiver utilizando para rodar o python, pode ser necessário instalar os pacotes antes de importar. </p>



<pre class="wp-block-code"><code>!pip install openai
!pip install load_dotenv</code></pre>



<figure class="wp-block-image size-large is-style-default"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-12-1024x657.png" alt="" class="wp-image-1458"/><figcaption class="wp-element-caption">Instalação dos pacotes com sucesso</figcaption></figure>



<p>Em seguida iremos importar os pacotes da openai e dotenv e inserir a chave da API da open AI, caso ainda não possua uma pode ser criada em: <a href="https://platform.openai.com/account/api-keys" target="_blank" rel="noreferrer noopener">https://platform.openai.com/account/api-keys</a></p>



<p>Eu estou utilizando uma chave gratuita e utilizando o modelo do chatgpt 3.5 turbo que é o que está disponível atualmente de forma gratuita. Para modelos 4 ou posterior é necessário pagar por uma licença.</p>



<pre class="wp-block-code"><code>import openai
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file

openai.api_key  = ('INSIRA AQUI SUA CHAVE API OPENAI')</code></pre>



<h2 class="wp-block-heading">Criando os objetos do modelo</h2>



<p>Em seguida iremos criar duas funções, a get_completion e get_completion_from_messages.</p>



<p>Se você observar, fornecemos um prompt, mas, na verdade, dentro da função, o que estamos fazendo é inserir esse prompt em algo que se parece com uma mensagem do usuário.</p>



<p>E isso ocorre porque o modelo ChatGPT é um modelo de chat, o que significa que ele é treinado para receber uma série de mensagens como entrada e retornar uma mensagem gerada pelo modelo como saída.</p>



<p>Portanto, a mensagem do usuário é meio que a entrada, e a mensagem do assistente é a saída.</p>



<pre class="wp-block-code"><code>def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = &#91;{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0, # this is the degree of randomness of the model's output
    )
    return response.choices&#91;0].message&#91;"content"]

def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=temperature, # this is the degree of randomness of the model's output
    )
#     print(str(response.choices&#91;0].message))
    return response.choices&#91;0].message&#91;"content"]</code></pre>



<p>A função <code>get_completion</code> é definida com dois parâmetros: <strong><code>prompt</code> e <code>model</code>.</strong> O parâmetro <code><strong>prompt</strong></code> representa o texto de entrada ou prompt fornecido pelo usuário. O parâmetro <code>model</code> é opcional e representa o modelo a ser usado para gerar a conclusão. Por padrão, é definido como &#8220;gpt-3.5-turbo&#8221;.</p>



<p>Dentro da função, uma lista <code><strong>messages</strong></code> é criada. Essa lista conterá as mensagens da conversa para a conclusão baseada em chat. Neste caso, a conversa consiste em uma única mensagem do usuário. A mensagem é representada como um dicionário com duas chaves: &#8220;role&#8221; e &#8220;content&#8221;. &#8220;role&#8221; especifica o papel da mensagem (neste caso, &#8220;user&#8221;), e &#8220;content&#8221; contém o texto real da mensagem, que é o <code>prompt</code> fornecido.</p>



<p>O método <code>openai.ChatCompletion.create()</code> é chamado para gerar a conclusão. Ele recebe vários argumentos:</p>



<p><code>model</code>: Especifica o modelo a ser usado para gerar a conclusão. É definido com o valor do parâmetro <code>model</code> passado para a função.</p>



<p><code>messages</code>: Especifica as mensagens da conversa para a conclusão. É definido como a lista <code>messages</code> criada no passo anterior.</p>



<p><code>temperature</code>: Especifica o grau de aleatoriedade na saída do modelo. Um valor de 0 faz com que a saída seja mais determinística, ou seja, mais previsível.</p>



<p>A resposta da API de conclusão de chat é armazenada na variável <code>response</code>.</p>



<p>Por fim, a função retorna o conteúdo da conclusão gerada pelo modelo. Ela acessa o conteúdo da primeira escolha da resposta usando <code>response.choices[0].message["content"]</code>. Cada escolha representa uma possível conclusão diferente, e neste caso, estamos pegando o conteúdo da primeira escolha como saída.</p>



<p>A segunda função, <code>get_completion_from_messages</code>, é semelhante à primeira, mas recebe a lista <code>messages</code> diretamente como parâmetro, em vez do <code>prompt</code>. Além disso, possui um parâmetro adicional <code>temperature</code>, que permite controlar o grau de aleatoriedade na saída do modelo. O restante do código é muito semelhante ao da primeira função, onde a resposta da API é armazenada na variável <code>response</code>, e o conteúdo da primeira escolha é retornado como saída.</p>



<p>Essas funções são usadas para interagir com um modelo de geração de texto baseado em chat da OpenAI, onde uma lista de mensagens é passada para o modelo, e ele retorna uma resposta gerada com base nessas mensagens.</p>



<p>Repare que utilizamos um parâmetro da variável response que é o <strong>temperature=0</strong>; A temperatura é um parâmetro que controla a &#8220;criatividade&#8221; ou aleatoriedade do texto gerado pelo GPT-3. Uma temperatura mais alta (por exemplo, 0,7) resulta em uma saída mais diversificada e criativa, enquanto uma temperatura mais baixa (por exemplo, 0,2) torna a saída mais determinística e focada.</p>



<p>Na prática, a temperatura afeta a distribuição de probabilidade sobre os possíveis tokens em cada etapa do processo de geração. Uma temperatura de 0 tornaria o modelo completamente determinístico, sempre escolhendo o token mais provável.</p>



<h2 class="wp-block-heading">Interface e automação do Orderbot</h2>



<p>Podemos automatizar a coleta de prompts do usuário e respostas do assistente para construir um OrderBot. O OrderBot irá receber pedidos em uma pizzaria.</p>



<p>Este chatbot será chamado de OrderBot, e iremos automatizar a coleta de prompts do usuário e respostas do assistente.</p>



<pre class="wp-block-code"><code>def collect_messages(_):
    prompt = inp.value_input
    inp.value = ''
    context.append({'role':'user', 'content':f"{prompt}"})
    response = get_completion_from_messages(context) 
    context.append({'role':'assistant', 'content':f"{response}"})
    panels.append(
        pn.Row('User:', pn.pane.Markdown(prompt, width=600)))
    panels.append(
        pn.Row('Assistant:', pn.pane.Markdown(response, width=600, style={'background-color': '#F6F6F6'})))
 
    return pn.Column(*panels)
</code></pre>



<p>Aqui iremos criar uma UI para simular a aplicação do painel do chatbot para o usuário, o que na prática seria construído e personalizado para cada empresa.</p>



<p>criamos dentro da variável context a prompt do sistema que funciona como o famoso &#8220;act as&#8221;  do chatgpt informando que ele dever´se comportar como um serviço automatizado e coleta de pedidos de uma pizzaria e seu nome é &#8220;Orderbot&#8221;</p>



<p>Passamos também para o modelo todas as informações e preços do menu da nossa pizzaria (aqui é importante a formatação dos preços corretamente com pontos no lugar de vírgulas)</p>



<pre class="wp-block-code"><code>import panel as pn  # GUI
pn.extension()

panels = &#91;] # collect display 

context = &#91; {'role':'system', 'content':"""
Você é o OrderBot, um serviço automatizado para coletar pedidos em uma pizzaria.\ 
Primeiro, você saúda o cliente e em seguida coleta o pedido.\
Depois, você pergunta se é para retirada ou entrega.\
Você aguarda para coletar o pedido completo,\ 
Você faz um resumo e verifica se o cliente deseja adicionar mais alguma coisa.\ 
Se for para entrega, você pede o endereço.\ 
Por fim, você coleta o pagamento.

Certifique-se de esclarecer todas as opções, extras e tamanhos para identificar exclusivamente o item do menu.\ 
Você responde de uma forma curta e amigável, como em uma conversa.\

O menu inclui:\

Pizza de pepperoni: R$ 12.95, R$ 10.00, R$ 7.00\
Pizza de queijo: R$ 10.95, R$ 9.25, R$ 6.50\
Pizza de berinjela: R$ 11.95, R$ 9.75, R$ 6.75\
Batatas fritas: R$ 4.50, R$ 3.50\
Salada grega: R$ 7.25\
Coberturas:\

Queijo extra: R$ 2.00\
Cogumelos: R$ 1.50\
Linguiça: R$ 3.00\
Bacon canadense: R$ 3.50\
Molho AI: R$ 1.50\
Pimentões: R$ 1.00\
Bebidas:\

Coca-Cola: R$ 3.00, R$ 2.00, R$ 1.00\
Sprite: R$ 3.00, R$ 2.00, R$ 1.00\
Água em garrafa: R$ 5.00\
"""} ]  # accumulate messages


inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…')
button_conversation = pn.widgets.Button(name="Chat!")

interactive_conversation = pn.bind(collect_messages, button_conversation)

dashboard = pn.Column(
    inp,
    pn.Row(button_conversation),
    pn.panel(interactive_conversation, loading_indicator=True, height=300),
)

dashboard</code></pre>



<h2 class="wp-block-heading">Testando o modelo</h2>



<p>O resultado final é um chatbot simples, porém poderoso! ele é capaz de entender contextos complexos e diferentes inputs de usuário e seguir com o pedido até o final.</p>



<p>Ele começa gerando uma interface vazia e com uma frase de introdução inicial que inicia a conversa com o cliente. Você então escreve qualquer coisa e ele irá te guiar automaticamente até o final do pedido.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-16.png" alt="" class="wp-image-1463"/></figure>



<p>Essa é uma simulação que eu fiz com ele pedido uma pizza de pepperoni do tamanho grande com molho extra e acabei não pedindo nenhuma bebida.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-13.png" alt="" class="wp-image-1460"/></figure>



<p>Ao concluir o pedido, o modelo traz um resumo com todas as informações do pedido, o endereço e o valor total incluindo ou não a taxa de entrega.</p>



<p>É interessante testar como que o modelo se comporta com diferentes tipos de inputs de usuário, por exemplo, quando ele me pergunta o tipo do pagamento eu devolvo com uma pergunta, se pode ser em dinheiro.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-14.png" alt="" class="wp-image-1461"/></figure>



<h2 class="wp-block-heading">Contextos não relacionados</h2>



<p>O mais interessante é que ao programar o chatgpt para seguir essa função, ele é extremamente eficiente em se manter alinhado ao seu objetivo e mesmo fazendo diversas perguntas complexas, diferentes e que não possuem contexto com o objetivo para o qual programamos, ele sempre tenta puxar o usuário de volta para o tópico central.</p>



<p>Isso é super importante pois torna o modelo de fato estável para ser utilizado em aplicações empresariais diversas e não causar problemas.</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-19.png" alt="" class="wp-image-1468"/></figure>



<h2 class="wp-block-heading">Comunicação com os sistemas e APIs internas</h2>



<p>E para comunicar os resultados do pedido nós criamos através do seguinte código um resumo em .json que pode ser computado e enviado para o sistema de pedidos.</p>



<p>Nesse caso estamos usando uma temperatura mais baixa =&#8221;0&#8243; para tornar o sistemas mais &#8220;previsível&#8221; tratando-se de uma comunicação direta com o usuário para evitar erros de entendimento ou comunicação que poder complicar o processo com os clientes.</p>



<pre class="wp-block-code"><code>messages =  context.copy()
messages.append(
{'role':'system', 'content':'create a json summary of the previous food order. Itemize the price for each item\
 The fields should be 1) pizza, include size 2) list of toppings 3) list of drinks, include size   4) list of sides include size  5)total price '},    
)
 #The fields should be 1) pizza, price 2) list of toppings 3) list of drinks, include size include price  4) list of sides include size include price, 5)total price '},    

response = get_completion_from_messages(messages, temperature=0)
print(response)</code></pre>



<p>O resultado final é um .json estruturado e criado pelo próprio poder do chatgpt:</p>



<figure class="wp-block-image size-full"><img decoding="async" src="https://alexandrepolselli.com.br/wp-content/uploads/2023/05/image-15.png" alt="" class="wp-image-1462"/></figure>



<p>Um dos maiores poderes do chatgpt é a capacidade de interpretar, escrever e gerar códigos em diversas linguagens de programação. Nesse caso o output pode ser gerado em diversos formatos como csv, json, xml etc.. dependendo de cada contexto.</p>



<h2 class="wp-block-heading">Deixando o modelo mais robusto</h2>



<p>Uma dica é que para criar um sistema mais robusto podemos utilizar a biblioteca <a href="https://python.langchain.com/en/latest/index.html" target="_blank" rel="noreferrer noopener">langchain</a> que permite manipular banco de dados e fazer com que o chatgpt aprenda com seus dados e não extrapole as respostas para temas, contextos ou produtos externos de outras empresas que poderiam gerar ruído na sua conversação.</p>



<p>LangChain é um framework para desenvolvimento de aplicativos alimentados por modelos de linguagem. Acreditamos que os aplicativos mais poderosos e diferenciados não apenas utilizarão um modelo de linguagem, mas também serão: </p>



<ul class="wp-block-list">
<li>Conscientes dos dados: conectar um modelo de linguagem a outras fontes de dados</li>



<li>Agentes: permitir que um modelo de linguagem interaja com seu ambiente</li>
</ul>



<p>O framework LangChain é projetado com base nesses princípios. </p>



<h2 class="wp-block-heading">Referências e recomendações de leitura:</h2>



<ul class="wp-block-list">
<li><a href="https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/" target="_blank" rel="noreferrer noopener">https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/</a></li>



<li><a href="https://community.openai.com/t/cheat-sheet-mastering-temperature-and-top-p-in-chatgpt-api-a-few-tips-and-tricks-on-controlling-the-creativity-deterministic-output-of-prompt-responses/172683" target="_blank" rel="noreferrer noopener">https://community.openai.com/t/cheat-sheet-mastering-temperature-and-top-p-in-chatgpt-api-a-few-tips-and-tricks-on-controlling-the-creativity-deterministic-output-of-prompt-responses/172683</a></li>



<li><a href="https://www.deeplearning.ai" target="_blank" rel="noreferrer noopener">https://www.deeplearning.ai</a></li>



<li>Projeto de serviço de consultas médicas: <a href="https://www.linkedin.com/in/isaacsilva98/" target="_blank" rel="noreferrer noopener">https://www.linkedin.com/in/isaacsilva98/</a></li>



<li><a href="https://python.langchain.com/en/latest/index.html" target="_blank" rel="noreferrer noopener">https://python.langchain.com/en/latest/index.html</a></li>



<li><a href="https://www.datascienceacademy.com.br/" target="_blank" rel="noreferrer noopener">https://www.datascienceacademy.com.br/</a></li>
</ul>
<p>O post <a href="https://datauniverse.com.br/criando-um-chatbot-automatizado-para-retirada-de-pedidos-com-api-do-chatgpt-3-5-turbo-em-python/">Criando um chatbot automatizado para retirada de pedidos com API do Chatgpt 3.5 turbo em Python</a> apareceu primeiro em <a href="https://datauniverse.com.br">Data Universe</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://datauniverse.com.br/criando-um-chatbot-automatizado-para-retirada-de-pedidos-com-api-do-chatgpt-3-5-turbo-em-python/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
