{"id":606,"date":"2024-02-15T09:15:50","date_gmt":"2024-02-15T12:15:50","guid":{"rendered":"https:\/\/portal7ia.com.br\/?p=606"},"modified":"2024-02-15T13:38:14","modified_gmt":"2024-02-15T16:38:14","slug":"tutorial-langchainpython-parte-04","status":"publish","type":"post","link":"https:\/\/portal7ia.com.br\/index.php\/2024\/02\/15\/tutorial-langchainpython-parte-04\/","title":{"rendered":"Tutorial LangChain(Python) &#8211; Parte 04"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Agora, vamos aprender sobre agentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A ideia central dos agentes \u00e9 utilizar um modelo de linguagem para escolher uma sequ\u00eancia de a\u00e7\u00f5es a serem tomadas. Em chains, uma sequ\u00eancia de a\u00e7\u00f5es \u00e9 codificada diretamente (no c\u00f3digo). Nos agentes, um modelo de linguagem \u00e9 usado como um mecanismo de racioc\u00ednio para determinar quais a\u00e7\u00f5es tomar e em que ordem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ferramentas(tools) s\u00e3o as fun\u00e7\u00f5es que um agente pode chamar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, para criarmos o nosso primeiro agente, vamos usar o nosso web app de gera\u00e7\u00e3o de nomes para pets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos at\u00e9 o arquivo langchain_helper.py e vamos importar algumas classes que vamos precisar para implementar o agente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from langchain.agents import load_tools\nfrom langchain.agents import initialize_agent\nfrom langchain.agents import AgentType<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos precisar tamb\u00e9m instalar alguns pacotes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install wikipedia\npip install numexpr<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos ent\u00e3o criar o agente, para tanto, vamos criar uma nova fun\u00e7\u00e3o, conforme abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def langchain_agent():\n    llm=OpenAI(temperature=0.5)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Conforme o c\u00f3digo acima, vamos continuar usando a classe OpenAI, na cria\u00e7\u00e3o do objeto llm.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos fazer o load das ferramentas(tools) que vamos precisar, usando o script abaixo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tools = load_tools(&#91;\"wikipedia\", \"llm-math\"], llm=llm)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos fazer a inicializa\u00e7\u00e3o do agente usando o seguinte script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>   agent = initialize_agent(\r\n        tools, \r\n        llm, \r\n        agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, \r\n        verbose=True\r\n    )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para executar(run) o agente usamos o seguinte script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> result = agent.run(\r\n        \"What is the average age of a dog? Multiply the age by 3\"\r\n    )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos ent\u00e3o, imprimir na tela o resultado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(result)\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Precisamos agora, chamar(call) a fun\u00e7\u00e3o que acabamo de criar da seguinte forma:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if __name__ == \"__main__\":\r\n   <s> #print(generate_pet_name(\"Dog\", \"black\"))<\/s>\r\n    langchain_agent()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, vamos executar o script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python langchain_helper.py <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">E funciona! O nosso agente est\u00e1 funcionando! Olha a resposta que ele nos deu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>> Entering new AgentExecutor chain...\r\n I should use the calculator to multiply the average age by 3\r\nAction: Calculator\r\nAction Input: 12 x 3\r\nObservation: Answer: 36\r\nThought: I should use the calculator to divide the average age by 3\r\nAction: Calculator\r\nAction Input: 36 \/ 3\r\nObservation: Answer: 12.0\r\nThought: I now know the final answer\r\nFinal Answer: The average age of a dog is 12 years old.\r\n\r\n> Finished chain.\r\nThe average age of a dog is 12 years old.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Perfeito o agente funciona, mas a LLM n\u00e3o nos deu a resposta correta!:(<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agora, vamos aprender sobre agentes. A ideia central dos agentes \u00e9 utilizar um modelo de linguagem para escolher uma sequ\u00eancia de a\u00e7\u00f5es a serem tomadas. Em chains, uma sequ\u00eancia de a\u00e7\u00f5es \u00e9 codificada diretamente (no c\u00f3digo). Nos agentes, um modelo de linguagem \u00e9 usado como um mecanismo de racioc\u00ednio para determinar quais a\u00e7\u00f5es tomar e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,16,53,17],"tags":[72,73],"class_list":["post-606","post","type-post","status-publish","format-standard","hentry","category-blog","category-ferramentas-ia","category-how-to","category-linguagens-de-programacao","tag-langchain","tag-python"],"blocksy_meta":[],"brizy_media":[],"_links":{"self":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/606","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=606"}],"version-history":[{"count":3,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/606\/revisions"}],"predecessor-version":[{"id":611,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/posts\/606\/revisions\/611"}],"wp:attachment":[{"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portal7ia.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}