1
resposta

[Bug] Olá, bom dia. Chegando no final dessa aula o código deu um problema. E ainda não consegui achar solução para isso.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oii, Jhonata! Tudo bom?

Sobre o erro FileNotFounderError indica que o arquivo dados/dados_ecomart.txt não foi encontrado. Sendo assim, veja se o caminho está correto e se está na pasta certa. Teste usar um caminho absoluto do arquivo e que o arquivo esteja rodando dentro do diretório conforme na aula.

O segundo erro, TypeError: Assistants.create() got a unexpected keyword argument 'file_ids', é sobre a função create() da API da OpenAI não aceita o argumento file_ids devido a uma atualização.

Na documentação, vemos que a versão do assistente usada no curso é a V1 e a versão atual da ferramenta é a V2. Então é preciso fazer algumas alterações no código para funcionar, veja:

  • No arquivo de tools, o tipo retriveval não existe mais, passou a ser file_search. Segue o exemplo:
tools = [
    {
        'type': 'file_search'
    }
]
  • Os arquivos precisam estar em um vector_store, então no arquivo do assistente ficará da seguinte forma:
def create_thread(vector_store):
    return client.beta.threads.create(
        tool_resources={
            'file_search': {
                'vector_store_ids': [vector_store.id]
            }
        }
    )


def create_vector_store():
    vector_store = client.beta.vector_stores.create(name='Ecomart Vector Store')

    file_paths = [
        'data/ecomart_data.txt',
        'data/ecomart_politics.txt',
        'data/ecomart_products.txt'
    ]
    file_streams = [open(path, 'rb') for path in file_paths]

    client.beta.vector_stores.file_batches.upload_and_poll(
        vector_store_id=vector_store.id,
        files=file_streams
    )

    return vector_store
  • Após isso, modificaremos o parâmetro file_ids, no arquivo do assistente para tool_resources, por exemplo:
def create_assistant(vector_store):
    assistant = client.beta.assistants.create(
        name='Ecomart Assistant',
        instructions=f'''
            Você é um chatbot de atendimento a clientes de um e-commerce. 
            Você não deve responder perguntas que não sejam dados do ecommerce informado!
            Além disso, acesse os arquivos associados a você e a thread para responder as perguntas.
        ''',
        model=model,
        tools=tools,
        tool_resources={
            'file_search': {
                'vector_store_ids': [vector_store.id]
            }
        }
    )
    return assistant
  • No get_json inclua o vectr_store_id:
    if not os.path.exists(filename):
        vector_store = create_vector_store()
        thread = create_thread(vector_store)
        assistant = create_assistant(vector_store)

        data = {
            'assistant_id': assistant.id,
            'vector_store_id': vector_store.id,
            'thread_id': thread.id
        }
  • Na função client.neta.threads.messages.create() o parâmetro file_ids não funcionará, então pode-se retirar ou comentar para ocultá-lo:
            client.beta.threads.messages.create(
                thread_id=thread_id,
                role="user",
                content=prompt
                # file_ids=file_ids
            )

Segue os artigos das documentações que informam sobre a atualização:

🔗 Assistentes de pesquisa de arquivo

🔗 Guia de migração de assistentes

Ambas páginas podem abrir em inglês, caso não se sinta confortável com o idioma, utilize o tradutor automático do navegador.

Espero que as orientações te ajude a resolver o problema.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!