Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

"Criando uma ferramenta para extração de dados de um estudante" erro

Pessoal estou rodando o código ensinado na aula 1 "Criando uma ferramenta para extração de dados de um estudante" Dentro do primeiro Módulo do curso LangChain: Desenvolva agentes de inteligência artificial, porém está retornando o erro:

"$ python -u "c:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\main.py" Traceback (most recent call last): File "c:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\main.py", line 36, in resposta = DadosDeEstudante().run(pergunta) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\langchain2\Lib\site-packages\langchain_core\tools.py", line 417, in run raise e File "C:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\langchain2\Lib\site-packages\langchain_core\tools.py", line 413, in run else context.run(self._run, *tool_args, **tool_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\main.py", line 20, in _run llm = ChatOpenAI(model="gpt-4o", ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\sande\Documents\repos\inteligencia_artificial\Alura\langchain-agentes\langchain2\Lib\site-packages\pydantic\v1\main.py", line 341, in init raise validation_error pydantic.v1.error_wrappers.ValidationError: 1 validation error for ChatOpenAI root Client.init() got an unexpected keyword argument 'proxies' (type=type_error)"

Alguém consegue me ajudar por favor?

Segue o código:

from langchain.prompts import PromptTemplate
from langchain_core.pydantic_v1 import Field, BaseModel
from langchain_core.output_parsers import JsonOutputParser
from langchain_openai import ChatOpenAI
from langchain.tools import BaseTool
import os
import pandas as pd
from dotenv import load_dotenv  

load_dotenv()

class ExtratorDeEstudante(BaseModel):
    estudante:str = Field("Nome do estudante informado, sempre em letras minúsculas. Exemplo: joão, carlos, joana, carla.")

class DadosDeEstudante(BaseTool):
    name = "DadosDeEstudante"
    description = """Esta ferramenta extrai o histórico e preferências de um estudante de acordo com seu histórico."""

    def _run(self, input: str) -> str:
        llm = ChatOpenAI(model="gpt-4o",
                         openai_api_key=os.getenv("OPENAI_API_KEY"))
        parser = JsonOutputParser(pydantic_object=ExtratorDeEstudante)
        template = PromptTemplate(template="""Você deve analisar a {input} e extrair o nome de usuário informado.
                        Formato de saída:
                        {formato_saida}""",
                        input_variables=["input"],
                        partial_variables={"formato_saida" : parser.get_format_instructions()})
        cadeia = template | llm | parser
        resposta = cadeia.invoke({"input" : input})
        print(resposta)
        return resposta['estudante']
        


pergunta = "Quais os dados da Ana?"
resposta = DadosDeEstudante().run(pergunta) 
print(resposta)``
3 respostas
solução!

Parece que o erro que você está enfrentando está relacionado a um argumento inesperado proxies na inicialização do ChatOpenAI. Isso pode acontecer se a versão da biblioteca que você está usando não suporta esse argumento ou se há algum conflito entre as versões das bibliotecas.

Aqui estão algumas etapas que você pode seguir para tentar resolver o problema:

Verifique a versão da biblioteca: Certifique-se de que você está usando a versão correta da biblioteca langchain e langchain_openai. Você pode verificar a versão instalada com o seguinte comando:

bash

pip show langchain langchain_openai

Atualize as bibliotecas: Se as bibliotecas estiverem desatualizadas, você pode tentar atualizá-las:

bash

pip install --upgrade langchain langchain_openai

Remova o argumento proxies: Se o argumento proxies não for necessário, você pode tentar removê-lo da inicialização do ChatOpenAI. O código ficaria assim:

llm = ChatOpenAI(model="gpt-4", openai_api_key=os.getenv("OPENAI_API_KEY"))

Verifique o arquivo .env: Certifique-se de que o arquivo .env está corretamente configurado e contém a chave da API da OpenAI:

OPENAI_API_KEY=sua_chave_aqui

Teste com um modelo diferente: Se o problema persistir, você pode tentar usar um modelo diferente, como gpt-3.5-turbo, para ver se o erro persiste:

llm = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key=os.getenv("OPENAI_API_KEY"))

Aqui está o código ajustado sem o argumento proxies:

from langchain.prompts import PromptTemplate from langchain_core.pydantic_v1 import Field, BaseModel from langchain_core.output_parsers import JsonOutputParser from langchain_openai import ChatOpenAI from langchain.tools import BaseTool import os from dotenv import load_dotenv load_dotenv() class ExtratorDeEstudante(BaseModel): estudante:str = Field("Nome do estudante informado, sempre em letras minúsculas. Exemplo: joão, carlos, joana, carla.") class DadosDeEstudante(BaseTool): name = "DadosDeEstudante" description = """Esta ferramenta extrai o histórico e preferências de um estudante de acordo com seu histórico.""" def _run(self, input: str) -> str: llm = ChatOpenAI(model="gpt-4", openai_api_key=os.getenv("OPENAI_API_KEY")) parser = JsonOutputParser(pydantic_object=ExtratorDeEstudante) template = PromptTemplate(template="""Você deve analisar a {input} e extrair o nome de usuário informado. Formato de saída: {formato_saida}""", input_variables=["input"], partial_variables={"formato_saida" : parser.get_format_instructions()}) cadeia = template | llm | parser resposta = cadeia.invoke({"input" : input}) print(resposta) return resposta['estudante'] pergunta = "Quais os dados da Ana?" resposta = DadosDeEstudante().run(pergunta) print(resposta)

Se o problema persistir após essas alterações, pode ser útil verificar a documentação oficial da biblioteca langchain ou procurar por issues relacionadas no repositório do GitHub da biblioteca.

Atualizei as bibliotecas e funcionou

Precisando e so chamar