{"id":17027,"date":"2025-04-10T08:08:45","date_gmt":"2025-04-10T15:08:45","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17027"},"modified":"2025-06-13T16:36:10","modified_gmt":"2025-06-13T23:36:10","slug":"self-hosted-ai-chatbot-docker-couchbase-capella","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/self-hosted-ai-chatbot-docker-couchbase-capella\/","title":{"rendered":"Chatbots de IA auto-hospedados com Docker e Couchbase Capella"},"content":{"rendered":"<p>Os chatbots com IA se tornaram uma ferramenta essencial para empresas e organiza\u00e7\u00f5es. Mas a maioria das solu\u00e7\u00f5es de chatbot depende de modelos baseados em nuvem que introduzem lat\u00eancia, limita\u00e7\u00f5es de API e, talvez o mais importante, preocupa\u00e7\u00f5es com a privacidade. E se voc\u00ea pudesse executar um chatbot de IA inteiramente em sua m\u00e1quina e ainda manter o hist\u00f3rico de conversas com uma plataforma de dados com todos os recursos?<\/p>\n<p>Nesta postagem, vamos configurar um chatbot de IA auto-hospedado usando o Docker Model Runner, um novo recurso do Docker que permite executar modelos em cont\u00eaineres localmente para infer\u00eancia e muito mais, e o Couchbase Capella para armazenar, recuperar e pesquisar conversas. O resultado \u00e9 um chatbot r\u00e1pido, privado e flex\u00edvel que voc\u00ea controla.<\/p>\n<p>Pronto para come\u00e7ar? Vamos l\u00e1!<\/p>\n<h2>Configura\u00e7\u00e3o do Docker Model Runner<\/h2>\n<p>Primeiro, vamos garantir que sua vers\u00e3o do Docker Desktop e da CLI esteja atualizada para que voc\u00ea tenha o recurso Model Runner dispon\u00edvel. Para fazer isso, execute <code>Status do modelo da janela de encaixe<\/code> em seu terminal. Se for bem-sucedido, voc\u00ea ver\u00e1 uma mensagem de sucesso que diz <code>O Docker Model Runner est\u00e1 em execu\u00e7\u00e3o<\/code>. Se n\u00e3o tiver, voc\u00ea precisar\u00e1 primeiro obter a vers\u00e3o mais recente do Docker e instal\u00e1-la. Depois de atualizar o Docker, voc\u00ea pode executar esse comando novamente e ele dever\u00e1 funcionar.<\/p>\n<p>Depois de fazer isso, voc\u00ea usar\u00e1 o Docker Model Runner para extrair a imagem do cont\u00eainer com o modelo Llama 3.2 e disponibiliz\u00e1-la localmente:<\/p>\n<p style=\"padding-left: 40px;\"><code>docker model pull ai\/llama3.3<\/code>\n<\/p>\n<p>Voc\u00ea pode verificar se o download do modelo Llama 3.2 foi bem-sucedido executando <code>lista de modelos da plataforma<\/code> e voc\u00ea ver\u00e1 o modelo dispon\u00edvel para uso:<\/p>\n<p style=\"padding-left: 40px;\"><code>{\"object\":\"list\",\"data\":[{\"id\":\"ai\/llama3.3\",\"object\":\"model\",\"created\":1741794281,\"owned_by\":\"docker\"}]}<\/code>\n<\/p>\n<p>Quer test\u00e1-lo? Abrir o modelo no modo interativo \u00e9 muito f\u00e1cil! Basta executar <code>execu\u00e7\u00e3o do modelo da plataforma ai\/llama3.3<\/code> na linha de comando e voc\u00ea entrar\u00e1 no modo interativo:<\/p>\n<p style=\"padding-left: 40px;\">\n<code>Modo de bate-papo interativo iniciado. Digite '\/bye' para sair.<br \/>\n<\/code><code>&gt;<\/code><\/p>\n<p>Agora que voc\u00ea fez o download do Llama 3.2 e est\u00e1 pronto para us\u00e1-lo, \u00e9 hora de criar um aplicativo de back-end simples que aproveite o modelo para um chatbot de IA auto-hospedado.<\/p>\n<h2>Cria\u00e7\u00e3o do chatbot<\/h2>\n<p>O aplicativo que voc\u00ea criar\u00e1 realizar\u00e1 as seguintes tarefas:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li >Execute o Llama 3.2 localmente por meio do aplicativo <code>execu\u00e7\u00e3o do modelo da plataforma<\/code>\u00a0Comando da CLI<\/li>\n<li >Enviar mensagens do usu\u00e1rio como prompts para o modelo<\/li>\n<li >Armazenar o hist\u00f3rico de bate-papo no Couchbase Capella<\/li>\n<li >Recuperar bate-papos anteriores<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Seu aplicativo ter\u00e1 todos os recursos e estar\u00e1 pronto para ser usado imediatamente a partir do seu console como um robusto chatbot alimentado por IA. O c\u00f3digo que criamos juntos aqui fornecer\u00e1 a base para refator\u00e1-lo de acordo com as necessidades que voc\u00ea tiver. Talvez voc\u00ea queira transform\u00e1-lo em um backend para um aplicativo da Web. Algumas modifica\u00e7\u00f5es ser\u00e3o tudo o que \u00e9 necess\u00e1rio para tornar isso poss\u00edvel.<\/p>\n<p>O aplicativo requer algumas depend\u00eancias, portanto, no diret\u00f3rio do projeto, execute <code>npm install couchbase readline-sync<\/code>. Usamos o SDK do Couchbase Node.js para interagir com nosso armazenamento de dados do Couchbase Capella, e usamos <code>sincroniza\u00e7\u00e3o de linha de leitura<\/code> para que o aplicativo interaja com o usu\u00e1rio a partir do terminal.<\/p>\n<p>Certifique-se de ter configurado um bucket no Capella para armazenar os dados do bate-papo e de ter suas credenciais do Capella em m\u00e3os. Como sempre, n\u00e3o salve suas credenciais em nenhum controle de vers\u00e3o. Use vari\u00e1veis de ambiente para o desenvolvimento local para manter suas credenciais seguras e n\u00e3o em m\u00e3os p\u00fablicas.\u00a0<\/p>\n<p>Estamos criando quatro fun\u00e7\u00f5es em nosso aplicativo:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li ><code>askAI<\/code> para encapsular o processo de alimenta\u00e7\u00e3o da mensagem ao nosso modelo de IA executado localmente<\/li>\n<li ><code>lojaChat<\/code> para enviar o hist\u00f3rico do bate-papo para a Capella<\/li>\n<li ><code>fetchChatHistory<\/code> para recuperar chats de bate-papo<\/li>\n<li ><code>principal<\/code> para atuar como a interface principal do aplicativo<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Vamos come\u00e7ar com o <code>principal<\/code> que envolver\u00e1 todo o resto. Essa fun\u00e7\u00e3o criar\u00e1 um loop do qual o usu\u00e1rio poder\u00e1 sair a qualquer momento, oferecendo uma experi\u00eancia de bate-papo cont\u00ednua:<\/p>\n<pre class=\"nums:false lang:default decode:true\">async function main() {\r\n\u00a0const { cluster, collection } = await connectToCouchbase();\r\n\r\n\u00a0\u00a0console.log(\"Self-Hosted AI Chatbot (Llama 3.2 + Capella)\");\r\n\u00a0\u00a0console.log(\"Type your message below. Type 'history' to view past chats or 'exit' to quit.\\n\");\r\n\r\n\u00a0\u00a0while (true) {\r\n\u00a0\u00a0\u00a0\u00a0const userMessage = readlineSync.question(\"&gt; \");\r\n\r\n\u00a0\u00a0\u00a0\u00a0if (userMessage.toLowerCase() === \"exit\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(\"Goodbye!\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0if (userMessage.toLowerCase() === \"history\") {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const history = await fetchChatHistory(cluster);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(\"\\n\ud83d\udcdc Chat History:\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0history.forEach((chat) =&gt; {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`\ud83e\uddd1 ${chat.user}\\n\ud83e\udd16 ${chat.response}\\n`);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0continue;\r\n\u00a0\u00a0\u00a0\u00a0}\r\n\r\n\u00a0\u00a0\u00a0\u00a0console.log(\"\ud83e\udd16 Thinking...\");\r\n\u00a0\u00a0\u00a0\u00a0const aiResponse = await askAI(userMessage);\r\n\u00a0\u00a0\u00a0\u00a0console.log(`\ud83e\udd16 ${aiResponse}\\n`);\r\n\r\n\u00a0\u00a0\u00a0\u00a0await storeChat(collection, userMessage, aiResponse);\r\n\u00a0\u00a0}\r\n}<\/pre>\n<p>Como voc\u00ea pode ver, introduzimos uma funcionalidade constru\u00edda sobre o armazenamento de dados do Capella, ou seja, a capacidade de recuperar o hist\u00f3rico de bate-papo anterior dentro do pr\u00f3prio bate-papo. Isso pode ser \u00fatil para que um usu\u00e1rio recupere o contexto do bate-papo sempre que iniciar uma nova sess\u00e3o.<\/p>\n<p>Agora que temos o <code>principal<\/code> vamos criar as fun\u00e7\u00f5es de suporte que ela invoca, come\u00e7ando com a fun\u00e7\u00e3o <code>askAI<\/code> fun\u00e7\u00e3o:<\/p>\n<pre class=\"nums:false lang:default decode:true\">fun\u00e7\u00e3o ass\u00edncrona askAI(prompt) {\r\n  return new Promise((resolve, reject) =&gt; {\r\n    exec(\r\n      `docker model run ai\/llama3.3 \"${prompt}\"`,\r\n      (error, stdout, stderr) =&gt; {\r\n        if (error) {\r\n          console.error(`Erro ao executar o modelo: ${error.message}`);\r\n          reject(error);\r\n        }\r\n        if (stderr) {\r\n         console.error(`Docker stderr: ${stderr}`);\r\n        }\r\n        resolve(stdout.trim()); \/\/ Retorna a resposta do IA\r\n      }\r\n    );\r\n  });\r\n}<\/pre>\n<p>Em seguida, o <code>lojaChat<\/code> fun\u00e7\u00e3o:<\/p>\n<pre class=\"nums:false lang:default decode:true\">fun\u00e7\u00e3o ass\u00edncrona storeChat(collection, userMessage, aiResponse) {\r\n  const chatDoc = {\r\n    user: userMessage,\r\n    response: aiResponse,\r\n    timestamp: new Date().toISOString(),\r\n  };\r\n\r\n  await collection.upsert(`chat_${Date.now()}`, chatDoc);\r\n}<\/pre>\n<p>Por fim, o <code>fetchChatHistory<\/code> fun\u00e7\u00e3o:<\/p>\n<pre class=\"nums:false lang:default decode:true\">async function fetchChatHistory(cluster, limit = 5) {\r\n\u00a0\u00a0const query = `\r\n\u00a0\u00a0\u00a0\u00a0SELECT user, response, timestamp FROM \\`chatbot\\`\r\n\u00a0\u00a0\u00a0\u00a0ORDER BY timestamp DESC\r\n\u00a0\u00a0\u00a0\u00a0LIMIT ${limit};\r\n\u00a0\u00a0`;\r\n\u00a0\u00a0const result = await cluster.query(query);\r\n\u00a0\u00a0return result.rows;\r\n}<\/pre>\n<p>Quando terminar de usar as fun\u00e7\u00f5es, certifique-se de adicionar <code>exigir<\/code> na parte superior do arquivo e para criar uma conex\u00e3o com o cluster do Couchbase Capella:<\/p>\n<pre class=\"nums:false lang:default decode:true\">const { exec } = require(\"child_process\");\r\nconst readlineSync = require(\"readline-sync\");\r\nconst couchbase = require(\"couchbase\");\r\nrequire(\"dotenv\").config();\r\n\r\nfun\u00e7\u00e3o async connectToCouchbase() {\r\n  try {\r\n    const cluster = await couchbase.connect(COUCHBASE_URL, {\r\n      nome de usu\u00e1rio: COUCHBASE_USERNAME,\r\n      senha: COUCHBASE_PASSWORD,\r\n    });\r\n    const bucket = cluster.bucket(\"chatbot\");\r\n    const collection = bucket.defaultCollection();\r\n    console.log(\"Conectado ao Couchbase Capella\");\r\n    return { cluster, collection };\r\n  } catch (err) {\r\n    console.error(\"Falha ao conectar-se ao Couchbase:\", err);\r\n    process.exit(1);\r\n  }\r\n}<\/pre>\n<p>Por fim, n\u00e3o se esque\u00e7a de adicionar uma linha no final do script que chame a fun\u00e7\u00e3o <code>principal<\/code> inserindo a fun\u00e7\u00e3o <code>principal();<\/code> na \u00faltima linha.<\/p>\n<p>Quando terminar, voc\u00ea ter\u00e1 um chatbot de IA totalmente pronto, hospedado em sua pr\u00f3pria m\u00e1quina, mantendo sua privacidade e, ao mesmo tempo, aproveitando o Capella para armazenamento e recupera\u00e7\u00e3o.<\/p>\n<h2>Usando seu chatbot de IA auto-hospedado<br \/>\n<\/h2>\n<p>Seu pr\u00f3prio chatbot est\u00e1 pronto para ser usado! Toda consulta que voc\u00ea enviar ser\u00e1 processada apenas localmente em sua m\u00e1quina usando o modelo Llama 3.2. Nada ser\u00e1 enviado a nenhum provedor de IA remotamente.<\/p>\n<p>Se voc\u00ea estiver pronto para experiment\u00e1-lo, execute o seguinte:<\/p>\n<p style=\"padding-left: 40px;\">\n<code>node index.js # ou o nome que voc\u00ea deu ao seu arquivo<\/code>\n<\/p>\n<p>Depois de execut\u00e1-lo, voc\u00ea ver\u00e1 o seguinte:<\/p>\n<p style=\"padding-left: 40px;\">\n<code>Conectado ao Couchbase Capella<\/code><\/p>\n<p style=\"padding-left: 40px;\"><code>Chatbot de IA auto-hospedado (Llama 3.2 + Capella)<\/code><\/p>\n<p style=\"padding-left: 40px;\"><code>Digite sua mensagem abaixo. Digite \"history\" para ver os bate-papos anteriores ou \"exit\" para sair.<\/code><\/p>\n<p style=\"padding-left: 40px;\"><code>&gt;<\/code>\n<\/p>\n<p>V\u00e1 em frente e comece a fazer perguntas e a interagir com ele. Aqui est\u00e1 um breve exemplo do que voc\u00ea pode esperar ver:<\/p>\n<pre class=\"nums:false lang:default decode:true\">Connected to Couchbase Capella\r\n\r\n\ud83d\ude80 Self-Hosted AI Chatbot (Llama 3.2 + Capella)\r\nType your message below. Type 'history' to view past chats or 'exit' to quit.\r\n\r\n&gt; Should I pack a raincoat for Barcelona for a trip there at the end of March? Answer only with \"yes\" or \"no\".\r\n\ud83e\udd16 Thinking...\r\n\ud83e\udd16 Yes.\r\n\r\n&gt; Tell me why I should pack a raincoat for Barcelona at the end of March. Limit your answer to 15 words or less.\r\n\ud83e\udd16 Thinking...\r\n\ud83e\udd16 You may need a raincoat as March weather in Barcelona can be unpredictable and rainy, up to 10C.\r\n\r\n&gt; exit\r\n\ud83d\udc4b Goodbye!<\/pre>\n<p>Ao usar a escalabilidade e a seguran\u00e7a do Couchbase Capella junto com a abordagem de privacidade do Docker Model Runner para executar modelos de IA localmente, voc\u00ea pode criar aplicativos din\u00e2micos de IA que priorizam a privacidade do usu\u00e1rio. A execu\u00e7\u00e3o de modelos em sua pr\u00f3pria m\u00e1quina tamb\u00e9m oferece infer\u00eancia mais r\u00e1pida, controle total sobre a personaliza\u00e7\u00e3o de prompts, a capacidade de armazenar metadados adicionais e a flexibilidade para ajustar o comportamento do seu chatbot, tudo em seu pr\u00f3prio ambiente.<\/p>\n<p>Essa combina\u00e7\u00e3o do Capella e do Docker Model Runner oferece velocidade, controle e a privacidade necess\u00e1ria para criar aplicativos de IA sem depender de APIs externas. Seja para criar um chatbot, analisar dados ou executar fluxos de trabalho com tecnologia de IA, essa configura\u00e7\u00e3o garante que tudo o que voc\u00ea criar ser\u00e1 eficiente, dimension\u00e1vel e totalmente sob seu controle. <\/p>\n<p>A \u00fanica pergunta \u00e9: o que voc\u00ea vai construir?<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/community\/\">Conecte-se com nossa comunidade de desenvolvedores<\/a> e mostre-nos o que voc\u00ea est\u00e1 construindo!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><br style=\"font-weight: 400;\" \/><br style=\"font-weight: 400;\" \/><\/p>","protected":false},"excerpt":{"rendered":"<p>AI chatbots have become an essential tool for businesses and organizations. But most chatbot solutions depend on cloud-based models that introduce latency, API limitations, and perhaps most importantly, privacy concerns. What if you could run an AI chatbot entirely on [&hellip;]<\/p>","protected":false},"author":85356,"featured_media":17028,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[10123,10122,1815,9973],"tags":[9974],"ppma_author":[9985],"class_list":["post-17027","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agentic-ai-apps","category-artificial-intelligence-ai","category-best-practices-and-tutorials","category-generative-ai-genai","tag-genai"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Self-Hosted AI Chatbots with Docker and Couchbase Capella - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Build a private, self-hosted AI chatbot using Docker Model Runner &amp; Couchbase Capella. Fast, flexible, and fully under your control\u2014no external APIs needed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/self-hosted-ai-chatbot-docker-couchbase-capella\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Self-Hosted AI Chatbots with Docker and Couchbase Capella\" \/>\n<meta property=\"og:description\" content=\"Build a private, self-hosted AI chatbot using Docker Model Runner &amp; Couchbase Capella. Fast, flexible, and fully under your control\u2014no external APIs needed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/self-hosted-ai-chatbot-docker-couchbase-capella\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-10T15:08:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-13T23:36:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ben Greenberg, Senior Developer Evangelist\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ben Greenberg, Senior Developer Evangelist\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/\"},\"author\":{\"name\":\"Ben Greenberg, Senior Developer Evangelist\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d\"},\"headline\":\"Self-Hosted AI Chatbots with Docker and Couchbase Capella\",\"datePublished\":\"2025-04-10T15:08:45+00:00\",\"dateModified\":\"2025-06-13T23:36:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/\"},\"wordCount\":954,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg\",\"keywords\":[\"GenAI\"],\"articleSection\":[\"Agentic AI Applications\",\"Artificial Intelligence (AI)\",\"Best Practices and Tutorials\",\"Generative AI (GenAI)\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/\",\"name\":\"Self-Hosted AI Chatbots with Docker and Couchbase Capella - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg\",\"datePublished\":\"2025-04-10T15:08:45+00:00\",\"dateModified\":\"2025-06-13T23:36:10+00:00\",\"description\":\"Build a private, self-hosted AI chatbot using Docker Model Runner & Couchbase Capella. Fast, flexible, and fully under your control\u2014no external APIs needed.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-Hosted AI Chatbots with Docker and Couchbase Capella\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d\",\"name\":\"Ben Greenberg, Senior Developer Evangelist\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/c9bda12524045d12a5878a2ef3fbe0de\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg\",\"caption\":\"Ben Greenberg, Senior Developer Evangelist\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/bengreenberg\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Self-Hosted AI Chatbots with Docker and Couchbase Capella - The Couchbase Blog","description":"Crie um chatbot de IA privado e auto-hospedado usando o Docker Model Runner e o Couchbase Capella. R\u00e1pido, flex\u00edvel e totalmente sob seu controle, sem necessidade de APIs externas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/self-hosted-ai-chatbot-docker-couchbase-capella\/","og_locale":"pt_BR","og_type":"article","og_title":"Self-Hosted AI Chatbots with Docker and Couchbase Capella","og_description":"Build a private, self-hosted AI chatbot using Docker Model Runner & Couchbase Capella. Fast, flexible, and fully under your control\u2014no external APIs needed.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/self-hosted-ai-chatbot-docker-couchbase-capella\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-04-10T15:08:45+00:00","article_modified_time":"2025-06-13T23:36:10+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg","type":"image\/jpeg"}],"author":"Ben Greenberg, Senior Developer Evangelist","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Greenberg, Senior Developer Evangelist","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/"},"author":{"name":"Ben Greenberg, Senior Developer Evangelist","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d"},"headline":"Self-Hosted AI Chatbots with Docker and Couchbase Capella","datePublished":"2025-04-10T15:08:45+00:00","dateModified":"2025-06-13T23:36:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/"},"wordCount":954,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg","keywords":["GenAI"],"articleSection":["Agentic AI Applications","Artificial Intelligence (AI)","Best Practices and Tutorials","Generative AI (GenAI)"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/","url":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/","name":"Self-Hosted AI Chatbots with Docker and Couchbase Capella - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg","datePublished":"2025-04-10T15:08:45+00:00","dateModified":"2025-06-13T23:36:10+00:00","description":"Crie um chatbot de IA privado e auto-hospedado usando o Docker Model Runner e o Couchbase Capella. R\u00e1pido, flex\u00edvel e totalmente sob seu controle, sem necessidade de APIs externas.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/04\/blog-ai-agent-development.jpg","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/self-hosted-ai-chatbot-docker-couchbase-capella\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Self-Hosted AI Chatbots with Docker and Couchbase Capella"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d","name":"Ben Greenberg, desenvolvedor s\u00eanior evangelista","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/c9bda12524045d12a5878a2ef3fbe0de","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","caption":"Ben Greenberg, Senior Developer Evangelist"},"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/bengreenberg\/"}]}},"authors":[{"term_id":9985,"user_id":85356,"is_guest":0,"slug":"bengreenberg","display_name":"Ben Greenberg, Senior Developer Evangelist","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg"},"author_category":"","last_name":"Greenberg, Senior Developer Evangelist","first_name":"Ben","job_title":"Senior Developer Evangelist","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/17027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/85356"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=17027"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/17027\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/17028"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=17027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=17027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=17027"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=17027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}