СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО



Прогресс дошел даже до такой, чисто человеческой области обслуживания, как гадание на картах. С помощью великого и могучего GPT, используя Raspberry pico и w5100S, можно гадать с виртуальными картами Таро и получать текстовый ответ! Все что нужно для проекта, это W5100S, поддерживающий Ethernet-связь с Raspberry pico.

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО

Настройка такая же, как на изображении выше.



Ethernet-соединение

Первое, что нужно сделать, это подключить Ethernet. Можете легко подключить плату Pico к Ethernet, войдя в Git.

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО

Далее настроить компьютер как сервер, а Pico как клиент.

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО



Передача изображения и отображение на экране:

while True:
with open(“back1234.bmp”, “rb”) as f:
image_data = f.read()
print(image_data)

len_sent = f”LEN:{len(image_data)}”.encode()
print(f”length of sent data = {len_sent}”)
connectionSock.send(len_sent)
time.sleep(1)
connectionSock.send(image_data)
time.sleep(1)

Передайте изображение BMP, которое уже было создано через Ethernet. (Сервер)

while True:
data = s.recv(MAXBUF)
if not data:
continue

if len(data):
print(len(data))
if not len_buf:
if b”LEN” in data:
len_buf = int(data.decode().split(“:”)[1])
print(f”length of buf = {len_buf}”)
else:
buf += data
if len(buf) >= len_buf:
break

bmp_data = bytearray(buf)
with open(“test.bmp”, “wb”) as f:
f.write(bmp_data)
f.close()

group = displayio.Group()
display.show(group)

bitmap = displayio.OnDiskBitmap(“/test.bmp”)
tile_grid = displayio.TileGrid(bitmap, pixel_shader=bitmap.pixel_shader)
group.append(tile_grid)

os.remove(“/test.bmp”)

Клиент подключается к серверу, получает изображение и отображает его.

Выбор карт

Можно выбрать нужную карту с помощью четырех кнопок.

while True:
pressed = button1.value + button2.value * 2 + button3.value * 2 ** 2 + button4.value * 2 ** 3

if pressed != 15:
break

s.send(f”{15 – pressed}”.encode())

В клиенте нажмите кнопку нужного номера карты. Он вычисляет бит за битом и отправляет данные на сервер. Когда нажимаете кнопку 1, номера 1 и 2 отправляют 2, номер 3 отправляют 4, номер 4 отправляют 8.

while True:
data = connectionSock.recv(2)
if not data:
continue
data = data.decode()
card_num: str = ”
print(f”received={data}”)
if data == ‘1’:
card_num = ‘first’
elif data == ‘2’:
card_num = ‘second’
elif data == ‘4’:
card_num = ‘third’
elif data == ‘8’:
card_num = ‘fourth’

query = “4 random cards flipped on pamela colman smith rws tarot deck.” \
“I picked the {} card. Please explain what this card is like. Please explain within 3 sentences”.format(card_num)
print(query)

Когда сервер получает данные, он преобразует данные в нужные символы. И создайте строку для доставки на GPT.

ЧИТАТЬ
LED СТРОБОСКОП НА МИКРОКОНТРОЛЛЕРЕ

Теги GPT в чате

Можно получить ключ API GPT для чата на указанном сайте: platform.openai.com/overview

def Chat_GPT(api_key, query):
global answer

openai.api_key = api_key

model = “gpt-3.5-turbo”

messages = [
{
“role”: “system”,
“content”: “You are the best tarotist.”
},
{
“role”: “user”,
“content”: query
}
]

response = openai.ChatCompletion.create(
model=model,
messages=messages
)
answer = response[‘choices’][0][‘message’][‘content’]
print(answer)

Назначим следующую роль для Chat GPT и посмотрим соответствующую подсказку.

query = “4 random cards flipped on pamela colman smith rws tarot deck.” \
“I picked the {} card. Please explain what this card is like. Please explain within 3 sentences”.format(card_num)
print(query)
Chat_GPT(api_key, query)

Затем основной код объединяет информацию о нажатии кнопки, полученную от устройства, в подсказку и перенаправляет ее на GPT.

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО

DALL-E 2 — это инструмент для создания изображений, созданный OpenAI.

def dall_e2(answer):
global image_url
global image_data
response = openai.Image.create(
prompt=answer,
n=1,
size=”256×256″,
)
image_url = response[‘data’][0][‘url’]
urllib.request.urlretrieve(image_url, “test.bmp”)

im = Image.open(“test.bmp”)
im_resized = im.resize((220, 220))

im_resized = im_resized.convert(‘P’, palette=Image.ADAPTIVE, colors=16)

im_resized.save(“test_resized.bmp”, format=”BMP”)
with open(“test_resized.bmp”, “rb”) as f:
image_data = f.read()
print(image_data)

Код для DALL-E 2 устроен следующим образом. Здесь следует отметить раздел «Размер изображения». Поскольку тут нет отдельной памяти, сохраним картинку в формате BMP во флэш-память платы Pico и покажем её позже.

В любом случае при отправке и получении данных размер изображения не может быть больше размера SRAM, поскольку данные хранятся в SRAM.

На практике программа не работала должным образом, когда размер изображения превышал 50 кБ.

Chat_GPT(api_key, query)
dall_e2(answer)

В основном коде отправляем полученные от GPT данные обратно в DALL-E 2 следующим образом.
Dall-E2 создает образ из приглашения, отправленного GPT.

Отображение

Отправьте данные клиенту, как это делали в предыдущем процессе, чтобы отобразить изображение, созданное Dall-E2.

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО

Описание карты:

# Card Description
s.send(f”Card Description”.encode())

После отображения картинки отправьте на сервер строку Описание карты.

done = False
sent = False
while True:
data = connectionSock.recv(100)
if not data:
continue
print(f”received={data}”)
# if client sent OK all is done
if data == b”OK”:
done = True
if not sent:
ret = connectionSock.send(answer.encode())
sent = True
# quit when client received my response
if done:
connectionSock.close()
break
while True:
data = connectionSock.recv(100)
if not data:
continue
print(f”received={data}”)
# if client sent OK all is done
if data == b”Reset”:
done = True
break

Когда сервер получает сообщение «Описание карты», он снова отправляет клиенту описание карты, полученное через Chat GPT. Клиент отобразит описание карты.

ЧИТАТЬ
ЛАМПА НАСТРОЕНИЯ НА КОНТРОЛЛЕРЕ

СХЕМА GPT ГАДАЛКИ НА КАРТАХ ТАРО

Ну вот и всё, теперь вы можете использовать эту электронную версию карт Таро, чтобы предсказать удачу. Надеемся искусственный интеллект справится с этим получше сомнительных гадалок!



Прокрутить вверх