Halten Sie Gespräche mit dem OpenAI API PHP SDK am Laufen
P粉426906369
P粉426906369 2023-11-01 09:04:15
0
1
823

Ich versuche, die Completion()-Methode des OpenAI PHP SDK zu verwenden, um eine Konversation aufrechtzuerhalten.

  • Tipp #1: „Wie geht es dir?“
  • Eingabeaufforderung Nr. 2: „Was habe ich dich schon einmal gefragt?“

Aber die KI scheint die Frage, die ich zuvor gestellt habe, vergessen zu haben. Die zweite Eingabeaufforderung wird zufällig beantwortet.

Der Code, den ich für diese beiden Anrufe verwendet habe, lautet wie folgt:

$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?',
        ]);

Was habe ich verpasst? Wie kann ich die Sitzung zwischen diesen beiden Anrufen aktiv halten, damit sich die KI daran erinnert, was ich zuvor gefragt habe?

P粉426906369
P粉426906369

Antworte allen(1)
P粉316890884

第二个答案,因为第一个答案没有回答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.
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage