V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
happyn
V2EX  ›  OpenAI

求教如何在 chatgpt 的交互中精确回退到某一对话

  •  1
     
  •   happyn · 2023-11-13 08:46:53 +08:00 · 1753 次点击
    这是一个创建于 379 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有两个场景:

    1. 我跟 chatgpt 一顿交流后,它输出了一个不错的代码模板,我想以后的各种修改尝试都根据这个模板来;于是我告诉 chatgpt ,"刚才你生成的代码为 Version1.0 ,之后我的修改都基于这个版本";然后后面我跟它又一顿交流,很长很长的对话后我又问他,"请根据 Version1.0 的代码 巴拉巴拉",他就傻了。。。怎么破;

    2. 与 DALLE 多模态对话,我跟他一顿交流,输出了一张比较好的图片,我就说"这是图片 A ,我们就在它的基础上做修改",同样的,一顿交流之后,它又忘了图片 A 了,或者总是有细微的遗忘细节现象,如何解决?


    这个需求我统一描述为,对话到某个时间,可以打个 tag ,然后告诉 GPT ,回到某个 tag 对话节点;

    请问有什么技巧可以解决此类问题吗?
    12 条回复    2023-11-14 15:07:33 +08:00
    ihmily
        1
    ihmily  
       2023-11-13 09:05:52 +08:00
    ”然后后面我跟它又一顿交流,很长很长的对话后我又问他,"请根据 Version1.0 的代码 巴拉巴拉",他就傻了。。。怎么破“

    因为它记忆能力有限,经过长段对话后,最初的内容已经超出记忆范围之外了,或者记忆能力已经减弱。解决方法是只能你自己不断把 version1.0 的代码发给他,让他记住上下文。
    anmie
        2
    anmie  
       2023-11-13 09:15:04 +08:00
    新的模型应该好些了,主要就是上下文长度的问题
    TimePPT
        3
    TimePPT  
       2023-11-13 09:16:23 +08:00 via Android
    开头告诉 GPT 请对生成的代码/图片分配一个唯一的 id 号
    scalaer
        4
    scalaer  
       2023-11-13 09:17:27 +08:00
    api 是可以的, 建议用 langchain 去实现

    ```
    messages = [SystemMessage(content=""), ....]

    response = llm(messages)

    ***
    # 循环 chat
    messages.append(response.conten)
    response = llm(messages)
    ```

    messages 里面的内容你可以自己调整, 它是个数组, 把需要的留着
    chitanda
        5
    chitanda  
       2023-11-13 09:49:23 +08:00
    找到你想回溯的那段话,下面有个笔一样的图标,点一下就可以重新修改问题
    renmu
        6
    renmu  
       2023-11-13 09:54:10 +08:00 via Android
    有个 parent_id 可以用,但是网页端我倒不清楚怎么做
    itskingname
        7
    itskingname  
       2023-11-13 10:02:48 +08:00
    DALL.E 这个我有办法。你点击左下角用户名-Custom Instructions 。设定开头的 system:

    ```
    在生成图片时,请按顺序为每张图片添加编号,例如:

    <图片>--001
    <图片>--002
    ```

    然后当你想要精确基于某次结果进一步修改时,就让他基于 00N 图片进行修改
    renmu
        8
    renmu  
       2023-11-13 10:04:45 +08:00 via Android
    @renmu 网页端点击提问右侧的一个编辑按钮
    yinmin
        9
    yinmin  
       2023-11-13 10:13:07 +08:00 via Android
    代码 version 的一个变通解决方案是找到 gpt 给出代码的下一条提问,点击编辑按钮,重新递交问题,gpt 会产生一个问答分支。

    dalle 画图后,你问他要这个图片的 seed id ,之后基于这 seed id 画新图。
    happyn
        10
    happyn  
    OP
       2023-11-13 10:22:33 +08:00
    我是 chatgpt4 付费用户;刚刚按照大家的方法尝试了;

    似乎即使指定让 DALLE 生成图片 ID ;它答应的时候好好的,但是让它调用的时候又发傻了:

    ```
    你好,DALLE ,请把我跟你对话生成的所有图片编号,这样我们交流的时候,我只要说出图片编号,就能精准的指示内容生成

    GPT
    DALL·E
    你好!很高兴帮助你。每当我为你创建一幅图片时,系统会自动生成一个独特的编号,称为“gen_id”。当你想参考之前生成的图片时,只需告诉我那张图片的“gen_id”,我就能准确地知道你指的是哪一张图片。如果你有任何图片生成的需求,随时告诉我!
    ..........................

    GPT
    DALL·E
    很抱歉,但是我无法为你提供已经存在的图片的"gen_id"。"gen_id"仅适用于通过这个系统生成的图片。当我生成一张新图片时,系统会自动为其分配一个"gen_id",那时我才能为你提供。如果你需要创建一张新的图片,请告诉我你的要求,我会帮你生成并提供一个新的"gen_id"
    ```

    然后似乎-Custom Instructions 也是一样的;

    另外我并没有在网页界面的提问右侧发现编辑按钮;

    @yinmin 这个问答分支我是知道的;但是不够好;比如我想说,基于 Version1 的代码模板,然后加入 Version2 的 xx 功能,合并为新的代码。。这就不行了
    TimePPT
        11
    TimePPT  
       2023-11-13 11:59:56 +08:00
    会话开始时跟它约定好。
    ```
    你将扮演一名图片生成机器人。当我给出要求时,你需要:
    1. 按照要求生成一组图片。
    2. 生成的每张图片需将结果的唯一识别码显示出来。
    3. 当我指定某个已生成内容的 ID 时,你将在 ID 对应的结果上进行修改。
    ```
    lookStupiToForce
        12
    lookStupiToForce  
       2023-11-14 15:07:33 +08:00
    这就是 GPTs 的用处了,你把模板搞成文件,每次更新一下就行(。
    不像手动或者什么其他插件管理 prompts 那样那么麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:31 · PVG 09:31 · LAX 17:31 · JFK 20:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.