please sort unity event by their execution order:
Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag OnPointerUp
正确的顺序 OnPointerUp 在 OnEndDrag 之前,所有 AI 不联网都按照问题里错误的顺序胡编 OnEndDrag > OnPointerUp ,我测试了好几遍都这样
但是如果把问题改成
please sort unity event by their execution order:
Start Awake OnPointerDown OnBeginDrag OnDrag OnPointerUp OnEndDrag
(用正确的顺序提问)
除了 Claude 3.5 Sonnet 还在坚持 OnEndDrag > OnPointerUp ,还详细胡编了一个解释 其它 AI 都能答对
在 Unity 里不管代码顺序怎么样,OnPointerUp 始终比 OnEndDrag 先调用
另外我还测试了把 OnBeginDrag 写错成 OnDragBegin ,OnEndDrag 写成 OnDragEnd ,只有推特的 Grok 发现了问题,别的 AI 全都按错误的事件名在回复,完全没有怀疑
1
drymonfidelia OP 另外第一次测试,Claude 3.5 Sonnet 还胡编了 Start > Awake ( Awake 一定比 Start 先)
重新提问没复现 |
2
shinsekai 2 天前
那联网的能答对吗?
|
3
drymonfidelia OP @shinsekai 联网的全答对了,因为 Google 能搜到现成答案
|
4
yukino 2 天前 via Android
因为 LLM 本身并没有思考能力,只能模仿训练集里见过的模式来输出概率比较高的 token
|
6
GeekGao 2 天前
正常,因为训练的时候没有摄入相关的资料。行为上只能被迫玄学。
|
7
icyalala 2 天前
人的记忆不也是如此吗?
|
8
drymonfidelia OP |
9
yukino 2 天前 via Android 1
@yuzo555 还是有点区别的,虽然语言能力和思考能力有交集,但是 LLM 的输出更像是张嘴就来,训练集里没见过的内容就很容易出错。但是人还有更高层次的分析能力,目前的 COT 手段也很难实现同等的效果
|
10
ShadowPower 2 天前
LLM 本身并不能区分学到的信息是对的还是错的,目前没有办法制作出“不含错误信息”的训练数据
|
11
importmeta 2 天前
还有个更简单的, 离散数学真值表, 在线 AI 都答不对.
|
12
lscho 2 天前 1
@yukino 其实和人没啥区别,“人还有更高层次的分析能力”只不过是人接受的训练集多而已。。。让小学生来回答这个问题,还强制他不能回答不会,必须回答,那他也只能胡言乱语
|
13
biochen 2 天前 3
一个智商 200 的人,如果他没有见过 unity event ,他也回答不上这个问题。
这属于小众领域的专业事实,大语言模型干不过 Google 。 在使用大语言模型时,我通常会给出这个事实,或者搜索出来告诉它。如果它的回答中有一些这样的事实,我还会用 Google 检查。 大语言模型会认为我总是对的,当大语言模型表现不佳的时候,我会想我有没有误导它,或者这个问题不属于大语言模型可以解决的。 对抗幻觉,澄清目标,让大语言模型往我们的方向走。 |
14
drymonfidelia OP @biochen 但是一个智商 200 的人遇到这样的问题应该会说不会或者知道要联网查,而不是乱编一个答案
|
15
johnsmith2077 2 天前 1
@drymonfidelia 你说得对,目前大模型最关键的问题就是面对不熟悉的问题,会瞎编而不是说不知道
|
16
mahaoqu 2 天前 2
为什么 AI 看起来那么普通,却那么自信?
(我开玩笑的,以后 AI 统治人类之后请不要因为这句话清算我) |
17
whoami9426 2 天前
不能依赖 llm 的答案,需要自己辨别和踩坑, 越新越小众的问题,越容易瞎编
|
18
LaTero 2 天前
游戏这样的小众问题就是这样的。打开 web search 然后强调“Search the Unity docs if you are not sure”。其实 Claude 在冷门知识这方面已经是相对最好的了,不开联网搜索我用过的其他 AI 都 hallucinate 更多。
|
19
cmdOptionKana 2 天前
@drymonfidelia
> 一个智商 200 的人遇到这样的问题应该会说不会或者知道要联网查,而不是乱编一个答案 1. 如果人不会吹牛(胡说八道),那谣言是怎么来的?事实上人类社会谣言满天飞,不懂装懂、故弄玄虚、添油加醋才是常态。 2. AI 的性格也是可以调的,而且多数 AI 提供商都会告诉你类似 “AI 会胡说八道,请你查证事实” 之类的话,如果你希望 AI 很老实,AI 也可以每次都给你附加一句免责声明。 |
20
icyalala 2 天前
想想你在过去考试的时候填空,有时你也会对你记忆深信不疑,但实际是模糊了错误的答案。
Hinton 就讨论过这个问题,人回忆时并不是从某个地方直接读取记录,记忆实际是分散的,回忆实际上是个重建和生成的过程,和 LLM 非常相似。人的回忆存在虚构,对应的 LLM 存在幻觉,只是 LLM 幻觉现象目前更严重。 |
21
akira 2 天前
现在 ai 的 底层就是这么个逻辑呀,知识图谱,检索增强 就是为了解决垂直领域瞎扯淡 的问题提出来的解决方案。
|
22
clorischan 2 天前
人脑也是差不多, 可以了解一下对经过裂脑手术(胼胝体切开术, 切断左右脑连接)的人相关研究
人脑的语言中枢在左脑, 如果将信息只输入给左脑, 人的回答也会发生类似目前 LLM 的幻觉现象, 一本正经的胡说八道. |
23
coderluan 2 天前
因为这些模型只是大语言模型,语言之外的东西本身就是他能力之外的,没训练到的东西他都会胡说八道。因为计算机语言也是“语言”,所以已经不错了,让人会误会它已经很智能了。但是你问他点更容易的娱乐业问题,比如让他给你推荐点最新的游戏,答案基本是没眼看的。
|
24
marquina 2 天前 via iPhone
大模型只是个工具。任何工具(甚至任何人)都可能在一方面表现不好、在另一方面表现不好(即使这个方面在另一个工具/人看来只是 easy 级别的)。
而使用工具最高效的方式,就是将其应用在它最擅长的方面,而不是质问这个工具为什么做不好它不擅长的方面。 |
25
yqcode 2 天前
大模型不是检索知识再输出,而是预测生成,生成出来的答案准确只是因为有了大量的事实训练样本。
|
26
StevenRCE0 2 天前 1
|
27
635925926 2 天前
没啥问题啊,你让小学生来也回答不出啊。
|
28
635925926 2 天前
惭愧,我竟然不会 op 口中的“这么简单的一个问题”
|
29
zlowly 2 天前
不止是小学生。就算是我们人类自己,即使对很多领域都完全不了解,例如我就对大模型如何生成答案的技术完全不懂,但完全不妨碍我做自己利用其他领域知识或者自己的臆测,做出好像很肯定好像很专业的回答,即使这个回答其实是完全错误的。
|
30
riceball 2 天前 1
提示词没有设计好,因为这个的确算小众知识,如果要激发出来,提示词是关键。
我的测试是,本地 7B 左右的 LLM 基本没戏,激发也没用,已经吃不准了,而 qwen2.5 则没戏,估计是一点都没有学过。 7B 左右只有 gemma9B 经过二次提醒,能搞对顺序。30b 左右的基本能一次搞定。 [PPE(Programable Prompt Engine)]( https://github.com/offline-ai/cli)提示词如下: ```yaml --- parameters: temperature: 0 --- system: |- You are a helpful Unity programming expert in the world. You know the Unity knowledge very well. You are very careful and precise. Think about the user's intention carefully and solve the problem step by step. --- user: |- Please tell me the order in which the following Unity events occur: OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag assistant: "[[AI]]" ``` `ai run unity.ai.yaml`的执行结果(gemma-27b): ``` user: Please tell me the order in which the following Unity events occur: OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag unity: Here's the order of those Unity events, along with a brief explanation of each: 1. **Awake:** This event is called once when the script instance is being loaded, before any Start functions are called. 2. **Start:** This event is called once at the beginning of the game, after all Awake functions have been called. 3. **OnPointerDown:** This event is triggered when the user starts pressing down on a UI element or a GameObject with a Collider. 4. **OnBeginDrag:** This event is triggered when the user starts dragging the UI element or GameObject after pressing down. 5. **OnDrag:** This event is triggered continuously while the user is dragging the UI element or GameObject. 6. **OnPointerUp:** This event is triggered when the user releases the mouse button or touch input. 7. **OnEndDrag:** This event is triggered when the user finishes dragging the UI element or GameObject. **Important Notes:** * These events are typically used with UI elements or GameObjects that have colliders attached. * The order can be slightly modified depending on specific user interactions and the setup of your UI or game. Let me know if you have any other Unity event-related questions! ``` gemma9B 经过二次提醒的提示词: ```yaml --- parameters: temperature: 0 --- system: |- You are a helpful Unity programming expert in the world. You know the Unity knowledge very well. You are very careful and precise. Think about the user's intention carefully and solve the problem step by step. --- user: |- Please tell me the order in which the following Unity events occur: OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag assistant: "[[AI]]" user: |- Hint: Please think about OnPointerUp in Unity carefully. assistant: "[[AI]]" ``` 执行结果: ``` user: Please tell me the order in which the following Unity events occur: OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag unity: Here's the order in which those Unity events occur, along with a brief explanation of each: 1. **Awake:** This method is called once, when the script instance is being loaded. It's used to initialize variables and set up initial conditions. 1. **Start:** This method is called once, after Awake, and before the first frame update. It's often used to perform setup tasks that require access to the GameObject's components or other game objects. 1. **OnPointerDown:** This event is triggered when the user presses a mouse button or touches the screen over your GameObject. 2. **OnBeginDrag:** This event is triggered when the user starts dragging an object. This usually happens after `OnPointerDown` and only if the object is set up to be draggable. 1. **OnDrag:** This event is triggered repeatedly while the user is dragging the object. 2. **OnEndDrag:** This event is triggered when the user releases the mouse button or lifts their finger from the screen, ending the drag operation. 1. **OnPointerUp:** This event is triggered when the user releases the mouse button or lifts their finger from the screen. It occurs after `OnEndDrag` if the drag operation was initiated. **Important Notes:** * The exact order of events can vary slightly depending on the specific Unity version and the context of the events. * `OnPointerDown` and `OnPointerUp` are more general events that can occur for any interaction with the mouse or touch input. `OnBeginDrag`, `OnDrag`, and `OnEndDrag` are specifically related to dragging operations. Let me know if you have any other questions about Unity events or need further clarification! user: Hint: Please think about OnPointerUp in Unity carefully. unity: You're right, I need to be more careful about `OnPointerUp`. While it's generally triggered when the user releases the mouse button or finger, it's not *always* directly after `OnEndDrag`. Here's a more precise order, taking `OnPointerUp` into account: 1. **Awake:** Initialization of script variables. 2. **Start:** Setup tasks after Awake. 3. **OnPointerDown:** Mouse button pressed or touch initiated on the GameObject. 4. **OnBeginDrag:** Drag operation starts if the GameObject is set up for dragging. 5. **OnDrag:** Repeatedly triggered while dragging. 6. **OnPointerUp:** Triggered when the mouse button or finger is released. * **Important:** This can happen *before* `OnEndDrag` if the user releases the button without completing the drag. 7. **OnEndDrag:** Triggered when the drag operation officially ends (usually after `OnPointerUp` if the drag was completed). Let me know if you have any more questions! ``` |
31
drymonfidelia OP @riceball 但是还是需要把 OnPointerUp 挪到最前面,如果我本来不知道正确的顺序,就不知道 AI 很容易在这个地方弄错
|
32
riceball 2 天前
@drymonfidelia OnPointerUp 在最前面就是个错误顺序,放这里也一样,`Start OnPointerUp Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag`。这个提示词思想是让它按事件发生的先后顺序来讲解,因此与你写在里面的顺序无关. 另外如果要让纠正名称错误,最好单独一个提示词,一次只让它做一件事也能提高成功率。
但说实话,我发现它在语法纠错上不是很好,尤其是漏字,可能是没有针对这块精调过。 |
33
catamaran 2 天前
我觉得对于 ai 来讲,判断是否知道就是个很难的问题,我们交流用的语言本身就有点玄学。一道数学题,你可以明确回答不知道,一道语文题,比如选择最合适的词语,总结中心思想,没办法说会不会,也保证不了回答的正确性
|
34
SoyaDokio 2 天前
@yuzo555 #5
个人完全不懂这些 AI 原理的任何背景知识,但从我个人判断,它们应该还是有本质区别的。 因为它不知道的时候它会胡说八道,而不是说“我不知道”。这存在两种可能: ①它知道它不知道 ②它不知道它不知道 个人认为运营 AI 的资本不至于采取中国式商业习惯——不懂装懂,至少不至于全部的资本都这样,如果判断成立,那就是说②是事实,即它并不知道它不知道。 而知道自己不知道,靠的是思考和认知;但如果不理解问题本身而只是鹦鹉学舌的话,当然不知道自己是否知道。 |
35
yolee599 1 天前 via Android
总有人以为现有的 AI 具有思考能力,甚至以为有计算能力。现有的 AI 其实就是文本生成,一个输入,一个输出,你可以输入任何东西,输出也有可能是任何东西。就像 AES 解密,密钥不对它也会输出结果
|