Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] A resposta da requisição da API do chatGPT não esta batendo no meu assistente

Fiz o codigo igual ta no curso e eu nao consegui a resposta que eu queria

Parece que a requisicao nao bate no assistente que eu criei e somente no modelo de gpt

codigo:

from openai import OpenAI
from dotenv import  load_dotenv
import os


load_dotenv() #Ler todas as chaves

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))


response = client.chat.completions.create(
    messages=[
        {
            "role" : "system",
            "content" : "Liste todos os registros financeiros no arquivo registros_financeiros_pessoal.txt"
        },
        {
            "role" : "user",
            "content" : "Liste todos os registro?"
        }
    ],
    model= "gpt-4",
)

print(response.choices[0].message.content)

resposta da api:
Desculpe pela confusão, mas como uma IA, não tenho a capacidade de acessar ou listar registros de arquivos de texto ou qualquer outro tipo de arquivo. Eu estou aqui para fornecer informações e responder a perguntas com base nas informações que me foram fornecidas. Não tenho a capacidade de interagir com seu sistema de arquivos pessoais.

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

1 resposta
solução!

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:
    1. ler no Python e mandar o texto na mensagem, ou
    2. 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)

  1. Pegue o assistant_id do seu assistente no painel.
  2. Crie uma thread.
  3. Envie mensagem para a thread.
  4. Crie um run usando o assistant_id.
  5. 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