{"id":533,"date":"2024-02-12T14:24:44","date_gmt":"2024-02-12T17:24:44","guid":{"rendered":"https:\/\/portal7ia.com.br\/?p=533"},"modified":"2024-02-15T16:09:00","modified_gmt":"2024-02-15T19:09:00","slug":"tutorial-langchainpython-parte-01","status":"publish","type":"post","link":"https:\/\/portal7ia.com.br\/index.php\/2024\/02\/12\/tutorial-langchainpython-parte-01\/","title":{"rendered":"Tutorial LangChain(Python) &#8211; Parte 01"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nesse tutorial, vamos ensinar a criar um aplicativo baseado no framework LangChain usando a linguagem Python, que interage com o modelo de linguagem da OpenAI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conseguir criar um aplicativo baseado no framework LangChain que interage com o modelo da OpenAI \u00e9 algo bem interessante e importante nesses tempos de intelig\u00eancia artificial.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>O que voc\u00ea vai precisar, para criar esse aplicativo?<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&nbsp;Uma conta na OpenAI para vc pegar a API KEY. (mas pode usar outra LLM se quiser)<\/li>\n\n\n\n<li>&nbsp;Um editor de c\u00f3digo. Eu vou usar o Microsoft Visual Studio Code.<\/li>\n\n\n\n<li>&nbsp;Vai precisar do Python 3.8 ou mais recente instalado no seu computador.<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">INSTALA\u00c7\u00c3O DE PYTHON NA SUA M\u00c1QUINA<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Caso voc\u00ea n\u00e3o tenha o Python instalado no seu computador, voc\u00ea pode faz\u00ea-lo da seguinte forma:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Digite no google: python download<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Provavelmente, o primeiro link ser\u00e1 o do site do python: <a href=\"https:\/\/www.python.org\/downloads\/\">https:\/\/www.python.org\/downloads\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Procure pela op\u00e7\u00e3o downloads, e selecione o seu sistema operacional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de baixado, procure o arquivo baixado e execute como administrador, clicando com o bot\u00e3o direito e escolhendo a op\u00e7\u00e3o executar como administrador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00f3xima janela, marque a op\u00e7\u00e3o <strong>Add python.exe to PATH<\/strong> e escolha Install Now.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de instalado vai abrir uma janela onde voc\u00ea pode desabilitar a limita\u00e7\u00e3o do PATH, para tanto escolha a op\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Disable path length limit e clique em sim.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pronto, agora que instalamos o Python em nosso computador, vamos come\u00e7ar o nosso programa.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">INICIANDO O NOSSO PROGRAMA LANGCHAIN PYTHON<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">No seu editor de c\u00f3digo:<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Crie uma pasta(diret\u00f3rio) para o seu novo projeto. Ex.: LangChain-APP<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Estando dentro desta pasta, crie um ambiente virtual, digitando o comando abaixo:<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">python -m venv .venv<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Esse c\u00f3digo cria um ambiente virtual e para tanto cria um arquivo chamado <strong>.venv<\/strong>. Pode dar uma olhada na pasta do projeto que voc\u00ea vai ver o novo arquivo criado: .venv.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Agora, precisamos ativar esse ambiente virtual. Fazemos isso atrav\u00e9s do comando:<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">.venv\/Scripts\/Activate.ps1<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de criado e ativado o ambiente virtual, no in\u00edcio da linha de comando voc\u00ea pode observar a nota\u00e7\u00e3o (.venv) indicando que o ambiente virtual est\u00e1 ativo.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Agora, vamos instalar os pacotes da langchain que vamos precisar, usando pip que \u00e9 o gerenciador de pacotes python:<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">pip install langchain openai streamlit python-dotenv&nbsp; [enter]<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, vamos precisar desses 4 pacotes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O pacote <strong>langchain<\/strong> nos permite usar as bibliotecas python do langchain;<\/li>\n\n\n\n<li><strong>openai<\/strong> j\u00e1 que vamos usar a llm da openai;<\/li>\n\n\n\n<li><strong>streamlit<\/strong> nos permite criar interfaces para python apps;<\/li>\n\n\n\n<li><strong>python-dotenv<\/strong> nos permite usar dotenv arquivos onde vamos colocar as API Key que vamos usar no nosso ambiente.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de um tempo, todos os pacotes devem estar baixados no seu computador.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Agora, vamos criar o nosso main.py arquivo, clicando no respectivo \u00edcone de cria\u00e7\u00e3o de arquivos no seu editor de c\u00f3digo.<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Ent\u00e3o, agora vamos, a partir dos pacotes que baixamos, come\u00e7ar a importar as classes que vamos precisar em nosso programa.<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">from langchain_openai import OpenAI<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, o que n\u00f3s estamos fazendo aqui \u00e9 importando para a nossa aplica\u00e7\u00e3o a classe OpenAI do pacote langchain_openai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode usar tamb\u00e9m LLMs de c\u00f3digo aberto que voc\u00ea pode encontrar em Hugging Face.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Agora, vamos importar o load_dotenv para cuidar das API keys no nosso ambiente.<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">from dotenv import load_dotenv<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de importar, podemos usar em nossa aplica\u00e7\u00e3o com o comando:<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">load_dotenv()<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">Agora, no nosso editor de c\u00f3digo, devemos criar um arquivo chamado .env. Para isso, clique no \u00edcone de cria\u00e7\u00e3o de arquivo do seu editor de c\u00f3digo e digite como nome do seu arquivo: .env (ponto env)<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, voc\u00ea precisa ir no site da OpenAI e obter a sua API KEY.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Nesse arquivo(.env), vamos colocar a OpenAI API Key, da seguinte forma:<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">OPENAI_API_KEY=\u201dsk-xxxxxxxx\u201d<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Naturalmente, no lugar de sk-xxxxxxxx voc\u00ea coloca a sua API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso vai permitir que a sua API Key fique separada do c\u00f3digo da aplica\u00e7\u00e3o. Isso \u00e9 uma pr\u00e1tica recomendada. \u00c9 mais seguro e mais elegante tamb\u00e9m.:) As mulheres sempre v\u00e3o preferir a forma mais elegante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, finalmente, vamos come\u00e7ar de fato a escrever a nossa aplica\u00e7\u00e3o!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos come\u00e7ar definindo a nossa primeira fun\u00e7\u00e3o em Python, e imprimindo o resultado no terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00f3s vamos criar um simples aplicativo que gera sugest\u00f5es de nomes para pets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para tanto, digitamos o seguinte c\u00f3digo no seu editor:(lembre-se que estamos no arquivo main.py)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def <strong>generate_pet_name<\/strong>():\n    llm = <strong>OpenAI<\/strong>(temperature=0.7)\n\n    name = <strong>llm<\/strong>(\u201cPlease, give me 5 suggestions for dog names\u201d)\n    return name\n\nif __name__ == \u201c__main__\u201d\n    print(<strong>generate_pet_name()<\/strong>)<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Explicando o c\u00f3digo acima<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Na primeira linha: def generat_pet_name(): estamos definindo(def) a fun\u00e7\u00e3o que demos o nome de generate_pet_name().<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, em Python, se define uma fun\u00e7\u00e3o com a express\u00e3o def seguido do nome da fun\u00e7\u00e3o seguida de par\u00eanteses(), seguido de dois pontos(:). Assim: <\/p>\n\n\n\n<h6 class=\"wp-block-heading\">def generate_pet_name():<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Logo ap\u00f3s essa defini\u00e7\u00e3o da fun\u00e7\u00e3o, logo na pr\u00f3xima linha, sem linhas em branco, indentada por um tab, inicia-se a defini\u00e7\u00e3o da fun\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste caso, iniciamos com: <\/p>\n\n\n\n<h6 class=\"wp-block-heading\">llm = OpenAI(temperature=0.7)<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&nbsp;llm<\/strong> \u00e9 uma vari\u00e1vel que armazena uma inst\u00e2ncia da classe OpenAI do framework LangChain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&nbsp;OpenAI<\/strong> \u00e9 uma classe que representa o modelo de linguagem grande (LLM) da OpenAI, como o GPT-3.5.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>temperature=0.7<\/strong> \u00e9 um argumento ou par\u00e2metro da fun\u00e7\u00e3o que define a &#8220;temperatura&#8221; do LLM. Valores mais baixos geram respostas mais conservadoras e precisas, enquanto valores mais altos geram respostas mais criativas e inovadoras, mas com maior risco de erros. Esses valores podem variar de 0 a 1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, essa linha de c\u00f3digos cria um objeto(llm), que \u00e9 uma inst\u00e2ncia da class OpenAI, que fica respons\u00e1vel por se comunicar com o LLM da OpenAI. Esse objeto envia os prompts, aguarda a resposta e recebe e repassa a resposta vinda do LLM. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na pr\u00f3xima linha, usamos o objeto llm para enviar o prompt &#8220;Please, give me 5 suggestions for dog names&#8221; para o LLM e receber a resposta e guardar esse resposta na vari\u00e1vel chamada <strong>name<\/strong>.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">name = llm(\u201cPlease, give me 5 suggestions for dog names\u201d)<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Concluindo a fun\u00e7\u00e3o em quest\u00e3o, retorna-se a resposta da LLM, atrav\u00e9s do comando:<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">return nome<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">A pr\u00f3xima linha de c\u00f3digo, abaixo, \u00e9 para que esse script seja executado somente quando executado diretamente e portanto que n\u00e3o seja executado quando importado como um m\u00f3dulo por outro script.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">if __name__ == \u201c__main__\u201d<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">A \u00faltima linha de c\u00f3digo, abaixo, inicia a fun\u00e7\u00e3o generate_pet_name() e imprime o resultado na tela do dispositivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pronto, essa \u00e9 a explica\u00e7\u00e3o de cada linha do nosso programa, baseado no framework LangChain Python.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Agora \u00e9 s\u00f3 executar esse programa, para isso, vamos digitar no nosso terminal:<\/h6>\n\n\n\n<h6 class=\"wp-block-heading\">python main.py<\/h6>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea deve receber a resposta da LLM com as 5 sugest\u00f5es de nomes para o seu pet!!!.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, nesse primeiro aplicativo foi mostrado um dos mais fundamentais componentes do framework LangChain que foi o <strong>OpenAI<\/strong>, que serve para interagir com os modelos da OpenAI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nos pr\u00f3ximos tutoriais, iremos acrescentando funcionalidades ao nosso aplicativo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nesse tutorial, vamos ensinar a criar um aplicativo baseado no framework LangChain usando a linguagem Python, que interage com o modelo de linguagem da OpenAI. Conseguir criar um aplicativo baseado no framework LangChain que interage com o modelo da OpenAI \u00e9 algo bem interessante e importante nesses tempos de intelig\u00eancia artificial. O que voc\u00ea vai [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":542,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,16,53,17],"tags":[],"class_list":["post-533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-ferramentas-ia","category-how-to","category-linguagens-de-programacao"],"blocksy_meta":[],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=533"}],"version-history":[{"count":11,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/533\/revisions"}],"predecessor-version":[{"id":577,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/533\/revisions\/577"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/media\/542"}],"wp:attachment":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}