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:
tools
, o tipo retriveval
não existe mais, passou a ser file_search
. Segue o exemplo:tools = [
{
'type': 'file_search'
}
]
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
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
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
}
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!