Depois de muito pesquisar, consegui resolver.
A versão do assistente usada no curso é a V1, mas já existe a V2 e usei os links a seguir para me ajudar na correção
https://platform.openai.com/docs/assistants/migration/what-has-changed
https://platform.openai.com/docs/assistants/tools/file-search
As alterações efetuadas foram as que seguem:
No arquivo de tools o tipo 'retrieval' não existe mais, agora é 'file_search'
tools = [
{
'type': 'file_search'
}
]
Os arquivos agora, são alocados em um vector_store, e no arquivo do assistente ficou assim:
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
Ainda no assitente, o parametro file_ids, também não existe mais. Agora tem que informar o tool_resources, como segue
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
O get_json eu mudei também, para incluir o vector_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
}
Nas mensagens, o parametro file_ids também não existe mais, eu omiti ele (funciona sem por que a thread tem o vector_store associado)
client.beta.threads.messages.create(
thread_id=thread_id,
role="user",
content=prompt
# file_ids=file_ids
)
Espero que isso ajude vocês.