Oi, Samuel! Como vai?
Parece que seu código está chamando Chat Completions direto no modelo (model="gpt-4"). Isso não usa o Assistants que você criou, então o modelo não tem acesso às instruções, arquivos ou vector store do seu assistente.
Além disso, vendo o erro que apareceu, a API está correta em dizer que não consegue acessar um arquivo local (registros_financeiros_pessoal.txt) que está no seu computador, porque o modelo não “enxerga” seu sistema de arquivos. Você precisa enviar o conteúdo do arquivo na mensagem ou usar o fluxo do Assistants API com Files/Vector Store.
Pontos importantes:
client.chat.completions.create(...) = conversa “solta” com o modelo (sem seu assistente).- Para usar seu assistente criado, você precisa de threads e runs (Assistants API).
- Para “ler arquivo”, você precisa:
- ler no Python e mandar o texto na mensagem, ou
- enviar o arquivo para a OpenAI e usar File Search / vector store no assistente.
1) Solução rápida: ler o arquivo no Python e mandar o conteúdo no prompt
Por exemplo:
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Le o arquivo local e envia o conteudo na mensagem
with open("registros_financeiros_pessoal.txt", "r", encoding="utf-8") as f:
conteudo = f.read()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Voce e um assistente financeiro. Extraia e liste todos os registros financeiros do texto enviado."},
{"role": "user", "content": f"Liste todos os registros financeiros deste texto:\n\n{conteudo}"}
]
)
print(response.choices[0].message.content)
O que o código faz:
- Lê o arquivo local com
open(...) - Coloca o texto dentro da mensagem do usuário
- O modelo consegue listar os registros porque agora ele recebeu os dados
2) Usar o Assistants API (o seu assistente criado de verdade)
- Pegue o assistant_id do seu assistente no painel.
- Crie uma thread.
- Envie mensagem para a thread.
- Crie um run usando o
assistant_id. - Leia a resposta na thread.
Exemplo:
from openai import OpenAI
from dotenv import load_dotenv
import os
import time
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
ASSISTANT_ID = "asst_SEU_ID_AQUI"
# 1) Cria uma thread
thread = client.beta.threads.create()
# 2) Envia mensagem
client.beta.threads.messages.create(
thread_id=thread.id,
role="user",
content="Liste todos os registros financeiros do arquivo que esta configurado no assistente."
)
# 3) Cria um run (executa o assistente)
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=ASSISTANT_ID
)
# 4) Espera o run terminar
while True:
run_status = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
if run_status.status in ["completed", "failed", "cancelled", "expired"]:
break
time.sleep(1)
# 5) Le as mensagens da thread
messages = client.beta.threads.messages.list(thread_id=thread.id)
# Ultima resposta do assistente (normalmente vem primeiro na lista)
for msg in messages.data:
if msg.role == "assistant":
print(msg.content[0].text.value)
break
O que o código faz:
- Executa seu assistente criado via
assistant_id - A resposta vem da thread, nao do
chat.completions
Observação: para ele listar registros de um arquivo, esse arquivo precisa estar enviado/configurado no assistente (File Search / vector store). Se o arquivo só existe no seu PC, volte na Solução 1 e envie o conteúdo no prompt.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado