查看: 6541| 回复: 17
收起左侧

调用chatgpt的编程实在是太反直觉了

   
GavinTao1219 来自APP | 显示全部楼层
本楼:   👍  14
100%
0%
0   👎
全局:   4021
83%
17%
830

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
用了chatgpt有好几年了,从它刚刚爆火那会就开始用,发现它作为一个搜索引擎的替代品,真的是碾压级别的存在。然而,直到我最近开始研究如何在代码里调用openai的gpt模型,去做一些相对复杂的工作,就发现这种基于prompt的编程方式实在是太反直觉了。

首先一点就是它完全无法处理过于复杂、精确的逻辑,即便你已经用尽全力用人类语言精确描述给它了,它真的真的就是听不懂,无法100%按照你的指令执行。我的经验就是,即便你详细描述了你需要输出什么样的数据结构,它也是不会听的。既然如此,我的大部分逻辑还是代码写的,那gpt就失去了它本身处理大段人类语言的意义,反正我也要手动把它们转换成代码再一句一句喂给它。然后,就是不确定性,相同的输入,输出永远不会完全相同。再有,是这该死的token size limit,根本没办法丢给它一个超大文本,而它本身又缺少合适的chunking/pagination的机制,导致你还需要考虑如何分割你的输入,同时让它每个chunk都能联系到context,然后输出该如何拼接起来。

代码里调用openai的gpt模型,给人的感觉就是,一个纯机械的东西,里面却靠一个血肉构成的心脏在驱动,很膈应。

评分

参与人数 1大米 +1 收起 理由
5919393 + 1 赞一个

查看全部评分


上一篇:spring security在gateway中怎么用?
下一篇:学法语 求交流
加油跳跳 2024-10-12 01:07:27 | 显示全部楼层
🙃 3
本楼:   👍  20
100%
0%
0   👎
全局:   150
89%
11%
18
你跟下属沟通,让他们实现个功能,最后也经常发生类似的事情。。。。
回复

使用道具 举报

Pizi-G 2024-10-12 00:26:44 | 显示全部楼层
本楼:   👍  15
94%
6%
1   👎
全局:   11789
98%
2%
265
因为 LLM 就不是为了让你做 deterministic task 而设计的啊. 本来就是为了 originality, 因为以往的大多数 algo 不能做到 originality. 如果你需要特定的指令输出一定的结果, 比如 sumAll, 那压根就不应该用 LLM.

这就像飞机设计出来了, 你非要在高速公路上开, 然后吐槽飞机在地上跑太费劲了. 因为飞机设计就是为了飞, 只是凑巧能做在地上跑两下的动作. 但压根不是为了在地上跑而设计和优化的.

你说的使用方式听起来就是在最基本的使用, 就是喂 prompt, 拿个结果. 想做复杂更有用的 LLM application, 肯定要有整个架构来支撑, 只是这么 raw 的用核心技术不够. 比如至少要 RAG 吧, 具体 rag 怎么做 chunking 和 ingestion, 之后的retrieval中如何做 citation 以及避免 context hallucination, 再稍微复杂点如何做 LLM memory, 是 prompt memory 还是模型自带 memory. 对于新context 的引入是要靠 retrieval + context 还是 fine tune model. 以及为了不同的内容领域, 是应该 train new model 还是就用 general gpt.

用普通的software 类比就是, 比如 Google search 的核心确实是 page rank algo. 但是你就拿着那个 paper 的implementation也做不出来 Google. 你还需要有整套的 indexing, data infra, spam control, user facing feature 等等.
回复

使用道具 举报

agilecat 2024-10-12 01:27:19 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   6843
94%
6%
438
加油跳跳 发表于 2024-10-11 13:07
你跟下属沟通,让他们实现个功能,最后也经常发生类似的事情。。。。

哈哈哈哈哈笑不活了
回复

使用道具 举报

 楼主| GavinTao1219 2024-10-12 01:48:21 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   4021
83%
17%
830
Pizi-G 发表于 2024-10-11 09:26:44
因为 LLM 就不是为了让你做 deterministic task 而设计的啊. 本来就是为了 originality, 因为以往的大多数 algo 不能做到
好专业好复杂啊,我不是专业搞机器学习这方面的,gpt模型的底层的这些东西我是真不懂。我就是单纯想做一个应用,把它当成一个api去调用,但是它跟传统的api的逻辑完全不一样。

然后我真没懂你说的那个飞机和汽车的比喻。我没觉得我想做的东西是把飞机当汽车用。按我一个外行人(用户,非底层模型开发者)粗浅的理解,LLM就是处理文本的啊。那比方说,我的需求是翻译一个SRT文件,这就应该是它的职责范围啊。我把SRT文件喂给它,希望翻译出来的还是个SRT文件,同时不要每句话单独翻译,而是应该把它看作一个整体,结合context翻译,同时又要满足SRT每个时间戳能逐句对应。这个需求,我就只能用人类语言写prompt描述给它,然后它做不到。由于我完全是一个用户的角度,openai的gpt模型内部对于我来说就是一个黑盒子。我没有办法找到一个更programmatic的方式给它描述我的需求。然后我手动写代码,把SRT文件拆成一句话一句话喂给它,它又没办法维持一个context。按编程的思维来看,就应该是它提供一个Context object,我调用的时候它能够把这个给我,我存起来,下一次调用再带上这个Context object,再更新它。我不在乎这个Context object是怎么实现的,我只需要用就好了。然而,chatgpt对于我这种需求,给出的解决方案居然是,每次把上一句翻译写到prompt里面,这样gpt能够联系到上一句,靠这种模糊的方式实现这个保留Context的目的。等于说,跟gpt沟通是没有一个protocol的,只有prompt。这真的太不舒服了。然后我提到的chunking也是类似,chatgpt给我的建议居然是手动chunk之后(假设每个chunk是一段要翻译的文本),每个chunk跟下一个chunk留一部分overlap,这样就能保留context。等于说还是基于prompt的。我理想的api应该是,你有处理的token limit限制,那是你内部的事情,你的api应该把这种奇怪的东西在背后处理好,你自己去把用户的大段文本分成chunk,然后最后再拼接回去整体给到用户。
回复

使用道具 举报

本楼:   👍  0
0%
0%
0   👎
全局:   59
100%
0%
0
不可否认的是现在LLM确实是黑盒子,很多research在研究explainable AI。
但在现有的技术下,prompting也是值得好好思考的。可以试试chain-of- thought的逻辑进行prompt,比方说你看到一个相关的解题思路,feed给GPT,然后再解释自己的这个问题如果按那个思路是否可行。这种给的答案往往更有逻辑性。

另外关于每次出现不同结果。LLM本质还是统计模型,是conditional probability。它根据你的prompt和已经出现的历史对话,randomly sampling next token by probability,所以总是会不太一样。
回复

使用道具 举报

watay147 2024-10-12 06:44:48 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   245
99%
1%
3
意思工作又可以稳几年了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

Advertisement
>
快速回复 返回顶部 返回列表