Author Topic: ChatGPT is WRONG!  (Read 2748 times)

0 Members and 1 Guest are viewing this topic.

Offline Kawa

Re: ChatGPT is WRONG!
« Reply #15 on: May 27, 2023, 02:27:03 AM »
If you're writing a Pong clone and your ball bounces wrong because you used DX instead of DY, I'd say the cause would be pretty obvious. Not the best simplistic example you could've come up with. But please, try again.

Offline cosmicr

Re: ChatGPT is WRONG!
« Reply #16 on: May 27, 2023, 07:15:06 AM »
If you're writing a Pong clone and your ball bounces wrong because you used DX instead of DY, I'd say the cause would be pretty obvious. Not the best simplistic example you could've come up with. But please, try again.

Lol, if you don't want to understand my example then my words are lost on you.

You don't have to like it, but chatgpt and it's applications are here to stay. I'm sorry you're so skeptical.

Offline Kawa

Re: ChatGPT is WRONG!
« Reply #17 on: May 27, 2023, 07:41:09 AM »
I don't understand your example? I understand it perfectly well thank you. If you have a Pong clone with DX and DY variables to control the ball, it could take you all of ten seconds tops to see the problem.

Assume for a second that DY is positive down and DX is positive right. Your ball is going straight down and to the right in a perfect diagonal, so DX=1, DY=1. You find that the ball's Y is approaching the bottom edge. So you bounce it back up, right? So you have to invert DY, making it negative, to bounce up and to the right. Following your own example, you typed DX instead of DY.

You run the game, the ball goes down and to the right, approaches the bottom edge of the playfield... it goes straight through, disappearing down and to the left.

You could see that in five seconds, and immediately know 1. that you got the wrong delta variable and 2. where that'd be. Even more so if there's a nice decorative border to give you a little more time to see the ball go off like that.

I may be bad at trigonometry but I understand your example just fine.

Offline cosmicr

Re: ChatGPT is WRONG!
« Reply #18 on: May 29, 2023, 11:20:12 PM »
No you still don't understand lol.

Imagine my example, but instead of pong, it's something much more complicated, where the error isn't implicit in the output. That's why I said it was simplistic.

Nevermind, noone is forcing you to like AI models, your loss really. :D

Offline Kawa

Re: ChatGPT is WRONG!
« Reply #19 on: May 30, 2023, 08:11:45 AM »
I do understand your example. You cannot possibly deny that. You yourself admit your example is simplistic, but won't (can't?) come up with a better example.

I've been claiming you don't need AI and gave several practical examples, which you conceded were true (at least "in its current form"). You're the one claiming AI is this absolutely wonderful tech that'll help devs, so the burden is on you to support your argument in turn. But all I've seen so far to that effect is a feeble attempt involving Pong ending in "no you're just blind to the brilliance".

So... whose loss?

Offline cosmicr

Re: ChatGPT is WRONG!
« Reply #20 on: May 30, 2023, 11:34:21 PM »
I'm getting the error: "; error: bad argument type: lselsetp nil"

ChatGPT found the error in this code and fixed it in 20 seconds. It didn't even need to know what language this is (it's AutoLisp BTW).

I could have spent half a day combing through the code and debugging it, trying to understand it's function, learning about the language, or I can use AI tools to find and fix it. It's a Game Changer.

Code: [Select]
(defun c:dsp_pipes_v8 (/ ss_pts count MH_list entname ent_us_mh
      ptObj PT_Desc PT_strlen MH_name
      dcl_id item selected:name
      sslen stat ds_east ds_north ds_elev
      ds_cords ds_inv Dia Mat pipe_name
      pipe_Con pipe_Type us_east us_north
      us_elev us_cords lgth Sub_Name Stage_No
      Design_Co Plan_No Const_Co Const_Date
      source t_name osm result
      )
 
(if (= (ade_odtabledefn "Pipes-v802") nil)
(progn
(alert "\nTable not found - Pipes-v802: \n \nPlease ensure that you are using the v802 Dspec template")
(exit)
) ;_ end of progn
) ;_ end of if


(setq osm (getvar "osmode"))
(setvar "osmode" 0)
 
;;get the list of available pits

(setq ss_pts (ssget "X" '((0 . "AECC_COGO_POINT"))))

(setq count 0
sslen (sslength ss_pts)
MH_list (list "")
) ;_ end of setq

;;get the names from codes 321
(while (< count sslen)
(setq entname   (ssname ss_pts count)
ptObj     (vlax-ename->vla-object entname)
PT_Desc   (vlax-get ptObj 'RawDescription)
PT_strlen (strlen PT_Desc)
count     (1+ count)
) ;_ end of setq

(if (and (= (substr PT_Desc 1 3) "321")
(> PT_strlen 4)
) ;_ end of and

(progn
(setq MH_name (substr PT_Desc 5))

(if (and (/= MH_name "")
(/= MH_name "IN")
(/= MH_name "OUT")
(/= MH_name "MW")
) ;_ end of and
(setq MH_list (append MH_list (list MH_name)))
) ;_ end of If
) ;_ end of progn
) ;_ end of if
) ;_ end of while

(setq MH_list (acad_strlsort (cdr MH_list))
selected:name (nth 0 MH_list)
)

;;-----------------------------------------------
;;select the downstream pit

;;now set up the dialog box 
(setq dcl_id (load_dialog "Dspec_v8-DrawPipes.dcl"))

(if (not (new_dialog "dspec_ds" dcl_id))
(progn
(alert "error finding dcl")
(exit)
) ;_ end of progn
) ;_ end of if
 
(start_list "dn_pit")

(foreach item MH_list
(add_list item)
) ;_ end of foreach

(end_list)
 
;;(set_tile "dn_pit" MH_name)
 
(action_tile "dn_pit" "(save_name)")
(action_tile "Pick" "(done_dialog 3)(unload_dialog dcl_id)")
(action_tile "accept" "(done_dialog 1)(unload_dialog dcl_id)")
(action_tile "cancel" "(done_dialog 2)(unload_dialog dcl_id)")
   
(setq stat (start_dialog))
(unload_dialog dcl_id)

(setq entname nil)

;;;(princ (strcat "  ds menu option : " (itoa stat)))


(if (= stat 1)
(progn
;;; OK has been pressed.  The save_name function has set selected:name as the element in the list.
(setq DS_name selected:name)

;; Find that manhole in the cogo points.
;;-----------------------------------------------
;;now we have the pit name we can get the point details
(setq ss_pts (ssget "X" '((0 . "AECC_COGO_POINT"))))

(setq count 0
sslen (sslength ss_pts)
) ;_ end of setq

;;get the names from codes 321
(while (< count sslen)

(setq entname (ssname ss_pts count)
ptObj   (vlax-ename->vla-object entname)
PT_Desc (vlax-get ptObj 'RawDescription)
count (1+ count)
) ;_ end of setq

(if (= PT_Desc (strcat "321 " DS_name))
(progn
(setq ds_east  (vlax-get ptObj 'Easting)
ds_north (vlax-get ptObj 'Northing)
ds_elev  (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
ds_cords (list ds_east ds_north)
) ;_ end of setq
) ;_ end of progn
) ;_ end of if
) ;_ end of while
) ; end progn
) ;_ end of if

(if (= stat 2)
;;; Cancel has been pressed
(exit)
) ;_ end of if

(if (= stat 3)
;select the point manually to get the manhole name
(progn
(setq entname nil)

(while (= entname nil)
(setq entname (car (entsel "\nSelect Pit cogo point (for MH name) : "))
ptObj (vlax-ename->vla-object entname)
PT_Desc (vlax-get ptObj 'RawDescription)
PT_strlen (strlen PT_Desc)
) ;_ end of setq

(if (and (= (substr PT_Desc 1 3) "321")
(> PT_strlen 4)
) ;_ end of and
(progn
(setq selected:name (substr PT_Desc 5)
ds_east  (vlax-get ptObj 'Easting)
ds_north (vlax-get ptObj 'Northing)
ds_elev  (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
ds_cords (list ds_east ds_north)
) ;_ end of setq

) ;_ end of progn
(progn
(alert "Error - no name found - try again")
(setq entname nil)
) ;_ end of progn
) ;_ end of if
) ;_ end of while

(setq DS_name selected:name)
) ; end progn
) ;_ end of if


(princ (strcat "Downstream pit selected : " DS_name))

;;-----------------------------------------------
;;now we have the pit name we can get the point details



;;zoom to the pit
(command "zoom" "c" ds_cords "10")

;;-----------------------------------------------
;;select the invert and object data
 
  (setq t_name "Pipes-v802")

;;; Changed 2019-10-23.  If object data isn't attached to this cogo point,
;;; it is to skip over the data.
;;; set the values blank for now.
(setq entname   (car (entsel "\nSelect the Invert point (code 306) : "))
ptObj   (vlax-ename->vla-object entname)
ds_inv   (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
) ;_ end of setq

;;; Changed 2019-10-23.  If object data isn't attached to this cogo point,
;;; it is to skip over the data.
;; This is an error checking function.  If it can't find the element in the object data table, it assigns a blank
;;   this didn't work, because the error was on there being no object table attached.
;; string to it.
;; set it to "XX"
;; set it to "" if there is an error
;; set it to the object data if there is no error.
;;;(setq Dia "XX")
    ;;;(if (vl-catch-all-error-p (setq result (vl-catch-all-apply '(ade_odgetfield entname t_name "Dia_width" 0)))) (setq Dia "") )
;;;(if (= Dia "XX") (setq Dia   (ade_odgetfield entname t_name "Dia_width" 0)))

;;; Changed 2019-10-23.  If object data isn't attached to this cogo point,
;;; it is to skip over the data.
;;; Find if the object data table is attached to this file.  If so, read the data.
(setq tbls (ade_odgettables entname))
(setq str_all (apply 'strcat tbls))
(setq i_find (vl-string-search str_all t_name 0))
(if (null i_find)
(progn
(setq Dia   (ade_odgetfield entname t_name "Dia_width" 0))
(setq Mat   (ade_odgetfield entname t_name "Material" 0))
(setq pipe_Con  (ade_odgetfield entname t_name "Pipe_Con" 0))
(setq pipe_Type (ade_odgetfield entname t_name "Type" 0))
)
)


;;-----------------------------------------------
;;select the UP stream pit

(setq selected:name (nth 0 MH_list))

;;now set up the dialog box 
(setq dcl_id (load_dialog "DRN Drawpipes.dcl"))
(if (not (new_dialog "dspec_us" dcl_id))
(exit)
) ;_ end of if
 
(start_list "up_pit")

(foreach item MH_list
(add_list item)
) ;_ end of foreach
(end_list)
 
(action_tile "up_pit" "(save_name)")
(action_tile "Pick" "(done_dialog 3)(unload_dialog dcl_id)")
(action_tile "accept" "(done_dialog 1)(unload_dialog dcl_id)")
(action_tile "cancel" "(done_dialog 2)(unload_dialog dcl_id)")
   
(setq stat (start_dialog))
(unload_dialog dcl_id)

(setq entname nil)
   

(if (= stat 1)
;;; OK has been pressed.  The save_name function has set selected:name as the element in the list.
(progn
(setq US_name selected:name)

;; Find that manhole in the cogo points.
;;-----------------------------------------------
;;now we have the pit name we can get the point details
(setq ss_pts (ssget "X" '((0 . "AECC_COGO_POINT"))))
(setq count 0
sslen (sslength ss_pts)
) ;_ end of setq

;;get the names from codes 321
(while (< count sslen)
(setq entname (ssname ss_pts count)
ptObj   (vlax-ename->vla-object entname)
PT_Desc (vlax-get ptObj 'RawDescription)
count (1+ count)
) ;_ end of setq

(if (= PT_Desc (strcat "321 " US_name))
(progn
(setq us_east  (vlax-get ptObj 'Easting)
us_north (vlax-get ptObj 'Northing)
us_elev  (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
us_cords (list us_east us_north)
) ;_ end of setq    
) ;_ end of progn
) ;_ end of if
) ;_ end of while
) ; end progn
) ;_ end of if

(if (= stat 2)
;;; Cancel has been pressed
(exit)
) ;_ end of if

(if (= stat 3)
;select the point manually to get the manhole name
(progn
(setq ent_us_mh nil)
(while (= ent_us_mh nil)
(setq ent_us_mh (car (entsel "\nSelect Pit cogo point (for MH name) : "))
ptObj (vlax-ename->vla-object ent_us_mh)
PT_Desc (vlax-get ptObj 'RawDescription)
PT_strlen (strlen PT_Desc)
) ;_ end of setq

(if (and (= (substr PT_Desc 1 3) "321")
(> PT_strlen 4)
) ;_ end of and
(progn
(setq selected:name (substr PT_Desc 5)
us_east  (vlax-get ptObj 'Easting)
us_north (vlax-get ptObj 'Northing)
us_elev  (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
us_cords (list us_east us_north)
) ;_ end of setq

) ;_ end of progn
(progn
(alert "Error - no name found - try again")
(setq ent_us_mh nil)
) ;_ end of progn
) ;_ end of if
) ;_ end of while

(setq US_name selected:name)

) ; end progn

) ;_ end of if

(princ (strcat "Upstream pit selected : " US_name))

;;zoom to the pit
(command "zoom" "c" us_cords "2")

;;-----------------------------------------------
;;select the invert and get its object data
   
(setq entname (car (entsel "\nSelect the Invert point (code 306) : "))
ptObj (vlax-ename->vla-object entname)
us_inv (atof (rtos (vlax-get ptObj 'Elevation) 2 2))
) ;_ end of setq

(if (= us_inv 0.0)
(alert "Error - Upstream elevation is zero")
)

;;if these values have already been saved they will be ignored
(if (or (= Dia "")  (= Dia nil))
(setq Dia (ade_odgetfield entname t_name "Dia_width" 0))
) ;_ end of if

(if (or (= Mat "")   (= Mat nil))
(setq Mat (ade_odgetfield entname t_name "Material" 0))
) ;_ end of if

(if (or (= pipe_Con "") (= pipe_Con nil))
(setq pipe_Con (ade_odgetfield entname t_name "Pipe_Con" 0))
) ;_ end of if

(if (or (= pipe_Type "")   (= pipe_Type nil))
(setq pipe_Type (ade_odgetfield entname t_name "Type" 0))
) ;_ end of if
   
;;then make sure the flow is downhill
(if (> ds_inv us_inv)
(progn
(alert "        Check the grade dude - it's flowing uphill      ")
(exit)
) ;_ end of progn
) ;_ end of if
   
;;draw the line
(command "-layer" "set" "02_Pipe_Sections" "")
(command "line"
(list us_east us_north us_inv)
(list ds_east ds_north ds_inv)
""
)

;;get the default object data from the pits
(search_pits)

(if (or (= nil ds_cords)
(= nil us_cords)
)
(progn
(alert "Error finding cords")
(exit)
)
)
 
;;add the object data 
(setq entname (entlast)
lgth (atof (rtos (distance ds_cords us_cords) 2 2))
)

;;attach record to pit
(if (= (ade_odaddrecord entname t_name) nil)
(progn
(alert "Error attaching object data - make sure Pipe-v802 table exists")
(exit)
)
)
 
;;(setq MH_name (strcase (getstring "\nEnter Manhole name, Kemosabe : ")))
(setq pipe_name (strcat DS_name " - " US_name))
(ade_odsetfield entname t_name "Pipe_No" 0 pipe_name)
 
(ade_odsetfield entname t_name "Up_Pit_No" 0 US_name)
(ade_odsetfield entname t_name "Dn_Pit_No" 0 DS_name)
(ade_odsetfield entname t_name "Sub_name" 0 Sub_Name)
(ade_odsetfield entname t_name "Stage_No" 0 Stage_No)
(ade_odsetfield entname t_name "DS_IL" 0 ds_inv)
(ade_odsetfield entname t_name "DS_Pipe_E" 0 ds_east)
(ade_odsetfield entname t_name "DS_PIpe_N" 0 ds_north)
(ade_odsetfield entname t_name "US_IL" 0 us_inv)
(ade_odsetfield entname t_name "US_Pipe_E" 0 us_east)
(ade_odsetfield entname t_name "US_Pipe_N" 0 us_north)
(ade_odsetfield entname t_name "Length" 0 lgth)
(ade_odsetfield entname t_name "Height" 0 Height)
(ade_odsetfield entname t_name "Design_Co" 0 Design_Co)
(ade_odsetfield entname t_name "Plan_No" 0 Plan_No)
(ade_odsetfield entname t_name "Const_Co" 0 Const_Co)
(ade_odsetfield entname t_name "Const_Date" 0 Const_Date)
(ade_odsetfield entname t_name "Rtn_period" 0 "5")
(ade_odsetfield entname t_name "Source" 0 Source)
(ade_odsetfield entname t_name "Comments" 0 "Nil")

;;these values comes from the 306 point's object data
(ade_odsetfield entname t_name "Dia_Width" 0 Dia)
(ade_odsetfield entname t_name "Material" 0 Mat)
(ade_odsetfield entname t_name "Type" 0 pipe_Type)
(ade_odsetfield entname t_name "Pipe_Con" 0 Pipe_Con)

(setvar "osmode" osm)
 
(princ)
   
) ;_ end of defun

I just don't think we should be so dismissive of something new.
« Last Edit: May 30, 2023, 11:42:28 PM by cosmicr »

Offline MusicallyInspired

Re: ChatGPT is WRONG!
« Reply #21 on: June 11, 2023, 02:04:04 PM »
I've been using ChatGPT off and on to help with C++ syntax and some Excel formulas. It's quite useful as long as you keep it to small blocks of code. I once asked it to write me an entire C++ program that performed the actions I specified and it did...but the more I added, the longer the program was and ChatGPT's output apparently can only be so long before it just....stops outputting. So I elected to ask it to write code in blocks instead and that was extremely useful for developing my FB-01/IMF SCI patch bank converters to its native sysex format that the FB-01 can understand. And also back again. It took me a while, but it would have taken me way way longer to do it myself (I still consider myself a novice programmer at best). Asking it to write small blocks of code for simpler functions also still puts you in the driver's seat for the overall design and flow of the program.

I also asked it about SCI one time by feeding it a link to the online SCI Documentation and questioning it on syntax and how certain functions are performed. Most of its responses were actually correct! I even had arguments with it about how a certain SCI function worked (something about speech triggering with DoSound or DoAudio) and it was actually correct and I was wrong. Considering SCI Script is not that well known and is so niche, it's kind of incredible that it could figure it out and get to know it somewhat at all enough to correct me on a bad assumption.

ChatGPT and AI is great as long as you're aware of its weaknesses. It is absolutely prone to hallucinations (outright lies) and you have to be wary of that. If you understand syntax (or any subject) enough and know what output/result you're shooting for and can recognize when ChatGPT gets it wrong, you can stay on top of it and it becomes an effective tool. You can really get a lot done a lot faster than if you're just working it out on your own or if you have to ask questions online and wait for responses. It's kind of a live search engine that can give very specific results to your exact needs rather than very broad responses that you have to sift through to find something actually useful or helpful sometimes (like a problem someone had on StackOverflow that's similar but not entirely the same as yours).

Not everything you read on the internet is true either, AI aside. And since AI is based on the database that is the internet, you have to be just as careful as before. I don't think the future of AI is in doing everything for you (which breeds laziness and reminds me of that TNG episode where this ancient advanced civilization was so advanced that they forgot how everything worked and tried to steal children from the Enterprise). I think the future of AI is in streamlining the work you do. If you just take everything it says for granted, well...



If you're writing a Pong clone and your ball bounces wrong because you used DX instead of DY, I'd say the cause would be pretty obvious. Not the best simplistic example you could've come up with. But please, try again.

Something like this, a silly user error that you missed, is something that AI could point out (with exceptions and caveats, of course, at least in its current state) while built-in syntax checkers can't because the syntax is technically correct. As long as you've described what you want your program to do to the AI and it understands your goal. And yes, that example would be pretty easy to diagnose and debug, but think of other more complex issues that are just hard to spot sometimes. It would draw your attention to them faster and those mistakes and oversights would be far less common in the future.
« Last Edit: June 11, 2023, 02:13:21 PM by MusicallyInspired »
Brass Lantern Prop Competition

Offline Collector

Re: ChatGPT is WRONG!
« Reply #22 on: June 11, 2023, 02:42:46 PM »
When the Bough Breaks
reminds me of that TNG episode where this ancient advanced civilization was so advanced that they forgot how everything worked and tried to steal children from the Enterprise). I think the future of AI is in streamlining the work you do. If you just take everything it says for granted, well...

"When the Bough Breaks"
KQII Remake Pic

Offline doomlazer

Re: ChatGPT is WRONG!
« Reply #23 on: June 13, 2023, 12:38:19 AM »
While machine learning probably isn't perfect for coding right now, there are creative uses that would currently be otherwise impossible without it. It's pretty amazing for A/V manipulation. The technology is to the point where you can create synthesized voices and generate new content - legal and ethical issues aside.

About a year ago I tried to generate a Gary Owens voice synth from exported SQ4 lines. I had issues because you really need to massage the data to get good results, but it's theoretically possible to create a decent model and produce a talkie version of SQ5 that sounds like Gary is narrating.

There are also voice-to-voice ML models that allow you to take existing audio and map it to another voice. As a proof of concept I was able to do the following in less than 30 mins:

- export message wavs from EQ1
- use UberDuck.com to map Mary O'Cleary's readings to Bevis' voice
- convert the wavs to uncompressed 8-bit in audacity
- import the new lines into EQ1

Here is the result: https://drive.google.com/file/d/1qf315bkTZ7SRWASQFraf0dhp2tJFUpIO/view
[you might need to download the video using the download icon in the top-right corner if it doesn't play in the browser.]

Not that I recommend UberDuck, it was only used out of convenience. I think they use the TacoTron ML model. IDK, it's been awhile so I might be wrong on that.

Still, the results are fairly impressive. I always reminds me of that scene in The Running Man (1987) where they fake Arnie's death.

Offline pmkelly

Re: ChatGPT is WRONG!
« Reply #24 on: June 13, 2023, 06:44:19 PM »
I recently came across this article talking about the use of AI to generate graphics for a 2D platform game. It's pretty cool.

https://generalrobots.substack.com/p/dimension-hopper-part-1


SMF 2.0.19 | SMF © 2021, Simple Machines
Simple Audio Video Embedder

Page created in 0.07 seconds with 23 queries.