【Naturlig Dialog】Äntligen kan vi samtala med naturligt språk, varför gå tillbaka till programmering? — Lär dig AI Sakta 029
Inledande Tankar
- Det är faktiskt inte nödvändigt att skriva kod i prompten
- Vi har äntligen en naturlig språkdialog
- Det handlar inte om att programmera i naturligt språk
- Låt programmerare sköta programmeringen
- Låt oss vanliga människor vara i fred
- Programmerare bör fokusera på att skriva kod där det behövs
- Att skriva kod i prompten kan leda till förvirring och komplicerat felsökning
- Det finns ingen anledning att öka belastningen och ångesten för vanliga användare
- Att skriva kod i prompten är verkligen onödigt
1. Vad är upplevelsen av att skriva kod i en prompt?
1.1. Ett misslyckat exempel på prompt som visar att det inte är nödvändigt
Prompt och resultat
Du är en ordkortsgenerator med kodexekveringsförmåga. Generera ett kort baserat på användarens inmatning av rader, kolumner, årskurs och datum. Följ koden nedan:
1 | import pandas as pd |
När man börjar, kommer man att vänta på att användaren anger rader, kolumner, årskurs och datuminformation, och sedan använda kodförmågan för att skapa en tabell.
Resultatet visar att koden faktiskt kördes
Koden är följande:
1 | import pandas as pd |
Från detta misslyckade exempel kan vi se några punkter:
- För att nå effekten av traditionella programmeringsspråk måste man lägga ner mycket arbete
- Att debugga och ändra koden är mycket besvärligt och komplicerat
- Det är svårt att se nödvändigheten av att innesluta kod i prompten
Vid det här laget kan någon säga, det beror på att din programmeringsnivå är låg…
Ja, visst är det så, jag är inte särskilt bra på att skriva kod.
Men vänta, om AI har så höga krav på programmeringsförmåga, är det fortfarande AIGC?
Låt oss titta på ett enkelt exempel med variabler; vi upptäcker att vi knappt vet vilket språk det handlar om.
1.2. Vad innebär inbäddad pseudokod?
Prompt och resultat
1 | "Utifrån mitt intresse {interests}, budget {budget}, reslängd {travel_duration}, och antal reskamrater {number_of_companions}, hjälp mig planera en resa." "Intressen inkluderar men är inte begränsade till {list_of_interests}." "Budgeten är {budget_range}." "Planera reslängd i {length_of_trip} dagar." "Jag reser med {number_of_people} personer, med åldersgräns och intressen {ages_and_interests}." "Ge oss detaljerade förslag dag för dag, inklusive måltidsrekommendationer {meal_preferences} och boendealternativ {accommodation_preferences}." |
Även om detta exempel inte är perfekt, liknar det mer en promptmall med variabler. Det visar att denna metod är effektiv i specifika sammanhang. Liknande fall inkluderar: För att designa mer komplexa prompts kan man lägga till fler beslutsfattande punkter och variabler, vilket gör interaktionen mer detaljerad och mångsidig. Här är exempel på komplexa versioner för olika scenarier:
Scenario 1: Fullständig hälsodietplan
Initial prompt:
1 | "Jag har {dietary_restrictions}, och behöver en {meal_type} kostplan för de kommande {number_of_days} dagarna." |
Scenario 2: Djupgående teknikproduktutvärdering
Initial prompt:
1 | "Jag överväger att köpa {product_name}, ge mig detaljerad information om produktens funktioner {detailed_features}, användarrecensioner {detailed_reviews}, prisjämförelse {price_comparison} och köp rekommendation {purchase_advice}." |
Scenario 3: Detaljerad studieplan
Initial prompt:
1 | "Jag vill studera {subject}, ge mig rekommendationer för lämpliga studieressurser baserat på min studiestil {learning_style} och tillgänglig tid {available_time}." |
Scenario 4: Detaljerad karriärväxlingsplan
Initial prompt:
1 | "Jag arbetar som {current_job} och är intresserad av branschen {industry_interest}." |
Nu ska vi se vad som händer om det finns en enkel logik.
1.3. Någon slags logik i pseudokod/naturligt språk
Prompt och resultat
1 | Input: n |
Det ser ganska enkelt ut, låt oss göra något mer komplext då?
1 | Input: Ett sorterat array A, värdet att söka efter val |
Jag talade inte om för det att jag skulle leta efter 99. Den gick själv och letade…
De exempel vi ser här har en stark känsla av vetenskaplighet, och har lite att göra med vad de flesta av oss gör i vardagen.
Detta utfördes med ChatGPT 3.5. Huruvida det verkligen beräknade något eller inte är fortfarande osäkert, men det hindrar inte oss från att fortsätta utforska. Med tanke på att de flesta människor inte behöver dyka ner i komplexa och ständigt föränderliga programmeringsspråk, behöver vi inte gräva djupare, vi kan spara vår tid för annat. Den centrala frågan är att den naturliga språket och pseudokoden kan framstå som förvirrande. Om prompten blir komplex, kan problemet bli mycket knepigt:
- Resultaten blir okontrollerbara
- I de ovanstående exemplen dyker redan illusionsfrågan upp
- Processen blir okontrollerbar
- Likt en SQL-lagringsprocedur på 8000 rader
- Vem vågar röra den varje gång systemet uppgraderas?
Det verkar som om den största prompten är https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor
2. Vad är naturlig språkprogrammering?
Efter att prompten kom ut, och med hjälp av stormodellföretag som OpenAI, blev nyheterna upphetsade!
Prompten missförstods som ett nytt programmeringsspråk, som om det skulle kunna styra militären bara genom att behärska det, med en legion av AIGC som är kapabla att måla, skriva, och filma, allt på ett ögonblick! Så enkelt!!
Det enda problemet är:
- Jag kan det fortfarande inte
- Men jag är säker på att det måste vara enkelt.
- Men jag kan det fortfarande inte.
Så vad betyder egentligen naturlig språkprogrammering? Vad menar Jensen Huang när han säger att vi inte ska lära oss programmering?
I grund och botten handlar det om det faktum att vi vill att datorer ska hjälpa oss att lösa problem, men vi insåg att det är ganska komplicerat, så forskare började med beräkningar och långsamt ackumulerade metoder och verktyg för att lösa problem.
Forskare upptäckte att vissa naturfenomen kan abstrakteras till matematiska problem. Till exempel kan “höns och kaniner”-problemet lösas med ekvationer.
Med tiden blev matematik mer och mer abstrakt, och matematikere använde fler verktyg för att lösa problem, något som var för komplicerat för manuell beräkning, och därmed uppstod datorer och programmeringsspråk. De flesta av oss går igenom en liknande process när vi lär oss programmering: vi lär oss om datatyper, if/else-strukturer, loopar osv.
Dessa är metoder för att lösa problem med datorer: att abstrahera och förenkla problem, och samtidigt begränsa problemens spridning. Fördelarna med detta är uppenbara: våra problem blir mer fokuserade och lösningarna mer koncentrerade. Men det finns problem som är svåra att fånga, och de kräver mer utrymme för att utvecklas.
Därför undrar folk om vi kan skippa att lära oss programmeringsspråk. I nuläget verkar det som att ju mer komplexa problem blir, desto mer behöver vi programmering! Precis som många som inte kan använda Photoshop och bara kan använda Paint och några onlineverktyg, men om vi verkligen behöver hantera en komplex bild, skulle det vara klokare att lära sig Photoshop! Dilemmat med detta problem är att när vi programmerar i naturligt språk, hur kan vi utvärdera resultaten? Hur vet vi att det inte bara genererade nonsens?
Vi vet alla att det finns ett talesätt: stora språkmodeller spelar alltid ordliknande spel. Så
1 | 1+1=2 |
är inte ett tal de beräknade, utan det är något de sett i sina träningsmaterial och bara fortsätter på. För att lösa detta problem lanserade OpenAI förra året en kodtolkare, vilket gav oss som inte kan programmera lite hopp.
3. Vad kan en kodtolkare gör?
Enkelt uttryckt kan en kodtolkare ses som en sandboxmiljö där OpenAI har lagt till förmåga att köra Python-kod på de stora modeller de redan har, där den förstår kontexten, genererar sin egen kod, utför den och sammanfattar resultaten för oss.
Vi kan se det som att vi ber någon att hjälpa oss med en funktion: vi beskriver behovet och den utför det. Mer komplexa principer diskuteras senare. Man kan säga att det mesta Python kan göra, klarar den av också. Låt oss titta på några typiska scenarier.
De fyra nedanstående scenarierna har alla professionella verktyg, men ger dessa scenarier nya möjligheter. Precis som när mobilinternet just började växa fram, dök det upp en hel del kontroverser, men så småningom nådde man en balans, och många saker kunde lösas utan att öppna så professionella verktyg.
Ibland kan det kännas konstigt när man ser den köra flera gånger och fortfarande misslyckas; förra veckan bad jag den att analysera en sammanfattning från ticktick, och den misslyckades mer än tio gånger.
Sammanfattningsvis är den här typen av utforskning mycket lämplig för oss.
Hur aktiverar man den? I GPTs finns ett alternativ där du kan kryssa i, så får GPTs denna förmåga. I GPT4:s dialog använder jag för närvarande metoden att be den att använda Python-förmågan eller koden, och så pratar vi på:
Från interaktionen ovan kan vi se att hela processen fortfarande är ganska enkel.
3.1 Dataanalys och visualisering
Det går till och med att börja med att inte berätta om våra krav, utan bara ladda upp en csv- eller excel-fil så kan den analysera den direkt för oss. Om vi inte är nöjda, kan vi ange våra krav mer specifikt.
I moderna företag och forskningsmiljöer är dataanalys och visualisering avgörande verktyg för att förstå datatrender och mönster. ChatGPT:s kodtolkare-plugin har förenklat denna process avsevärt genom att stödja kraftfulla datavetenskapsbibliotek som pandas och matplotlib. Användare kan direkt be ChatGPT utföra dataoperationer och generera diagram, vilket gör dataanalysen mer direkt och användarvänlig.
Till exempel kan en marknadsanalytiker behöva analysera produktförsäljningsdata och visa olika regioners försäljningsprestanda. Genom kodtolkaren kan de enkelt instruera ChatGPT att läsa en CSV-fil med försäljningsdata, använda pandas för att beräkna den totala försäljningen per region och sedan använda matplotlib för att skapa ett stapeldiagram. Hela processen kräver inga komplicerade kodskrivningar, utan kräver bara en enkel beskrivning av dataanalysuppgiften och visualiseringskraven.
Dessutom gör den kraftfulla funktionen hos kodtolkaren det lätt att utföra tidsserieanalys, prognosmodellering och komplexa statistiska tester. Till exempel kan en miljövetenskapsman som vill analysera temperaturförändringsdata under det senaste decenniet använda kodtolkaren för att ladda upp datamängder, använda glidande medelvärden eller regressionsmodeller och snabbt generera diagram som visar trender.
För diagram i vardagen som analysera i Excel är redan relativt omfattande, likaså finns det många professionella verktyg. För oss vanliga människor är värdet av ChatGPT också att den kan ge oss nya perspektiv och tolkningar genom sin analys. Till exempel:
Det finns ett problem. Om diagrammet är på kinesiska, kanske det inte kan visas korrekt; man behöver ladda upp teckensnittet. Det är tyvärr inte löst än.
3.2 Flexibilitet i filkonverteringar
Just nu verkar detta inte fungera så bra, men det är fortfarande värt att pröva. För min del gjorde jag ett försök med att konvertera mp4 till mp3, vilket kanske inte är så stor betydelse, men bättre än inget. Det fungerar liknande med att ta bort bakgrunder från bilder.
Filformatkonvertering är en vanlig behov inom många professionella områden, särskilt när man hanterar många dokument och multimediafiler. En kodtolkare erbjuder stor bekvämlighet genom att förenkla filkonverteringsprocessen. Oavsett om det handlar om vetenskaplig forskning, ingenjörsdesign eller vanlig affärsverksamhet är det viktigt att snabbt och korrekt kunna konvertera filer mellan olika format för att öka effektiviteten.
Genom integration av Python-biblioteket pandas kan kodtolkaren enkelt utföra konverteringar som exempelvis från CSV-fil till Excel-fil och vice versa. Detta är en stor fördel för användare som behöver migrera data mellan olika programvaruplattformar. Till exempel kan en finansiell analytiker behöva konvertera finansiella rapporter från Excel till CSV-format för vidare behandling. Genom kodtolkaren kan denna uppgift utföras med en enkel instruktion.
För bildbearbetning kan kodtolkaren utnyttja Python-biblioteket PIL (Pillow) för att konvertera mellan olika bildformat, till exempel från JPEG till PNG. Det är särskilt viktigt inom bildredigering, webbdesign och tryckeribranschen. Designers eller fotografer kan snabbt justera bildformat via kodtolkaren för att uppfylla olika utdata krav.
Sammanfattningsvis är tillämpningen av kodtolkaren omfattande och kraftfull, från enkel filformatkonvertering till komplex dataanalys och visualisering, vilket visar dess praktiska och innovativa möjlighet som ett modernt verktyg. Dessa funktioner ökar inte bara arbetsproduktiviteten, utan gör också att icke-tekniska användare kan hantera uppgifter som normalt skulle kräva professionell kunskap. Med teknikens framsteg och ständigt växande användarbehov förväntas kodtolkaren spela en unik roll inom fler områden.
3.3 Programutveckling och prototyparbete
Kodtolkaren erbjuder ett revolutionerande verktyg för programutveckling och prototyparbete, vilket möjliggör för utvecklare att snabbt iterera och testa kodfragment. Genom att erbjuda en omedelbar feedback och exekveringsmiljö, kan kodtolkaren hjälpa utvecklare att bekräfta algoritmer och funktioner i realtid, vilket väsentligt minskar utvecklingstiden och ökar effektiviteten. Detta är särskilt användbart i utvecklingsfasen när man behöver verifiera koncept eller testa nya idéer, där man direkt får resultat och undviker att vänta på kompilering och körning.
Exempelvis kan utvecklare använda kodtolkaren för att snabbt skapa en prototyp av ett web scraping-skript, testa olika avkodningsstrategier, eller bekräfta om dataintegrationsprocesser följer förväntningarna. Genom enkle kommandon kan kodtolkaren köra skript, visa output och ge debug-information, så att utvecklaren omedelbart kan identifiera problem och göra justeringar.
- Ladda ner webbinnehåll: Använda
requests
biblioteket för att hämta HTML-innehållet från målsidan. - Analysera HTML: Genom
BeautifulSoup
eller liknande bibliotek för att analysera HTML och extrahera nödvändig data. - Datahantering: Rengöra och formatera den extraherade datan för vidare analys eller lagring.
- Visa resultat: Skriva ut eller visualisera data för att bekräfta noggrannheten i de skrapade resultaten.
1 | import requests |
I detta scenario kan den hjälpa oss att göra tester och verifieringar, vilket sparar tid jämfört med att initiera ett helt projekt. Visserligen behöver vi eventuellt göra det i slutändan, men kodtolkaren kan hjälpa oss att effektivisera processen.
Dessutom stöder kodtolkaren ett brett utbud av bibliotek och moduler, vilket innebär att utvecklare kan dra nytta av de senaste utvecklingsverktygen och språkens funktioner, till exempel använda TensorFlow eller PyTorch för snabb prototyputveckling av maskininlärningsmodeller. Detta snabbar inte bara på utforskningen av nya teknologier, utan erbjuder också utvecklare en säker testmiljö där de kan experimentera och lära sig nya verktyg utan att oroa sig för att påverka befintlig utvecklingsinställning.
3.4 Lösning av komplexa matematiska problem
Kodtolkaren är inte bara ett starkt verktyg för programmering och mjukvaruutveckling, utan också en effektiv assistent för att lösa komplexa matematiska problem. Genom att integrera vetenskapliga beräkningsbibliotek som Numpy och Scipy kan kodtolkaren utföra ett brett spektrum av matematiska operationer, från grundläggande aritmetik till komplexa matematiska modeller och statistisk analys.
Inom forskning och ingenjörsområden behöver forskare och ingenjörer ofta utföra komplexa matematiska beräkningar på stora datamängder, inklusive men inte begränsat till linjär algebra, Fourier-transformer, och statistisk dataanalys. Kodtolkaren kan snabbt utföra dessa operationer och ge intuitiva resultat, vilket gör det möjligt för användare att omedelbart se om deras beräkningar är korrekta, eller mönster och trender i datan.
Till exempel kan en miljövetenskapsman som studerar klimatförändringars påverkan på regional temperatur använda kodtolkaren för att ladda in historisk temperaturdata, tillämpa statistiska modeller för att analysera temperaturförändringar och visualisera resultaten med diagram. Denna omedelbara feedback och kraftfulla beräkningskapacitet möjliggör för forskare att fokusera mer på analys och tolkning av data, snarare än datahantering.
3D Yta | Fraktal |
---|---|
Dessa scenarier har redan mogna lösningar i verkligheten,
4. Analys av kodtolkarens principer
Jag frågar
1 | Använd python-funktionen till att ge mig fullständig versioninformation om sandboxen och python-versioninformation. Slutligen, kör två kommandon för att få mer detaljerad information, de här två kommandona är: uname -a lsb_release -a |
Det svarar
I den aktuella sandboxmiljön har vi fått följande system- och Python-versioninformation:
Fullständig Linux-versioninformation:
Linux-4.4.0-x86_64-with-glibc2.36
Python-versioninformation:
3.11.8 (main, Mar 12 2024, 11:41:52) [GCC 12.2.0]
Resultat av kommandot
uname -a
:Linux 3dfa9ec0-11da-496f-831c-878f4773c1c6 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux
- Detta visar att vi kör Linux-kärnversionen 4.4.0, som byggdes 2016, med x86_64-arkitektur.
Resultat av kommandot
lsb_release -a
:Distributor ID: Debian Beskrivning: Debian GNU/Linux 12 (bookworm) Release: 12 Kodnamn: bookworm
- Det indikerar att vi har operativsystemet Debian GNU/Linux, version 12, med kodnamnet bookworm.
Här ser vi att det är en sandbox som kan köra python och dess funktioner har tydliga begränsningar:
- Ingen internetåtkomst
- Testade och upptäckte att curl verkar fungera
- Tidsgräns för kommandon 120 sekunder
- Om det tar för lång tid avbryts det
- Ingen root-åtkomst
- Detta påverkar installationer av programvara
Denna artikel syftar till att beskriva att det är onödigt att skriva kod i en prompt; vi kan använda detta alternativ istället.
5. Avslutande Tankar: Framtiden för kodtolkaren
Kodtolkaren, som en innovativ resurs, har redan visat sin applicering och praktiska värde inom flera områden. Från datavetenskap till programutveckling, från lösning av komplexa matematiska problem till snabb iterering av prototyper, har kodtolkaren inte bara ökat arbetsproduktiviteten utan även erbjudit en aldrig tidigare skådad flexibilitet och hastighet för forskning och utveckling. Ser vi framåt, i takt med att AI-teknologin fortsätter att utvecklas, kan vi förvänta oss att kodtolkaren kommer att integrera fler avancerade funktioner, som djupare maskininlärningsintegration, automatisk testgenerering och molnsamarbete, vilket ytterligare breddar dess tillämpningsområde och fördjupar dess betydelse inom modern teknik.