首页  >  问答  >  正文

使用 OpenAI API PHP SDK 保持对话流畅

我正在尝试使用 OpenAI PHP SDK 的completion() 方法来保持对话。

但是人工智能似乎忘记了我之前问过的问题。它会随机回答第二个提示。

我用于这两个调用的代码如下:

$call1 = $open_ai->completion([
            'model' => 'text-davinci-003', 
            'prompt' => 'How Are You?',

        ]);


        $call2 = $open_ai->completion([
            'model' => 'text-davinci-003', 
            'prompt' => 'What i asked you before?',
        ]);

我错过了什么?我怎样才能在这两个调用之间保持会话处于活动状态,以便让人工智能记住我之前问过的内容?

P粉426906369P粉426906369374 天前781

全部回复(1)我来回复

  • P粉316890884

    P粉3168908842023-11-02 00:08:31

    第二个答案,因为第一个答案没有回答OP的问题。


    基于此 OpenAI Playground 示例,只能通过将两个命令发送到 API 来“询问”“对话”。

    不要认为在收到回复后有办法让对话继续进行。


    考虑这个例子,我们发送以下文本:

    The following is a conversation with an AI assistant.
    
    Human: Hello
    Human: What is 3 * 3?
    AI:
    Human: What did I just asked?
    AI:
    

    我得到的回复是:

    You asked me what 3 * 3 is. The answer is 9.
    

    用于此目的的代码:

    completion([
            'model' => $model,
            'prompt' => $question,
            'temperature' => 0.9,
            'max_tokens' => 150,
            'frequency_penalty' => 0,
            'presence_penalty' => 0.6,
            'stop' => ["\nHuman:", "\nAI:"]
        ]);
        try {
            $json = @json_decode($res);
            foreach ($json->choices as $choice) {
                echo $choice->text . PHP_EOL;
            }
        } catch (Exception $e) {
            var_dump($e);
            return NULL;
        }
    }
    
    $text = <<
    

    注意 stop 数组,该数组引用自 文档

    这似乎让人工智能知道在哪里“读”和在哪里“写”

    如果您从请求中删除该参数,它将返回而不返回答案:

    You asked what 3 times 3 is.
    

    回复
    0
  • 取消回复