-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpy_gpt.py
114 lines (95 loc) · 4.12 KB
/
py_gpt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from openai import OpenAI
import streamlit as st
from streamlit_chat import message
import random
API_KEY = st.secrets.openai_token
st.title('Aprender Python')
st.subheader('Um lugar legal para você tirar suas dúvidas sobre o Python.')
if 'messages' not in st.session_state:
st.session_state['messages'] = [
{"role": "system", "content": "Você é um especialista na linguagem Python. Breve e direto, sempre atende com educação às dúvidas dos alunos."}
]
container = st.empty()
container.write(f"Prompt de sistema: {st.session_state['messages'][0]['content']}")
def conversation(this_question, creativity):
this_message = {"role": "user", "content": this_question}
st.session_state['messages'].append(this_message)
client = OpenAI(api_key=API_KEY)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
temperature=creativity,
messages=st.session_state['messages'],
)
answer = completion.choices[0].message.content
st.session_state['messages'].append({"role": "assistant", "content": answer})
with st.form(key='basic'):
creativity = st.slider('Nível de criatividade', 0.0, 1.0)
question = st.text_area('Qual sua dúvida?')
submit_button = st.form_submit_button("Enviar")
if submit_button:
conversation(question, creativity)
question = ''
tab1, tab2, tab3 = st.tabs(["Coversa", "Código", "Utilidades"])
with tab1:
for i in st.session_state['messages']:
if i['role'] == 'system' or i['content'] == '':
pass
elif i['role'] == 'user':
message(is_user=True, message=i['content'], key=random.randint(0, 999))
else:
message(is_user=False, message=i['content'], key=random.randint(0, 999))
with tab2:
for i in st.session_state['messages']:
if i['role'] == 'system' or i['content'] == '':
pass
elif i['role'] == 'user':
st.markdown(f"Usuário: {i['content']}")
else:
st.markdown(f"Assistente: {i['content']}")
with tab3:
with st.expander('Assistente de programação com ChatGPT'):
st.code("""
import os
os.system('cls' if os.name == 'nt' else 'clear')
def code():
'''
Essa função vai ser seu código todo. O que você escrever aqui, será executado ao fim do código,
dentro da condicional "if __name__ == '__main__':"
ESCREVA SEU CÓDIGO TODO DENTRO DESSA FUNÇÃO, e rode seu script normalmente.
'''
if __name__ == '__main__':
try:
code()
except Exception as E:
try:
from openai import OpenAI
import json
import time
ID = INSIRA_ID_DO_ASSISTENTE
API_KEY = INSIRA_SUA_CHAVE_AQUI
client = OpenAI(api_key=API_KEY)
chat = client.beta.threads.create(
messages=[
{"role": "user", "content": f\"""Eu tentei rodar um script, mas recebi uma mensagem de erro.
Tente me explicar como resolver esse problema. Use exemplos. Dê alternativas.
Consulte a documentação dos módulos, se for preciso.
Código: {str(code)}
Erro recebido: {E}\"""}
],
)
run = client.beta.threads.runs.create(thread_id=chat.id, assistant_id=ID)
print(f'Erro encontrado: {E}')
print('Buscando solução.', end='')
while run.status != 'completed':
run = client.beta.threads.runs.retrieve(thread_id=chat.id, run_id=run.id)
print(f'.', end='')
time.sleep(.5)
else:
print('')
message_response = client.beta.threads.messages.list(thread_id=chat.id)
messages = message_response.data
this_msg = messages[0]
print(this_msg.content[0].text.value)
except Exception as E:
print(E)
""")