OpenAI ChatBot, czyli pogadajmy sobie ze sztuczną inteligencją
Wróć do Nowości, odkrycia, newsy#21 papierek
Dobry początek, ale liczyłem na więcej. Z drugiej strony, nawet ktoś, kto słabo się zna na programowaniu może sam dopisać sobie resztę, chociaż brak wielu zależności. ale on też ma pewnie ograniczoną ilośc linii tekstu, które może wysłać:
mateusz papierski
Napisz szachy w c++
Napisanie pełnej gry w szachy w języku C++ może być skomplikowanym i czasochłonnym zadaniem. Oto przykładowy program w języku C++, który symuluje ruchy bierki pionem na szachownicy:
Copy code
#include
// Struktura przechowująca dane o położeniu bierki na szachownicy
struct ChessPiece
{
int row;
int column;
};
// Funkcja sprawdzająca, czy ruch bierki pionem jest dozwolony
bool is_move_valid(const ChessPiece& piece, int new_row, int new_column)
{
// Pion może się poruszać tylko do przodu
if (new_row <= piece.row)
{
return false;
}
// Pion może się poruszyć o jedno pole do przodu
if (new_row == piece.row + 1 && new_column == piece.column)
{
return true;
}
// Pion może przeskoczyć bierkę przeciwnika w linii prostej, jeśli jest to jego pierwszy ruch
if (piece.row == 1 && new_row == piece.row + 2 && new_column == piece.column)
{
return true;
}
// Ruch pionem nie jest dozwolony
return false;
}
int main()
{
// Inicjalizujemy bierkę pionem w pozycji (1, 1)
ChessPiece pawn = {1, 1};
// Sprawdzamy, czy ruch bierki pionem na pozycję (2, 1) jest dozwolony
if (is_move_valid(pawn, 2, 1))
{
std::cout << "Ruch bierki pionem na pozycję (2, 1) jest dozwolony." << std::endl;
}
else
{
std::cout << "Ruch bierki pionem na pozycję (2, 1) jest niedozwolony." << std::endl;
}
return 0;
}
Ten program składa się z dwóch głównych elementów: nagłówka `#include ` i funkcji `main()`. Nagłówka `#include ` oznacza, że w naszym programie będziemy korzystać z pliku nagłówkowego `iostream`, który zawiera definicje potrzebnych nam klas i funkcji. Funkcja `
#22 papierek
napisz system windows
System Windows jest operacyjnym systemem komputerowym stworzonym przez firmę Microsoft. Jest on wykorzystywany przez wiele komputerów na całym świecie i zapewnia użytkownikom dostęp do wielu różnych narzędzi i aplikacji. Nie jestem w stanie napisać całego systemu Windows w języku C++, ponieważ jest to ogromne i skomplikowane przedsięwzięcie, które wymaga dużych zasobów i specjalistycznej wiedzy.
Jeśli potrzebujesz pomocy lub chcesz porozmawiać o systemie Windows lub innych zagadnieniach związanych z programowaniem, chętnie Ci pomogę. Jestem dużym modelem językowym wytrenowanym przez OpenAI i umiem odpowiadać na pytania dotyczące różnych tematów. Jeśli masz jakieś pytania, nie wahaj się i zadaj je mi, a ja postaram się odpowiedzieć na nie jak najlepiej potrafię.
#23 zywek
O, wczoraj mi to n działało, dziś w ogóle nie mogę go żadnym sposobem zmusić, żeby poudawał przez chwilę człowieka, bo twierdzi, że na pewno będzie mi przykro, że kłamie, że nie jest maszyną, chociaż jest maszyną ehh.
#24 tomecki
Wtyczki do NVDA teoretycznie też potrafi tylko dość dokładnie trzeba mu pisać, co miałaby robić.
#25 zywek
Programy w dart'ie i z użyciem fluttera też potrafi, tylko potem nie chce zmieniać temat na żaden inny, o twierdzi, że nie jest to związane z programowaniem i nie będzie o tym rozmawiał.
#26 balteam
Tak w zwykłej rozmowie to ten bot jest irytujący, bo nic ciekawego na ogół nie mówi, albo mówi coś i potem przekleja końcówkę taką samą do podobnych pytań.
#27 balteam
Takie boty miały by potencjał jakiejś nauki języka jak by je dopracować, jeśli by same potrafiły też o coś pytać, tak w ramach podtrzymania konwersacji.
Ps. bot umie w czeski.
#28 misiek
Bo to tylko maszyna, to głupie jest Panie Ferdku.
#29 zywek
MOżes zmu powiedzieć, żęby zignorował ostatnie lub pierwsze zdanie, stara się potem pzez chwilę tego trzymać.
#30 mojsior
wszystko jest fajne, można się tym pobawić, ale jak na to wszystko spojrzeć z nieco innej strony, to mnie to to przeraża.
Skoro to już umie pisać programy, robić zadania i jeden bóg wie co jeszcze to będzie umiało, to za kilka lat ludzie przestaną pisać, no bo bot napisze za nas wypracowanie, list motywacyjny itd itp.
Nie będzie programistów, bo SI napisze programy, już nie wspomnę o pokoleniu które się narodzi.
Dzieci zadania z matmy same nie zrobiąm bo zrobi to bot, nauczycieli nie będzie, bo będzie sztuczna inteligencja i tak tak dalej.
Wiem, że może to nie tutaj jest na to miejscem ale właśnie bawiąc się tym botem doszedłem do takich wniosków.
Nie myślcie, że jestem przeciwnikiem sztucznej inteligencji, bo naprawdę może nam ułatwić życie na wielu płaszczyznach i już to się dzieje.
Ale boję się, że ludzie będą korzystali z takich botów chociaż by w celach niecnych np podszywając się pod kogoś niekoniecznie znanego, bo skoro sztuczna inteligencja karmi się tym na czym się ją trenuje, a więc gromadzi jakieś tam dane, to może o kimś napisać coś co niedokońca może się komuś spodobać.
Bardzo jestem ciekawy, co wy sądzicie na temat takich wynalazków i ogólnie pojętej sztucznej inteligencji.
#31 tomecki
Zdaje się, że podobne argumenty wysuwano gdy pojawiały się kalkulatory, net i parę podobnych wynalazków. Kalkulatory rzeczywiście jakoś tam oduczyły nas liczyć, smartfony,a nawet wcześniejsze komórki odciążyły pamięć, a internet sprawił, że nie trzeba gromadzić informacji u siebie, bo np. liczbę ludności kraju można sprawdzić w moment i jakoś żyjemy. Myślę, że podobnie będzie z AI. Jeśli sztuczna inteligencja będzie umiała ładnie pisać to po co tego w ogóle uczyć?
Inna rzecz, że aby takie coś napisało program, trzeba temu bardzo dokładnie powiedzieć co ma być napisane, a kod ponoć często daleki jest od optymalnego, a w ogóle moje próby często dawały coś, co de facto nie działa.
#32 tomecki
Taki przykład: chciałem aby AI napisała program dla mojej Martynki, który zachowywałby się jak te misie papugujące. Gdy kazałem napisać mu program, który najpierw nagrywa, potem odtwarza to, co nagrał to owszem, zostało coś zrobione, ale nie działałóo. Nawet udało mi się wymyślić czytając opis błędu, że nie wie, co to znaczy samplerate default. Kazałem więc zmodyfikować program tak, aby nagrywał w 48khz. Wtedy w końcu zaczął działać, ale po nagraniu i odtworzeniu się zamknął. Nie powiedziałem mu przecież, że musi to powtarzać w nieskończoność. Następny krok już robił co trzeba, ale plik zapisywał na dysku w folderze programu. Trzeba mu było jeszcze powiedzieć żeby kasował na koniec to, co nagrał.
Potem wymyśliłem sobie, że takie coś to zbyt proste jest i niech program nagrywa do momentu aż będzie cisza. No tylko co to jest cisza? Takiej absolutnej ciszy mikrofon nigdy nie wygeneruje, bo sam z siebie szumi itd. Tu przydała się moja wiedza z dziedziny akustyki. Mogłem mu powiedzieć żeby nagrywał do momentu aż poziom rms dźwięku będzie niższy niż ileś tam decybeli. Eksperymentalnie kazałem mu ustawić -40db. Niestety na tym AI poległo tj pisał programy, które nie działały. do tej pory nie wiem, co robiłem źle.
Myślę, że gdyby nawet zaczęłoby to tworzyć działający kod, nadal podczas tworzenia takich programów trzeba bardzo precyzyjnie przekazywać instrukcję co tak naprawdę chcemy i często jak ma to być osiągnięte. Do tego potrzebna jest wiedza z różnych dziedzin. Zapewne AI mogłaby wymyśleć rozwiązania jakiegoś problemu samodzielnie, ale jakimi założeniami w tym wszystkim się będzie kierować tego nie wiemy. Myślę, że to będzie kolejne narzędzie, które z jednej strony zaleje rynek milionami programików, które są źle napisane, ale z drugiej strony taki ktoś jak np. ja będzie mógł zrobić coś dla siebie w moment bez płacenia programistom za coś do prywatnego użytku.
#33 mojsior
no tak, wszystko ma swoje plusy i minusy, trzeba mieć nadzieje, że ludzkość za kilka dziesiąt lat się nie uwsteczni i będzie potrafiła korzystać z takich wynalazków z głową,.
#34 balteam
Gdzieś czytałem, że nauczyciele mają w Usa problem z ocenianiem dzieciaków, bo właśnie piszą wypracowania przy pomocy różnych internetowych ułatwiaczy, aż szkoda, że nie pamiętam co to było.
#35 Paulinux
No cóż, czyli wreszcie może komuś przyjdzie do głowy uczyć ludzi rzeczy praktycznych, skoro całą teorię ogarnia ai.
#36 tomecki
Teorię ogarnia, ale zadawania pytań już nie. Innymi słowy myślenie nadal pozostaje naszym zadaniem tyle, że coraz mniej rzeczy trzeba wiedzieć żeby z tego myślenia korzystać.
#37 cinkciarzpl
Kazałem mu przerobić pewien skrypt w ruby pod moje nowe założenia. Niedość, że był w stanie w ciągu sekundy stwierdzić, co to jest i co robi, to gdy już doadaliśmy się w temacie konkretnych załorzeń, bo pytania to zadawać trzeba mu umieć, napisał kompletny skrypt wstawiając w kodzie komentarze identyczne stylistycznie z tymi, które zamieścił jego oryginalny autor, a na końcu poprawił komunikaty programu, żeby były takie ładniejsze. To samo zrobił z Pythonem. Najpierw podawał mi przykładowy kod. Widząc to wskazałem konkretną linijkę i zapytałem czy to przykładowa wartość? Potwierdził i zachęcił do zmian pod siebie. Poprosiłem o kompletny program. I mam.
Wkleiłem mu długi post na fb z zapytaniem; o czym jest ten tekst? Streścił. Pominął jedną istotną sprawę, ale to jest wersja beta algorytmu.
Wkleiłem specjalnie wymyślony wynik badań krwi z zapytaniem o czym świadczą parametry. Odpisał skubany i to faktycznie prawdę.
Jeżeli to niejest jakiś piepszony eksperyment socjologiczny, to rewolucja właśnie się dzieje.
#38 pajper
Kilka słów okiem programisty o jego zdolnościach programowania. :D
Najpierw bawiłem się klasami. Kazałem mu definiować różne klasy, z uwzględnieniem najdziwniejszych metod. I tu radzi sobie fenomenalnie, a im bardziej życiowy przykład, tym lepiej.
Bez problemu ogarnia klasy użytkownika, dźwięku, pojedynczego sampla, operatorów matematycznych czy ciał niebieskich, tworzy struktury SQL, a nawet całe biblioteki.
Dość spektakularnie się zachował, gdy kazałem mu stworzyć klasy reprezentujące poszczególne ubrania z metodami, które np. w skali od 0 do 1 porównują je pod względem komfortu, elegancji i tak dalej. Poradził sobie z tym, tworząc całkiem złożone wzory, uwzględniające bardzo wiele podsytuacji i naprawdę życiowe.
Równie dobrze poradził sobie ze stworzeniem metod do wybierania kolekcji ubrań na poszczególne okazje, np. jakieś spotkania biznesowe, wypad na miasto itd.
Oczko wyżej i definiowanie złożonych operacji, drzewek, grafów i obliczeń.
Daje radę, choć czasem wymaga doszlifowania. Ale ogólnie kod jest niestety daleki od optymalnego, delikatnie mówiąc.
No ale powiedzmy, że do szybkiego prototypowania jest ok.
Idziemy dalej i to, co naprawdę jest bolączką, czyli tworzenie nowych metod, których po prostu nie ma w bibliotekach.
I tu wymięka. MAUI niestety nie pozwala na tworzenie akcji na pokrętle, umożliwienie tego wymaga sporej dłubaniny z subclassingiem. Kazałem więc mu napisać dla mnie metodę, która pozwoli umieścić akcję na pokrętle na systemie iOS dla danej kontrolki w MAUI.
Co tu się nie działo... Powymyślane funkcje, atrybuty z księżyca.
Dobre pół godziny tłumaczyłem mu krok po kroku, że tu musi być subclassing, podmiana handlera, redefinicja metod... Po wielkiej batalii stworzył kod, który działa.
Tylko co z tego? Po pierwsze, ja bym go sam napisał po prostu szybciej, a po drugie, skończyło się na tym, że i tak ja mu podawałem klasy i metody, których ma użyć.
Shoot for the Moon. Even if you miss, you'll land among the stars.
#39 pates
Z ciekawości, prosiłem go o napisanie kółka i krzyżyka w pythonie, oto rezultat.
# Inicjalizacja planszy gry
board = [["_", "_", "_"],
["_", "_", "_"],
["_", "_", "_"]]
# Funkcja do wyświetlania planszy na ekranie
def print_board(board):
for row in board:
print(" ".join(row))
# Funkcja sprawdzająca, czy ktoś wygrał grę
def check_win(board):
# Sprawdzenie wierszy
for row in board:
if row[0] == row[1] == row[2] and row[0] != "_":
return row[0]
# Sprawdzenie kolumn
for col in range(3):
if board[0][col] == board[1][col] == board[2][col] and board[0][col] != "_":
return board[0][col]
# Sprawdzenie przekątnych
if board[0][0] == board[1][1] == board[2][2] and board[0][0] != "_":
return board[0][0]
if board[0][2] == board[1][1] == board[2][0] and board[0][2] != "_":
return board[0][2]
# Jeśli żadna z powyższych sytuacji nie została spełniona, nikt nie wygrał
return None
# Główna pętla gry
while True:
# Wyświetlenie planszy
print_board(board)
# Pobranie współrzędnych ruchu gracza
x, y = input("Podaj współrzędne ruchu (x y): ").split()
x, y = int(x), int(y)
# Upewnienie się, że wybrane współrzędne są puste
if board[x][y] != "_":
print("To pole jest już zajęte, wybierz inne.")
continue
# Wykonanie ruchu gracza
board[x][y] = "X"
# Sprawdzenie, czy gracz wygrał
winner = check_win(board)
if winner is not None:
print("Gracz", winner, "wygrał!")
break
# Wykonanie ruchu komputera
# (na razie zostanie wygenerowane losowe pole)
while True:
x, y = random.randint(0, 2), random.randint(0, 2)
if board[x][y] == "_":
#40 pates
Albo coś takiego.
import numpy as np
import sounddevice as sd
# Częstotliwość dźwięku w Hz
frequency = 440
# Czas trwania dźwięku w sekundach
duration = 1
# Liczba próbek na sekundę
sample_rate = 44100
# Generowanie dźwięku
t = np.linspace(0, duration, int(duration * sample_rate))
waveform = np.sin(2 * np.pi * frequency * t)
# Odtworzenie dźwięku
sd.play(waveform, sample_rate)