Coordenadas do Mouse na Tela com PyAutoGUI

Se você está começando a explorar o mundo da Inteligência Artificial, provavelmente já ouviu falar sobre a OpenAI e suas poderosas APIs. Uma das funcionalidades mais interessantes e recentes é o code interpreter dos assistants da OpenAI. Neste post, vamos entender o que é essa ferramenta, como utilizá-la e como ela pode facilitar suas primeiras experiências com IA.
O code interpreter dos assistants da OpenAI é uma ferramenta que permite aos assistentes de IA executar códigos em Python para resolver problemas complexos. Isso significa que, além de gerar texto, esses assistentes podem rodar scripts, analisar dados e até gerar gráficos, tudo de forma automatizada.
Para iniciantes em IA, essa funcionalidade é uma verdadeira mão na roda. Ela permite que você realize tarefas avançadas sem precisar se aprofundar em detalhes técnicos complexos. Com o code interpreter, você pode focar em entender os conceitos básicos e ver resultados práticos rapidamente.
Vamos agora ao passo a passo de como configurar e utilizar um Assitant.
Primeiro, precisamos criar um assistente que tenha acesso ao code interpreter. Para isso, utilizamos a API da OpenAI. Veja o exemplo abaixo:
from openai import OpenAI
client = OpenAI()
assistant = client.beta.assistants.create(
name="Math Tutor",
instructions="Você é um tutor pessoal de matemática. Escreva e execute códigos para responder perguntas de matemática.",
tools=[{"type": "code_interpreter"}],
model="gpt-4-turbo-preview",
)
A comunicação com os assistentes é feita através de threads, que armazenam o histórico de mensagens. Vamos criar uma thread:
thread = client.beta.threads.create()
Agora, adicionamos uma mensagem à thread. Por exemplo, podemos perguntar sobre a probabilidade de obter um número específico ao lançar um dado:
message = client.beta.threads.messages.create(
thread_id=thread.id,
role='user',
content='Se eu jogar um dado honesto 1000 vezes, qual é a probabilidade de eu obter exatamente 150 vezes o número 6? Resolva com um código'
)
Depois de adicionar a mensagem, precisamos solicitar ao assistente que rode a thread:
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions='O nome do usuário é Adriano Soares e ele é um usuário Premium.'
)
Para garantir que a thread já tenha sido executada, utilizamos o seguinte código:
import time
while run.status in ['queued', 'in_progress', 'cancelling']:
time.sleep(1)
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
print(run.status) # 'completed'
Por fim, verificamos a resposta dada pelo modelo:
if run.status == 'completed':
mensagens = client.beta.threads.messages.list(
thread_id=thread.id
)
print(mensagens)
else:
print('Erro', run.status)
Se a mensagem final for um texto, podemos verificá-la da seguinte forma:
print(mensagens.data[0].content[0].text.value)
Podemos também verificar todos os passos que o modelo percorreu até chegar à solução:
run_steps = client.beta.threads.runs.steps.list(
thread_id=thread.id,
run_id=run.id
)
for step in run_steps.data[::-1]:
print('\n=== Step:', step.step_details.type)
if step.step_details.type == 'tool_calls':
for tool_call in step.step_details.tool_calls:
print('-----')
print(tool_call.code_interpreter.input)
print('-----')
print('Result')
print(tool_call.code_interpreter.outputs[0].logs)
if step.step_details.type == 'message_creation':
message = client.beta.threads.messages.retrieve(
thread_id=thread.id,
message_id=step.step_details.message_creation.message_id
)
print(message.content[0].text.value)
Vamos ver um exemplo prático de como o code interpreter pode ser utilizado para analisar dados de vendas de um supermercado. Neste exemplo, vamos utilizar dados de supermercado extraídos do Kaggle.
Primeiro, enviamos um arquivo CSV com os dados de vendas para o assistente:
import openai
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
client = openai.Client()
file = client.files.create(
file=open('arquivos/supermarket_sales.csv', 'rb'),
purpose='assistants'
)
assistant = client.beta.assistants.create(
name="Analista Financeiro Supermercados Asimov",
instructions="Você é um analista financeiro de um supermercado. \
Você utiliza os dados .csv relativo às vendas \
do supermercado para realizar as suas análises",
tools=[{'type': 'code_interpreter'}],
file_ids=[file.id],
model='gpt-4-turbo-preview'
)
Agora, podemos fazer perguntas ao assistente, como “Qual é o rating médio das vendas do nosso supermercado?”:
# Cria thread
thread = client.beta.threads.create()
# Adiciona mensagem
pergunta = 'Qual é o rating médio das vendas do nosso supermercado?'
messages = client.beta.threads.messages.create(
thread_id=thread.id,
role='user',
content=pergunta
)
# Roda thread
run = client.beta.threads.runs.create(
thread_id=thread.id,
assistant_id=assistant.id,
instructions='O nome do usuário é Adriano.'
)
# Espera ela rodar
import time
while run.status in ['queued', 'in_progress', 'cancelling']:
time.sleep(1)
run = client.beta.threads.runs.retrieve(
thread_id=thread.id,
run_id=run.id
)
print(run.status)
if run.status == 'completed':
messages = client.beta.threads.messages.list(
thread_id=thread.id
)
print(messages)
else:
print('Erro', run.status)
print(messages.data[0].content[0].text.value)
O rating médio das vendas do seu supermercado é aproximadamente 6.97. Se precisar de mais informações ou análises adicionais, por favor, me avise!
Para verificar os passos necessários para chegar à resposta, basta executar o trecho de código do capítulo anterior.
run_steps = client.beta.threads.runs.steps.list(
thread_id=thread.id,
run_id=run.id
)
for step in run_steps.data[::-1]:
print('======= Step >', step.step_details.type)
if step.step_details.type == 'tool_calls':
for tool_call in step.step_details.tool_calls:
print('```')
print(tool_call.code_interpreter.input)
print('```')
if tool_call.code_interpreter.outputs[0].type == 'logs':
print('Result')
print(tool_call.code_interpreter.outputs[0].logs)
if step.step_details.type == 'message_creation':
message = client.beta.threads.messages.retrieve(
thread_id=thread.id,
message_id=step.step_details.message_creation.message_id
)
if message.content[0].type == 'text':
print(message.content[0].text.value)
O code interpreter dos assistants da OpenAI é uma ferramenta poderosa que pode facilitar muito a vida de quem está começando a explorar a Inteligência Artificial. Com ele, você pode realizar análises complexas, gerar gráficos e muito mais, tudo de forma automatizada e acessível. Experimente e veja como essa ferramenta pode transformar suas primeiras experiências com IA!
Se você gostou deste tutorial e quer aprender mais sobre como utilizar a API da OpenAI, continue acompanhando nossos posts e explore as infinitas possibilidades que a IA pode oferecer. Até a próxima!
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
Comentários
30xp